diff --git a/qtquick/qml/main.qml b/qtquick/qml/main.qml index e58f26a..a332c07 100644 --- a/qtquick/qml/main.qml +++ b/qtquick/qml/main.qml @@ -91,7 +91,9 @@ ApplicationWindow { color: "white" } Text { - text: "%1\n%2".arg(playbackManager.item.name ? playbackManager.item.name : "Nothing").arg(playbackManager.streamUrl) + text: "%1\n%2" + .arg(playbackManager.item.name ? playbackManager.item.name : "Nothing") + .arg(playbackManager.error === MediaPlayer.NoError ? playbackManager.streamUrl : playbackManager.errorString) color: "white" } } diff --git a/sailfish/qml/components/PlaybackBar.qml b/sailfish/qml/components/PlaybackBar.qml index 05b7847..b15734d 100644 --- a/sailfish/qml/components/PlaybackBar.qml +++ b/sailfish/qml/components/PlaybackBar.qml @@ -325,10 +325,10 @@ PanelBackground { } PropertyChanges { - target: previousButton; opacity: 1; enabled: true; + target: previousButton; opacity: 1; enabled: playbackManager.hasPrevious; } PropertyChanges { - target: nextButton; opacity: 1; enabled: true; + target: nextButton; opacity: 1; enabled: playbackManager.hasNext; } PropertyChanges { target: playModeButton; opacity: 1; enabled: true; @@ -423,16 +423,24 @@ PanelBackground { allowedOrientations: appWindow.allowedOrientations SilicaFlickable { anchors.fill: parent - /*PullDownMenu { - MenuItem { + PullDownMenu { + /*MenuItem { //: Pulley menu item to view detailed media information of a song text: qsTr("Info") } MenuItem { //: Pulley menu item: add music to a playlist text: qsTr("Add to playlist") + }*/ + MenuItem { + //: Pulley menu item: stops playback of music + text: qsTr("Stop") + onClicked: { + playbackManager.stop() + pageStack.pop() + } } - }*/ + } Loader { Component.onCompleted: setSource(Qt.resolvedUrl("PlaybackBar.qml"), {"isFullPage": true, "manager": manager, "y": 0}) diff --git a/sailfish/qml/harbour-sailfin.qml b/sailfish/qml/harbour-sailfin.qml index 9ef119d..779cbee 100644 --- a/sailfish/qml/harbour-sailfin.qml +++ b/sailfish/qml/harbour-sailfin.qml @@ -28,7 +28,7 @@ import Nemo.KeepAlive 1.2 import "components" import "pages" -import "." as D +import "." ApplicationWindow { id: appWindow @@ -50,7 +50,7 @@ ApplicationWindow { ApiClient { id: _apiClient objectName: "Test" - supportedCommands: [GeneralCommandType.Play, GeneralCommandType.DisplayContent, GeneralCommandType.DisplayMessage] + supportedCommands: [GeneralCommandType.Play, GeneralCommandType.DisplayMessage] } PlatformMediaControl { @@ -80,7 +80,8 @@ ApplicationWindow { //cover: CoverBackground {CoverPlaceholder { icon.source: "icon.png"; text: "Sailfin"}} cover: { // Disabled due to buggy Loader behaviour - if ([MediaPlayer.NoMedia, MediaPlayer.InvalidMedia, MediaPlayer.UnknownStatus].indexOf(_playbackManager.mediaStatus) >= 0) { + if ([MediaPlayer.NoMedia, MediaPlayer.InvalidMedia, MediaPlayer.UnknownStatus].indexOf(_playbackManager.mediaStatus) >= 0 + || _playbackManager.playbackState === MediaPlayer.StoppedState) { return Qt.resolvedUrl("cover/CollectionPage.qml") } else { return Qt.resolvedUrl("cover/NowPlayingCover.qml") @@ -155,6 +156,14 @@ ApplicationWindow { property bool showDebugInfo: false } + function navigateToItem(jellyfinId, mediaType, type, isFolder) { + if (mediaType === "Audio") { + playbackManager.playItemId(jellyfinId) + } else { + pageStack.push(Utils.getPageUrl(mediaType, type, isFolder), {"itemId": jellyfinId}); + } + } + //FIXME: proper error handling Connections { target: apiClient diff --git a/sailfish/qml/pages/MainPage.qml b/sailfish/qml/pages/MainPage.qml index 5139b7e..9255f9c 100644 --- a/sailfish/qml/pages/MainPage.qml +++ b/sailfish/qml/pages/MainPage.qml @@ -95,7 +95,7 @@ Page { id: userResumeLoader apiClient: appWindow.apiClient limit: 12 - //recursive: true*/ + //recursive: true } } } @@ -127,8 +127,7 @@ Page { MoreSection { text: model.name busy: userItemModel.status !== J.UsersViewsLoader.Ready - - onHeaderClicked: pageStack.push(Qt.resolvedUrl("itemdetails/CollectionPage.qml"), {"itemId": model.jellyfinId}) + onHeaderClicked: appWindow.navigateToItem(model.jellyfinId, model.mediaType, model.type, model.isFolder); Loader { width: parent.width sourceComponent: carrouselView @@ -232,7 +231,7 @@ Page { progress: (typeof model.userDataPlayedProgress !== 0.0) ? model.userDataPlayedPercentage / 100 : 0.0 onClicked: { - pageStack.push(Utils.getPageUrl(model.mediaType, model.type, model.isFolder), {"itemId": model.jellyfinId, "itemData": model.qtObject}) + appWindow.navigateToItem(model.jellyfinId, model.mediaType, model.type, model.isFolder); } } } diff --git a/sailfish/qml/pages/itemdetails/CollectionPage.qml b/sailfish/qml/pages/itemdetails/CollectionPage.qml index 8e31246..8ae0f17 100644 --- a/sailfish/qml/pages/itemdetails/CollectionPage.qml +++ b/sailfish/qml/pages/itemdetails/CollectionPage.qml @@ -58,7 +58,7 @@ BaseDetailPage { text: qsTr("Sort by") onClicked: pageStack.push(sortPageComponent) } - busy: collectionModel.status === J.UserItemsLoader.Loading + busy: collectionModel.status === J.ModelStatus.Loading } delegate: GridItem { RemoteImage { @@ -94,7 +94,7 @@ BaseDetailPage { horizontalAlignment: Text.AlignLeft font.pixelSize: Theme.fontSizeSmall } - onClicked: pageStack.push(Utils.getPageUrl(model.mediaType, model.type, model.isFolder), {"itemId": model.jellyfinId}) + onClicked: appWindow.navigateToItem(model.jellyfinId, model.mediaType, model.type, model.isFolder); } ViewPlaceholder { diff --git a/sailfish/qml/pages/itemdetails/SeasonPage.qml b/sailfish/qml/pages/itemdetails/SeasonPage.qml index b9b7baf..cf1e604 100644 --- a/sailfish/qml/pages/itemdetails/SeasonPage.qml +++ b/sailfish/qml/pages/itemdetails/SeasonPage.qml @@ -144,7 +144,7 @@ BaseDetailPage { wrapMode: Text.WordWrap elide: Text.ElideRight } - onClicked: pageStack.push(Utils.getPageUrl(model.mediaType, model.type), {"itemId": model.jellyfinId}) + onClicked: appWindow.navigateToItem(model.jellyfinId, model.mediaType, model.type, model.isFolder); } VerticalScrollDecorator {} diff --git a/sailfish/qml/pages/itemdetails/SeriesPage.qml b/sailfish/qml/pages/itemdetails/SeriesPage.qml index 0b474b4..b6dc7ec 100644 --- a/sailfish/qml/pages/itemdetails/SeriesPage.qml +++ b/sailfish/qml/pages/itemdetails/SeriesPage.qml @@ -90,7 +90,7 @@ BaseDetailPage { poster: Utils.itemModelImageUrl(apiClient.baseUrl, model.jellyfinId, model.imageTags.Primary, "Primary", {"maxHeight": height}) blurhash: model.imageBlurHashes["Primary"][model.imageTags.Primary] title: model.name - onClicked: pageStack.push(Utils.getPageUrl(model.mediaType, model.type), {"itemId": model.jellyfinId}) + onClicked: appWindow.navigateToItem(model.jellyfinId, model.mediaType, model.type, model.isFolder); } }