mirror of
https://github.com/HenkKalkwater/harbour-sailfin.git
synced 2025-09-05 10:12:46 +00:00
Added track selection and minor UI improvements
This commit is contained in:
parent
1eb6a8fb5d
commit
020c968f9c
18 changed files with 271 additions and 68 deletions
|
@ -111,5 +111,6 @@ void registerModels(const char *URI) {
|
|||
qmlRegisterType<PublicUserModel>(URI, 1, 0, "PublicUserModel");
|
||||
qmlRegisterType<UserViewModel>(URI, 1, 0, "UserViewModel");
|
||||
qmlRegisterType<UserItemModel>(URI, 1, 0, "UserItemModel");
|
||||
qmlRegisterType<UserItemLatestModel>(URI, 1, 0, "UserItemLatestModel");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -191,6 +191,12 @@ public:
|
|||
explicit UserItemModel (QObject *parent = nullptr)
|
||||
: ApiModel ("/Users/:user/Items", "Items", parent) {}
|
||||
};
|
||||
class UserItemLatestModel : public ApiModel {
|
||||
public:
|
||||
explicit UserItemLatestModel (QObject *parent = nullptr)
|
||||
: ApiModel ("/Users/:user/Items/Latest", "", parent) {}
|
||||
};
|
||||
|
||||
|
||||
void registerModels(const char *URI);
|
||||
|
||||
|
|
|
@ -3,8 +3,7 @@
|
|||
namespace Jellyfin {
|
||||
|
||||
MediaSource::MediaSource(QObject *parent)
|
||||
: QObject(parent),
|
||||
m_mediaPlayer(new QMediaPlayer(this)){
|
||||
: QObject(parent) {
|
||||
|
||||
}
|
||||
|
||||
|
@ -15,8 +14,8 @@ void MediaSource::fetchStreamUrl() {
|
|||
params.addQueryItem("IsPlayback", "true");
|
||||
params.addQueryItem("AutoOpenLiveStream", this->m_autoOpen ? "true" : "false");
|
||||
params.addQueryItem("MediaSourceId", this->m_itemId);
|
||||
params.addQueryItem("SubtitleStreamIndex", "-1");
|
||||
params.addQueryItem("AudioStreamIndex", "0");
|
||||
params.addQueryItem("SubtitleStreamIndex", QString::number(m_subtitleIndex));
|
||||
params.addQueryItem("AudioStreamIndex", QString::number(m_audioIndex));
|
||||
|
||||
QJsonObject root;
|
||||
root["DeviceProfile"] = m_apiClient->playbackDeviceProfile();
|
||||
|
@ -36,11 +35,6 @@ void MediaSource::fetchStreamUrl() {
|
|||
|
||||
emit this->streamUrlChanged(this->m_streamUrl);
|
||||
qDebug() << "Found stream url: " << this->m_streamUrl;
|
||||
/*QNetworkRequest req;
|
||||
req.setUrl(this->m_streamUrl);
|
||||
m_apiClient->addTokenHeader(req);
|
||||
m_mediaPlayer->setMedia(QMediaContent(req));
|
||||
if (m_autoPlay) m_mediaPlayer->play();*/
|
||||
}
|
||||
|
||||
rep->deleteLater();
|
||||
|
@ -52,10 +46,7 @@ void MediaSource::setItemId(const QString &newItemId) {
|
|||
qWarning() << "apiClient is not set on this MediaSource instance! Aborting.";
|
||||
return;
|
||||
}
|
||||
if (m_mediaPlayer == nullptr) {
|
||||
qWarning() << "mediaPlayer is not set on this MediaSource instance! Aborting.";
|
||||
return;
|
||||
}
|
||||
|
||||
this->m_itemId = newItemId;
|
||||
// Deinitialize the streamUrl
|
||||
setStreamUrl("");
|
||||
|
@ -70,15 +61,15 @@ void MediaSource::setStreamUrl(const QString &streamUrl) {
|
|||
}
|
||||
|
||||
void MediaSource::play() {
|
||||
this->m_mediaPlayer->play();
|
||||
//todo: playback reporting
|
||||
}
|
||||
|
||||
void MediaSource::pause() {
|
||||
this->m_mediaPlayer->pause();
|
||||
//todo: playback reporting
|
||||
}
|
||||
|
||||
void MediaSource::stop() {
|
||||
this->m_mediaPlayer->stop();
|
||||
//todo: playback reporting
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -22,19 +22,19 @@ public:
|
|||
Q_PROPERTY(QString itemId READ itemId WRITE setItemId NOTIFY itemIdChanged)
|
||||
Q_PROPERTY(QString streamUrl READ streamUrl NOTIFY streamUrlChanged)
|
||||
Q_PROPERTY(bool autoOpen MEMBER m_autoOpen NOTIFY autoOpenChanged)
|
||||
Q_PROPERTY(QMediaPlayer *mediaPlayer READ mediaPlayer)
|
||||
Q_PROPERTY(bool autoPlay MEMBER m_autoPlay)
|
||||
Q_PROPERTY(int audioIndex MEMBER m_audioIndex NOTIFY audioIndexChanged)
|
||||
Q_PROPERTY(int subtitleIndex MEMBER m_subtitleIndex NOTIFY subtitleIndexChanged)
|
||||
|
||||
QString itemId() const { return m_itemId; }
|
||||
void setItemId(const QString &newItemId);
|
||||
|
||||
QString streamUrl() const { return m_streamUrl; }
|
||||
|
||||
QMediaPlayer *mediaPlayer() { return m_mediaPlayer; }
|
||||
signals:
|
||||
void itemIdChanged(const QString &newItemId);
|
||||
void streamUrlChanged(const QString &newStreamUrl);
|
||||
void autoOpenChanged(bool autoOpen);
|
||||
void audioIndexChanged(int audioIndex);
|
||||
void subtitleIndexChanged(int subtitleIndex);
|
||||
|
||||
public slots:
|
||||
void play();
|
||||
|
@ -43,15 +43,16 @@ public slots:
|
|||
|
||||
private:
|
||||
ApiClient *m_apiClient = nullptr;
|
||||
QMediaPlayer *m_mediaPlayer = nullptr;
|
||||
QString m_itemId;
|
||||
QString m_streamUrl;
|
||||
QString m_playSessionId;
|
||||
int m_audioIndex = 0;
|
||||
int m_subtitleIndex = -1;
|
||||
|
||||
/**
|
||||
* @brief Whether to automatically open the livestream of the item;
|
||||
*/
|
||||
bool m_autoOpen = false;
|
||||
bool m_autoPlay = false;
|
||||
|
||||
void fetchStreamUrl();
|
||||
void setStreamUrl(const QString &streamUrl);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue