From 40724dc15bbc62b978cdd0124e766197d4ab797f Mon Sep 17 00:00:00 2001 From: "E.S. Rosenberg a.k.a. Keeper of the Keys" Date: Tue, 2 Jan 2024 14:35:05 +0200 Subject: [PATCH 01/11] Only show episode art when it is defined --- qml/PlayerPage.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qml/PlayerPage.qml b/qml/PlayerPage.qml index 1a4b1f6..f24926b 100644 --- a/qml/PlayerPage.qml +++ b/qml/PlayerPage.qml @@ -124,7 +124,7 @@ Page { id: expander width: parent.width expandedHeight: width - visible: !player.hasVideo + visible: !player.hasVideo && player.episode_art !== '' ArtArea { anchors { horizontalCenter: parent.horizontalCenter From 954957ec6c995f9adae0ab56b79caddade0d1984 Mon Sep 17 00:00:00 2001 From: "E.S. Rosenberg a.k.a. Keeper of the Keys" Date: Tue, 2 Jan 2024 14:35:33 +0200 Subject: [PATCH 02/11] Raise step size for playback speed to 0.25 --- qml/PlayerPage.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qml/PlayerPage.qml b/qml/PlayerPage.qml index f24926b..017f0e1 100644 --- a/qml/PlayerPage.qml +++ b/qml/PlayerPage.qml @@ -378,7 +378,7 @@ Page { valueText: Math.round(value * 100) / 100 minimumValue: 0.5 maximumValue: 3.0 - stepSize: 0.05 + stepSize: 0.25 onDownChanged: { if (!down) { player.playbackRate = sliderValue From 6d421ef766e62ffc209140d549a73d2affdd8834 Mon Sep 17 00:00:00 2001 From: "E.S. Rosenberg a.k.a. Keeper of the Keys" Date: Mon, 18 Mar 2024 11:06:30 +0200 Subject: [PATCH 03/11] Better landscape mode, next step toggle full/large screen for videos. --- qml/PlayerPage.qml | 586 ++++++++++++++++++++++----------------------- 1 file changed, 291 insertions(+), 295 deletions(-) diff --git a/qml/PlayerPage.qml b/qml/PlayerPage.qml index 017f0e1..4850223 100644 --- a/qml/PlayerPage.qml +++ b/qml/PlayerPage.qml @@ -60,382 +60,378 @@ Page { } } - Column { - id: column - - width: playerPage.width - - PageHeader { - title: qsTr("Player") - } - - SectionHeader { - text: qsTr("Now playing") - visible: player.episode !== 0 - } - - VideoOutput { - id: videoOutputPP - //anchors.fill: parent - source: player - visible: player.hasVideo && player.status >= MediaPlayer.Loaded && player.status <= MediaPlayer.EndOfMedia - //flushMode: EmptyFrame //Qt 5.13+ not in SFOS (yet) :( - width: playerPage.isPortrait ? parent.width : parent.width - height: playerPage.isPortrait ? implicitHeight : implicitHeight - //Drag.active: dragArea.drag.active - - MouseArea { - id: dragArea - anchors.fill: parent - - /*onDoubleClicked: { - if(videoOutputPP.state == "videoFullScreen") { - videoOutputPP.state = "videoSmall" - } else { - videoOutputPP.state = "videoFullScreen" - } - }*/ - onClicked: { - if (player.isPlaying) { - player.pause(); - } else { - player.play(); + Flow { + width: parent.width + height: parent.height + + Column { + id: artColumn + width: isPortrait ? parent.width : parent.width * 0.5 + + VideoOutput { + id: videoOutputPP + //anchors.fill: parent + source: player + visible: player.hasVideo && player.status >= MediaPlayer.Loaded && player.status <= MediaPlayer.EndOfMedia + //flushMode: EmptyFrame //Qt 5.13+ not in SFOS (yet) :( + width: parent.width + height: implicitHeight < Screen.height ? implicitHeight : Screen.height + //Drag.active: dragArea.drag.active + + MouseArea { + id: dragArea + anchors.fill: parent + + /*onDoubleClicked: { + if(videoOutputPP.state == "videoFullScreen") { + videoOutputPP.state = "videoSmall" + } else { + videoOutputPP.state = "videoFullScreen" + } + }*/ + onClicked: { + if (player.isPlaying) { + player.pause(); + } else { + player.play(); + } } + //drag.target: parent } - //drag.target: parent - } - /*State { - name: "videoFullScreen" - ParentChange { - target: videoOutputPP - parent: column + /*State { + name: "videoFullScreen" + ParentChange { + target: videoOutputPP + parent: column + } } + State { + name: "videoSmall" + ParentChange { + target: videoOutputPP + parent: playQueueRepeater + } + }*/ } - State { - name: "videoSmall" - ParentChange { - target: videoOutputPP - parent: playQueueRepeater - } - }*/ - } - CustomExpander { - id: expander - width: parent.width - expandedHeight: width - visible: !player.hasVideo && player.episode_art !== '' - ArtArea { - anchors { - horizontalCenter: parent.horizontalCenter - margins: Theme.paddingMedium - } - id: coverImage - property string cover_art: '' - property string episode_art: player.episode_art - property string title_char: player.podcast_title[0] + Image { + id: art width: parent.width - height: width - } - - /*IconButton { - text: "Fullscreen" - - anchors { - left: videoOutput.left - bottom: videoOutput.bottom - } + height: implicitHeight < Screen.height ? implicitHeight : Screen.height + fillMode: Image.PreserveAspectFit - icon: 'image://theme/icon-m-scale' - onClicked: console.log('[not implemented] switch to fullscreen') - }*/ + visible: !player.hasVideo && (player.episode_art !== '' || player.podcast_cover !== '') + source: player.episode_art !== '' ? player.episode_art : player.podcast_cover + } } + Column { + width: isPortrait ? parent.width : parent.width * 0.5 - Item { - height: Theme.paddingSmall - width: parent.width - } - - Row { - id: playing_info_block - width: parent.width - - Image { - id: podcast_cover - height: playerPage.isPortrait ? parent.width * 0.2 : parent.width * 0.1 - width: this.height - - source: player.cover_art + SectionHeader { + text: qsTr("Now playing") + visible: player.episode !== 0 } + Item { - width: Theme.paddingSmall - height: parent.height + height: Theme.paddingSmall + width: parent.width } - Column { - Label { - id: podcast_title - anchors { - //left: podcast_cover.right - //right: parent.right - //top: parent.top - margins: Theme.paddingLarge - } + Row { + id: playing_info_block + width: parent.width - truncationMode: TruncationMode.Fade - horizontalAlignment: Text.AlignHLeft - text: player.podcast_title - color: Theme.secondaryHighlightColor - font.pixelSize: Theme.fontSizeSmall + Image { + id: podcast_cover + height: playerPage.isPortrait ? parent.width * 0.2 : parent.width * 0.1 + width: this.height + visible: (player.cover_art !== '' && player.episode_art !== '') + + source: player.cover_art } Item { - //id: padding_podcast_title - width: parent.width - //anchors.top: podcast_title.bottom - height: Theme.paddingSmall + width: Theme.paddingSmall + height: parent.height } - Label { - id: episode_title - anchors { - //left: podcast_cover.right - //right: parent.right - //top: podcast_title.bottom - margins: Theme.paddingLarge + Column { + Label { + id: podcast_title + anchors { + //left: podcast_cover.right + //right: parent.right + //top: parent.top + margins: Theme.paddingLarge + } + + truncationMode: TruncationMode.Fade + horizontalAlignment: Text.AlignHLeft + text: player.podcast_title + color: Theme.secondaryHighlightColor + font.pixelSize: Theme.fontSizeSmall } - truncationMode: TruncationMode.Fade - horizontalAlignment: Text.AlignHLeft - text: player.episode_title - color: Theme.highlightColor - wrapMode: Text.Wrap - font.pixelSize: Theme.fontSizeSmall - } + Item { + //id: padding_podcast_title + width: parent.width + //anchors.top: podcast_title.bottom + height: Theme.paddingSmall + } - Item { - //id: padding_episode_title - width: parent.width - //anchors.top: episode_title.bottom - height: Theme.paddingSmall - } - } - } + Label { + id: episode_title + anchors { + //left: podcast_cover.right + //right: parent.right + //top: podcast_title.bottom + margins: Theme.paddingLarge + } + + truncationMode: TruncationMode.Fade + horizontalAlignment: Text.AlignHLeft + text: player.episode_title + color: Theme.highlightColor + wrapMode: Text.Wrap + font.pixelSize: Theme.fontSizeSmall + } - Label { - anchors { - //top: episode_title.bottom - horizontalCenter: parent.horizontalCenter + Item { + //id: padding_episode_title + width: parent.width + //anchors.top: episode_title.bottom + height: Theme.paddingSmall + } + } } - font.pixelSize: Theme.fontSizeLarge - text: Util.formatPosition(positionSlider.value/1000, player.duration/1000) - color: positionSlider.highlighted ? Theme.highlightColor : Theme.primaryColor - } + Label { + anchors { + //top: episode_title.bottom + horizontalCenter: parent.horizontalCenter + } - Label { - anchors { - left: parent.left - right: parent.right - margins: Theme.paddingLarge + font.pixelSize: Theme.fontSizeLarge + text: Util.formatPosition(positionSlider.value/1000, player.duration/1000) + color: positionSlider.highlighted ? Theme.highlightColor : Theme.primaryColor } - visible: player.sleepTimerRunning + Label { + anchors { + left: parent.left + right: parent.right + margins: Theme.paddingLarge + } - truncationMode: TruncationMode.Fade - horizontalAlignment: Text.AlignHCenter - text: qsTr("Sleep timer: ") + Util.formatDuration(player.sleepTimerRemaining) - color: Theme.rgba(Theme.highlightColor, 0.7) - font.pixelSize: Theme.fontSizeExtraSmall - } + visible: player.sleepTimerRunning - Connections { - target: player - onPositionChanged: { - if (!positionSlider.down) { - positionSlider.value = player.position; - } + truncationMode: TruncationMode.Fade + horizontalAlignment: Text.AlignHCenter + text: qsTr("Sleep timer: ") + Util.formatDuration(player.sleepTimerRemaining) + color: Theme.rgba(Theme.highlightColor, 0.7) + font.pixelSize: Theme.fontSizeExtraSmall } - } - Slider { - id: positionSlider - width: parent.width - - value: player.position - minimumValue: 0 - maximumValue: player.duration - handleVisible: false - onDownChanged: { - if (!down) { - player.seekAndSync(sliderValue) + Connections { + target: player + onPositionChanged: { + if (!positionSlider.down) { + positionSlider.value = player.position; + } } } - } - Row { - anchors { - horizontalCenter: parent.horizontalCenter - margins: Theme.paddingMedium + Slider { + id: positionSlider + width: parent.width + + value: player.position + minimumValue: 0 + maximumValue: player.duration + handleVisible: false + onDownChanged: { + if (!down) { + player.seekAndSync(sliderValue) + } + } } - height: Theme.itemSizeLarge - spacing: Theme.paddingMedium + Row { + anchors { + horizontalCenter: parent.horizontalCenter + margins: Theme.paddingMedium + } + + height: Theme.itemSizeLarge + spacing: Theme.paddingMedium - GpodderIconMenuItem { - text: qsTr("- 1 min") - icon.source: 'image://theme/icon-m-previous' + GpodderIconMenuItem { + text: qsTr("- 1 min") + icon.source: 'image://theme/icon-m-previous' - GPodderAutoFire { - running: parent.down - onFired: player.seekAndSync(player.position - 1000 * 60) + GPodderAutoFire { + running: parent.down + onFired: player.seekAndSync(player.position - 1000 * 60) + } } - } - GpodderIconMenuItem { - text: qsTr("- 10 sec") - icon.source: 'image://theme/icon-m-previous' - GPodderAutoFire { - running: parent.down - onFired: player.seekAndSync(player.position - 1000 * 10) + GpodderIconMenuItem { + text: qsTr("- 10 sec") + icon.source: 'image://theme/icon-m-previous' + GPodderAutoFire { + running: parent.down + onFired: player.seekAndSync(player.position - 1000 * 10) + } } - } - GpodderIconMenuItem { - text: player.isPlaying ? qsTr("Pause") : qsTr("Play") - onClicked: { - if (player.isPlaying) { - player.pause(); - } else { - player.play(); + GpodderIconMenuItem { + text: player.isPlaying ? qsTr("Pause") : qsTr("Play") + onClicked: { + if (player.isPlaying) { + player.pause(); + } else { + player.play(); + } } + icon.source: player.isPlaying ? 'image://theme/icon-m-pause' : 'image://theme/icon-m-play' } - icon.source: player.isPlaying ? 'image://theme/icon-m-pause' : 'image://theme/icon-m-play' - } - GpodderIconMenuItem { - text: qsTr("+ 10 sec") - icon.source: 'image://theme/icon-m-next' - GPodderAutoFire { - running: parent.down - onFired: player.seekAndSync(player.position + 1000 * 10) + GpodderIconMenuItem { + text: qsTr("+ 10 sec") + icon.source: 'image://theme/icon-m-next' + GPodderAutoFire { + running: parent.down + onFired: player.seekAndSync(player.position + 1000 * 10) + } } - } - GpodderIconMenuItem { - text: qsTr("+ 1 min") - icon.source: 'image://theme/icon-m-next' - GPodderAutoFire { - running: parent.down - onFired: player.seekAndSync(player.position + 1000 * 60) + GpodderIconMenuItem { + text: qsTr("+ 1 min") + icon.source: 'image://theme/icon-m-next' + GPodderAutoFire { + running: parent.down + onFired: player.seekAndSync(player.position + 1000 * 60) + } } } - } - ListItem { - anchors.horizontalCenter: parent.horizontalCenter - Label { - id: playbackspeedTitle - text: qsTr("Playback speed: ") + ListItem { + anchors.horizontalCenter: parent.horizontalCenter + Label { + id: playbackspeedTitle + text: qsTr("Playback speed: ") - font.pixelSize: Theme.fontSizeMedium - color: Theme.highlightColor + font.pixelSize: Theme.fontSizeMedium + color: Theme.highlightColor - anchors { - right: parent.horizontalCenter - margins: Theme.paddingMedium - verticalCenter: parent.verticalCenter - } + anchors { + right: parent.horizontalCenter + margins: Theme.paddingMedium + verticalCenter: parent.verticalCenter + } - wrapMode: Text.WordWrap - } - Label { - id: sectionField - text: player.playbackRate + wrapMode: Text.WordWrap + } + Label { + id: sectionField + text: player.playbackRate - font.pixelSize: Theme.fontSizeMedium - color: Theme.primaryColor + font.pixelSize: Theme.fontSizeMedium + color: Theme.primaryColor - anchors { - left: parent.horizontalCenter - right: parent.right - verticalCenter: parent.verticalCenter + anchors { + left: parent.horizontalCenter + right: parent.right + verticalCenter: parent.verticalCenter + } } - } - - onClicked: openMenu() - menu: ContextMenu { - container: sectionField - MenuItem { - Slider { - id: speedSlider - width: parent.width + onClicked: openMenu() - value: player.playbackRate - valueText: Math.round(value * 100) / 100 - minimumValue: 0.5 - maximumValue: 3.0 - stepSize: 0.25 - onDownChanged: { - if (!down) { - player.playbackRate = sliderValue + menu: ContextMenu { + container: sectionField + MenuItem { + Slider { + id: speedSlider + width: parent.width + + value: player.playbackRate + valueText: Math.round(value * 100) / 100 + minimumValue: 0.5 + maximumValue: 3.0 + stepSize: 0.25 + onDownChanged: { + if (!down) { + player.playbackRate = sliderValue + } } } } } } - } - SectionHeader { - text: qsTr("Queue") - visible: playQueueRepeater.count > 0 - } + SectionHeader { + text: qsTr("Queue") + visible: playQueueRepeater.count > 0 + } - Repeater { - id: playQueueRepeater - model: player.queue - property Item contextMenu + Repeater { + id: playQueueRepeater + model: player.queue + property Item contextMenu - property var queueConnections: Connections { - target: player + property var queueConnections: Connections { + target: player - onQueueUpdated: { - playQueueRepeater.model = player.queue; + onQueueUpdated: { + playQueueRepeater.model = player.queue; + } } - } - ListItem { - id: playQueueListItem + ListItem { + id: playQueueListItem - width: parent.width + width: parent.width - menu: ContextMenu { - MenuItem { - text: qsTr("Remove from queue") - onClicked: player.removeQueueIndex(index); + menu: ContextMenu { + MenuItem { + text: qsTr("Remove from queue") + onClicked: player.removeQueueIndex(index); + } } - } - Label { - anchors { - left: parent.left - right: parent.right - margins: Theme.paddingMedium - verticalCenter: parent.verticalCenter - } + Label { + anchors { + left: parent.left + right: parent.right + margins: Theme.paddingMedium + verticalCenter: parent.verticalCenter + } - text: modelData.title - truncationMode: TruncationMode.Fade - } + text: modelData.title + truncationMode: TruncationMode.Fade + } - onClicked: { - player.jumpToQueueIndex(index); + onClicked: { + player.jumpToQueueIndex(index); + } } } + } } + + /*Column { + id: column + + width: playerPage.width + + PageHeader { + title: qsTr("Player") + } + + }*/ } } From aec425b145dad76d459234d7c542f9b0bd1ba680 Mon Sep 17 00:00:00 2001 From: "E.S. Rosenberg a.k.a. Keeper of the Keys" Date: Mon, 18 Mar 2024 23:51:22 +0200 Subject: [PATCH 04/11] Remove height property from VideoOutput, Image and Flow, fix cover_art reference and remove lots of commented out stufff that won't be re-added. --- qml/PlayerPage.qml | 32 ++------------------------------ 1 file changed, 2 insertions(+), 30 deletions(-) diff --git a/qml/PlayerPage.qml b/qml/PlayerPage.qml index 4850223..0e8a634 100644 --- a/qml/PlayerPage.qml +++ b/qml/PlayerPage.qml @@ -61,8 +61,8 @@ Page { } Flow { + id: pageFlow width: parent.width - height: parent.height Column { id: artColumn @@ -70,13 +70,9 @@ Page { VideoOutput { id: videoOutputPP - //anchors.fill: parent source: player visible: player.hasVideo && player.status >= MediaPlayer.Loaded && player.status <= MediaPlayer.EndOfMedia - //flushMode: EmptyFrame //Qt 5.13+ not in SFOS (yet) :( width: parent.width - height: implicitHeight < Screen.height ? implicitHeight : Screen.height - //Drag.active: dragArea.drag.active MouseArea { id: dragArea @@ -96,7 +92,6 @@ Page { player.play(); } } - //drag.target: parent } /*State { name: "videoFullScreen" @@ -118,12 +113,11 @@ Page { id: art width: parent.width - height: implicitHeight < Screen.height ? implicitHeight : Screen.height fillMode: Image.PreserveAspectFit visible: !player.hasVideo && (player.episode_art !== '' || player.podcast_cover !== '') - source: player.episode_art !== '' ? player.episode_art : player.podcast_cover + source: player.episode_art !== '' ? player.episode_art : player.cover_art } } Column { @@ -162,9 +156,6 @@ Page { Label { id: podcast_title anchors { - //left: podcast_cover.right - //right: parent.right - //top: parent.top margins: Theme.paddingLarge } @@ -176,18 +167,13 @@ Page { } Item { - //id: padding_podcast_title width: parent.width - //anchors.top: podcast_title.bottom height: Theme.paddingSmall } Label { id: episode_title anchors { - //left: podcast_cover.right - //right: parent.right - //top: podcast_title.bottom margins: Theme.paddingLarge } @@ -200,9 +186,7 @@ Page { } Item { - //id: padding_episode_title width: parent.width - //anchors.top: episode_title.bottom height: Theme.paddingSmall } } @@ -210,7 +194,6 @@ Page { Label { anchors { - //top: episode_title.bottom horizontalCenter: parent.horizontalCenter } @@ -422,16 +405,5 @@ Page { } } - - /*Column { - id: column - - width: playerPage.width - - PageHeader { - title: qsTr("Player") - } - - }*/ } } From 943d8f24db07df2eb4940f600d039b48d738f1ea Mon Sep 17 00:00:00 2001 From: "E.S. Rosenberg a.k.a. Keeper of the Keys" Date: Thu, 21 Mar 2024 23:55:44 +0200 Subject: [PATCH 05/11] Translation files updated by the SDK --- .../harbour-org.gpodder.sailfish-bg.ts | 50 ++++++++----------- .../harbour-org.gpodder.sailfish-de.ts | 50 ++++++++----------- .../harbour-org.gpodder.sailfish-es.ts | 50 ++++++++----------- .../harbour-org.gpodder.sailfish-it.ts | 50 ++++++++----------- .../harbour-org.gpodder.sailfish-pl.ts | 50 ++++++++----------- .../harbour-org.gpodder.sailfish-ru.ts | 50 ++++++++----------- .../harbour-org.gpodder.sailfish-sv.ts | 50 ++++++++----------- .../harbour-org.gpodder.sailfish-zh_CN.ts | 50 ++++++++----------- translations/harbour-org.gpodder.sailfish.ts | 48 +++++++----------- 9 files changed, 179 insertions(+), 269 deletions(-) diff --git a/translations/harbour-org.gpodder.sailfish-bg.ts b/translations/harbour-org.gpodder.sailfish-bg.ts index e57a678..902c4db 100644 --- a/translations/harbour-org.gpodder.sailfish-bg.ts +++ b/translations/harbour-org.gpodder.sailfish-bg.ts @@ -32,12 +32,7 @@ AllEpisodesPage - - Episodes: - Епизоди: - - - + No episodes found Няма намерени епизоди @@ -171,42 +166,42 @@ GPodderEpisodeListModel - + All Всички - + Fresh Нови и неизтеглени - + Downloaded Изтеглени - + Unplayed downloads Непускани епизоди - + Finished downloads Изслушани епизоди - + Hide deleted Без изтритите - + Deleted episodes Изтрити епизоди - + Short downloads (< 10 min) Кратки епизоди (< 10 мин) @@ -295,62 +290,57 @@ - - Player - - - - + Now playing - + Sleep timer: Отброяване до заспиване: - + - 1 min - + - 10 sec - + Pause Паузиране - + Play Пускане - + + 10 sec - + + 1 min - + Playback speed: - + Queue - + Remove from queue diff --git a/translations/harbour-org.gpodder.sailfish-de.ts b/translations/harbour-org.gpodder.sailfish-de.ts index 8a34470..6a6415a 100644 --- a/translations/harbour-org.gpodder.sailfish-de.ts +++ b/translations/harbour-org.gpodder.sailfish-de.ts @@ -32,12 +32,7 @@ AllEpisodesPage - - Episodes: - Episoden: - - - + No episodes found Keine Episoden gefunden @@ -171,42 +166,42 @@ GPodderEpisodeListModel - + All Alle - + Fresh Neu - + Downloaded Heruntergeladen - + Unplayed downloads Heruntergeladen & Nicht abgespielt - + Finished downloads Heruntergeladen & Fertig - + Hide deleted Gelöschte ausblenden - + Deleted episodes Gelöscht - + Short downloads (< 10 min) Heruntergeladen & Länge < 10min @@ -294,62 +289,57 @@ - - Player - - - - + Now playing - + Sleep timer: Sleep Timer: - + - 1 min - + - 10 sec - + Pause Pause - + Play Abspielen - + + 10 sec - + + 1 min - + Playback speed: - + Queue - + Remove from queue diff --git a/translations/harbour-org.gpodder.sailfish-es.ts b/translations/harbour-org.gpodder.sailfish-es.ts index b617b89..960d899 100644 --- a/translations/harbour-org.gpodder.sailfish-es.ts +++ b/translations/harbour-org.gpodder.sailfish-es.ts @@ -32,12 +32,7 @@ AllEpisodesPage - - Episodes: - Episodios: - - - + No episodes found No se han encontrado episodios @@ -171,42 +166,42 @@ GPodderEpisodeListModel - + All Todos - + Fresh Nuevos - + Downloaded Descargados - + Unplayed downloads Descargas sin reproducir - + Finished downloads Descargas reproducidas - + Hide deleted Ocultar borrados - + Deleted episodes Episodios borrados - + Short downloads (< 10 min) Descargas cortas ( < 10 min) @@ -294,62 +289,57 @@ - - Player - - - - + Now playing - + Sleep timer: Temporizador: - + - 1 min - + - 10 sec - + Pause Pausar - + Play Reproducir - + + 10 sec - + + 1 min - + Playback speed: - + Queue - + Remove from queue diff --git a/translations/harbour-org.gpodder.sailfish-it.ts b/translations/harbour-org.gpodder.sailfish-it.ts index bb15716..f221a42 100644 --- a/translations/harbour-org.gpodder.sailfish-it.ts +++ b/translations/harbour-org.gpodder.sailfish-it.ts @@ -32,12 +32,7 @@ AllEpisodesPage - - Episodes: - Episodi: - - - + No episodes found Nessun episodio @@ -171,42 +166,42 @@ GPodderEpisodeListModel - + All Tutti - + Fresh Nuovi - + Downloaded Scaricati - + Unplayed downloads Download non riprodotti - + Finished downloads Download completati - + Hide deleted Nascondi eliminati - + Deleted episodes Episodi eliminati - + Short downloads (< 10 min) Download corti (< 10 min) @@ -294,62 +289,57 @@ - - Player - - - - + Now playing - + Sleep timer: Timer spegnimento: - + - 1 min - + - 10 sec - + Pause Pausa - + Play Riproduci - + + 10 sec - + + 1 min - + Playback speed: - + Queue - + Remove from queue diff --git a/translations/harbour-org.gpodder.sailfish-pl.ts b/translations/harbour-org.gpodder.sailfish-pl.ts index 1668709..adf9ccc 100644 --- a/translations/harbour-org.gpodder.sailfish-pl.ts +++ b/translations/harbour-org.gpodder.sailfish-pl.ts @@ -32,12 +32,7 @@ AllEpisodesPage - - Episodes: - Odcinki: - - - + No episodes found Brak odcinków @@ -171,42 +166,42 @@ GPodderEpisodeListModel - + All Wszytskie - + Fresh Nowe - + Downloaded Pobrane - + Unplayed downloads Nieodtworzone pobrane - + Finished downloads Zakończone pobrania - + Hide deleted Ukryj usunięte - + Deleted episodes Usunięte odcinki - + Short downloads (< 10 min) Krótkie pobrane (< 10min) @@ -294,62 +289,57 @@ - - Player - - - - + Now playing - + Sleep timer: Wyłącznik czasowy: - + - 1 min - + - 10 sec - + Pause Pauza - + Play Odtwarzaj - + + 10 sec - + + 1 min - + Playback speed: - + Queue - + Remove from queue diff --git a/translations/harbour-org.gpodder.sailfish-ru.ts b/translations/harbour-org.gpodder.sailfish-ru.ts index 2111b7e..7c30549 100644 --- a/translations/harbour-org.gpodder.sailfish-ru.ts +++ b/translations/harbour-org.gpodder.sailfish-ru.ts @@ -32,12 +32,7 @@ AllEpisodesPage - - Episodes: - Выпуски: - - - + No episodes found Нет выпусков @@ -171,42 +166,42 @@ GPodderEpisodeListModel - + All Все - + Fresh Последние - + Downloaded Скачанные - + Unplayed downloads Непрослушанные - + Finished downloads Завершенные закачки - + Hide deleted Скрыть удаленные - + Deleted episodes Удаленные выпуски - + Short downloads (< 10 min) Короткие (< 10 минут) @@ -294,62 +289,57 @@ - - Player - - - - + Now playing - + Sleep timer: Таймер сна: - + - 1 min - + - 10 sec - + Pause Пауза - + Play Играть - + + 10 sec - + + 1 min - + Playback speed: - + Queue - + Remove from queue diff --git a/translations/harbour-org.gpodder.sailfish-sv.ts b/translations/harbour-org.gpodder.sailfish-sv.ts index 7cd8cf3..7942d1a 100644 --- a/translations/harbour-org.gpodder.sailfish-sv.ts +++ b/translations/harbour-org.gpodder.sailfish-sv.ts @@ -32,12 +32,7 @@ AllEpisodesPage - - Episodes: - Avsnitt: - - - + No episodes found Inga avsnitt hittades @@ -171,42 +166,42 @@ GPodderEpisodeListModel - + All Alla - + Fresh Nya - + Downloaded Nerladdat - + Unplayed downloads Ospelade nerladdningar - + Finished downloads Slutförda nerladdningar - + Hide deleted Dölj borttagna - + Deleted episodes Borttagna avsnitt - + Short downloads (< 10 min) Korta nerladdningar (<10 min) @@ -294,62 +289,57 @@ - - Player - - - - + Now playing - + Sleep timer: Insomningstimer: - + - 1 min - + - 10 sec - + Pause Paus - + Play Spela - + + 10 sec - + + 1 min - + Playback speed: Uppspelningshastighet: - + Queue - + Remove from queue diff --git a/translations/harbour-org.gpodder.sailfish-zh_CN.ts b/translations/harbour-org.gpodder.sailfish-zh_CN.ts index fe86b9f..790e702 100644 --- a/translations/harbour-org.gpodder.sailfish-zh_CN.ts +++ b/translations/harbour-org.gpodder.sailfish-zh_CN.ts @@ -32,12 +32,7 @@ AllEpisodesPage - - Episodes: - 剧集: - - - + No episodes found 没有找到剧集 @@ -171,42 +166,42 @@ GPodderEpisodeListModel - + All 全部 - + Fresh 新的 - + Downloaded 下载 - + Unplayed downloads 未播放的下载 - + Finished downloads 已完成的下载 - + Hide deleted 隐藏已删除 - + Deleted episodes 已删除剧集 - + Short downloads (< 10 min) 较短的下载(10分钟以内) @@ -294,62 +289,57 @@ - - Player - - - - + Now playing - + Sleep timer: 睡眠计时器: - + - 1 min - + - 10 sec - + Pause 暂停 - + Play 播放 - + + 10 sec - + + 1 min - + Playback speed: - + Queue - + Remove from queue diff --git a/translations/harbour-org.gpodder.sailfish.ts b/translations/harbour-org.gpodder.sailfish.ts index 3f0fc53..5a3f211 100644 --- a/translations/harbour-org.gpodder.sailfish.ts +++ b/translations/harbour-org.gpodder.sailfish.ts @@ -31,11 +31,6 @@ AllEpisodesPage - - - Episodes: - - No episodes found @@ -171,42 +166,42 @@ GPodderEpisodeListModel - + All - + Fresh - + Downloaded - + Unplayed downloads - + Finished downloads - + Hide deleted - + Deleted episodes - + Short downloads (< 10 min) @@ -294,62 +289,57 @@ - - Player - - - - + Now playing - + Sleep timer: - + - 1 min - + - 10 sec - + Pause - + Play - + + 10 sec - + + 1 min - + Playback speed: - + Queue - + Remove from queue From fbfe64c47572c1ad597742a0a7b35910cbfa0da9 Mon Sep 17 00:00:00 2001 From: "E.S. Rosenberg a.k.a. Keeper of the Keys" Date: Fri, 22 Mar 2024 00:31:36 +0200 Subject: [PATCH 06/11] Add ansynchronous loading to Image and make the art column slightly wider --- qml/PlayerPage.qml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/qml/PlayerPage.qml b/qml/PlayerPage.qml index 0e8a634..2bc67e6 100644 --- a/qml/PlayerPage.qml +++ b/qml/PlayerPage.qml @@ -66,7 +66,7 @@ Page { Column { id: artColumn - width: isPortrait ? parent.width : parent.width * 0.5 + width: isPortrait ? parent.width : parent.width * 0.55 VideoOutput { id: videoOutputPP @@ -116,12 +116,13 @@ Page { fillMode: Image.PreserveAspectFit visible: !player.hasVideo && (player.episode_art !== '' || player.podcast_cover !== '') + asynchronous: true source: player.episode_art !== '' ? player.episode_art : player.cover_art } } Column { - width: isPortrait ? parent.width : parent.width * 0.5 + width: isPortrait ? parent.width : parent.width * 0.45 SectionHeader { text: qsTr("Now playing") From 98a867da17edae602bd74c2fb8cf3f71637ccd17 Mon Sep 17 00:00:00 2001 From: "E.S. Rosenberg a.k.a. Keeper of the Keys" Date: Fri, 22 Mar 2024 00:32:40 +0200 Subject: [PATCH 07/11] Remove unused properties --- qml/PlayerPage.qml | 3 --- 1 file changed, 3 deletions(-) diff --git a/qml/PlayerPage.qml b/qml/PlayerPage.qml index 2bc67e6..1f74aec 100644 --- a/qml/PlayerPage.qml +++ b/qml/PlayerPage.qml @@ -34,9 +34,6 @@ Page { id: flickable anchors.fill: parent - contentWidth: column.width - contentHeight: column.height + column.spacing - PullDownMenu { PlayerChaptersItem { model: player.episode_chapters From b3f6fba9908f9c52f63f3023fec80b9a461aedc9 Mon Sep 17 00:00:00 2001 From: "E.S. Rosenberg a.k.a. Keeper of the Keys" Date: Tue, 26 Mar 2024 21:32:31 +0200 Subject: [PATCH 08/11] SDK auto modified translation files --- .../harbour-org.gpodder.sailfish-bg.ts | 22 +++++++++---------- .../harbour-org.gpodder.sailfish-de.ts | 22 +++++++++---------- .../harbour-org.gpodder.sailfish-es.ts | 22 +++++++++---------- .../harbour-org.gpodder.sailfish-it.ts | 22 +++++++++---------- .../harbour-org.gpodder.sailfish-pl.ts | 22 +++++++++---------- .../harbour-org.gpodder.sailfish-ru.ts | 22 +++++++++---------- .../harbour-org.gpodder.sailfish-sv.ts | 22 +++++++++---------- .../harbour-org.gpodder.sailfish-zh_CN.ts | 22 +++++++++---------- translations/harbour-org.gpodder.sailfish.ts | 22 +++++++++---------- 9 files changed, 99 insertions(+), 99 deletions(-) diff --git a/translations/harbour-org.gpodder.sailfish-bg.ts b/translations/harbour-org.gpodder.sailfish-bg.ts index 902c4db..46cccff 100644 --- a/translations/harbour-org.gpodder.sailfish-bg.ts +++ b/translations/harbour-org.gpodder.sailfish-bg.ts @@ -290,57 +290,57 @@ - + Now playing - + Sleep timer: Отброяване до заспиване: - + - 1 min - + - 10 sec - + Pause Паузиране - + Play Пускане - + + 10 sec - + + 1 min - + Playback speed: - + Queue - + Remove from queue diff --git a/translations/harbour-org.gpodder.sailfish-de.ts b/translations/harbour-org.gpodder.sailfish-de.ts index 6a6415a..1ad2c0f 100644 --- a/translations/harbour-org.gpodder.sailfish-de.ts +++ b/translations/harbour-org.gpodder.sailfish-de.ts @@ -289,57 +289,57 @@ - + Now playing - + Sleep timer: Sleep Timer: - + - 1 min - + - 10 sec - + Pause Pause - + Play Abspielen - + + 10 sec - + + 1 min - + Playback speed: - + Queue - + Remove from queue diff --git a/translations/harbour-org.gpodder.sailfish-es.ts b/translations/harbour-org.gpodder.sailfish-es.ts index 960d899..bc90563 100644 --- a/translations/harbour-org.gpodder.sailfish-es.ts +++ b/translations/harbour-org.gpodder.sailfish-es.ts @@ -289,57 +289,57 @@ - + Now playing - + Sleep timer: Temporizador: - + - 1 min - + - 10 sec - + Pause Pausar - + Play Reproducir - + + 10 sec - + + 1 min - + Playback speed: - + Queue - + Remove from queue diff --git a/translations/harbour-org.gpodder.sailfish-it.ts b/translations/harbour-org.gpodder.sailfish-it.ts index f221a42..c9f2d4b 100644 --- a/translations/harbour-org.gpodder.sailfish-it.ts +++ b/translations/harbour-org.gpodder.sailfish-it.ts @@ -289,57 +289,57 @@ - + Now playing - + Sleep timer: Timer spegnimento: - + - 1 min - + - 10 sec - + Pause Pausa - + Play Riproduci - + + 10 sec - + + 1 min - + Playback speed: - + Queue - + Remove from queue diff --git a/translations/harbour-org.gpodder.sailfish-pl.ts b/translations/harbour-org.gpodder.sailfish-pl.ts index adf9ccc..6931efb 100644 --- a/translations/harbour-org.gpodder.sailfish-pl.ts +++ b/translations/harbour-org.gpodder.sailfish-pl.ts @@ -289,57 +289,57 @@ - + Now playing - + Sleep timer: Wyłącznik czasowy: - + - 1 min - + - 10 sec - + Pause Pauza - + Play Odtwarzaj - + + 10 sec - + + 1 min - + Playback speed: - + Queue - + Remove from queue diff --git a/translations/harbour-org.gpodder.sailfish-ru.ts b/translations/harbour-org.gpodder.sailfish-ru.ts index 7c30549..cfe86b8 100644 --- a/translations/harbour-org.gpodder.sailfish-ru.ts +++ b/translations/harbour-org.gpodder.sailfish-ru.ts @@ -289,57 +289,57 @@ - + Now playing - + Sleep timer: Таймер сна: - + - 1 min - + - 10 sec - + Pause Пауза - + Play Играть - + + 10 sec - + + 1 min - + Playback speed: - + Queue - + Remove from queue diff --git a/translations/harbour-org.gpodder.sailfish-sv.ts b/translations/harbour-org.gpodder.sailfish-sv.ts index 7942d1a..8f3384f 100644 --- a/translations/harbour-org.gpodder.sailfish-sv.ts +++ b/translations/harbour-org.gpodder.sailfish-sv.ts @@ -289,57 +289,57 @@ - + Now playing - + Sleep timer: Insomningstimer: - + - 1 min - + - 10 sec - + Pause Paus - + Play Spela - + + 10 sec - + + 1 min - + Playback speed: Uppspelningshastighet: - + Queue - + Remove from queue diff --git a/translations/harbour-org.gpodder.sailfish-zh_CN.ts b/translations/harbour-org.gpodder.sailfish-zh_CN.ts index 790e702..ade28ec 100644 --- a/translations/harbour-org.gpodder.sailfish-zh_CN.ts +++ b/translations/harbour-org.gpodder.sailfish-zh_CN.ts @@ -289,57 +289,57 @@ - + Now playing - + Sleep timer: 睡眠计时器: - + - 1 min - + - 10 sec - + Pause 暂停 - + Play 播放 - + + 10 sec - + + 1 min - + Playback speed: - + Queue - + Remove from queue diff --git a/translations/harbour-org.gpodder.sailfish.ts b/translations/harbour-org.gpodder.sailfish.ts index 5a3f211..039ce00 100644 --- a/translations/harbour-org.gpodder.sailfish.ts +++ b/translations/harbour-org.gpodder.sailfish.ts @@ -289,57 +289,57 @@ - + Now playing - + Sleep timer: - + - 1 min - + - 10 sec - + Pause - + Play - + + 10 sec - + + 1 min - + Playback speed: - + Queue - + Remove from queue From 55fd6d67fa8823ce01bce2c6bd8a56626a40f28e Mon Sep 17 00:00:00 2001 From: "E.S. Rosenberg a.k.a. Keeper of the Keys" Date: Sun, 31 Mar 2024 23:58:41 +0300 Subject: [PATCH 09/11] Image doesn't overflow screen and interface of player is flickable again. --- qml/PlayerPage.qml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/qml/PlayerPage.qml b/qml/PlayerPage.qml index 1f74aec..52c6d3d 100644 --- a/qml/PlayerPage.qml +++ b/qml/PlayerPage.qml @@ -34,6 +34,8 @@ Page { id: flickable anchors.fill: parent + contentHeight: isPortrait ? artColumn.height + infoColumn.height : Math.max(artColumn.height + infoColumn.height) + PullDownMenu { PlayerChaptersItem { model: player.episode_chapters @@ -110,6 +112,7 @@ Page { id: art width: parent.width + height: isLandscape ? (implicitHeight > Screen.width ? Screen.width : paintedHeight ) : paintedHeight fillMode: Image.PreserveAspectFit visible: !player.hasVideo && (player.episode_art !== '' || player.podcast_cover !== '') @@ -119,6 +122,8 @@ Page { } } Column { + id: infoColumn + width: isPortrait ? parent.width : parent.width * 0.45 SectionHeader { @@ -138,7 +143,7 @@ Page { Image { id: podcast_cover - height: playerPage.isPortrait ? parent.width * 0.2 : parent.width * 0.1 + height: parent.width * 0.2 width: this.height visible: (player.cover_art !== '' && player.episode_art !== '') From a62a1bae9f118feed15584c04c957bdf98d7591f Mon Sep 17 00:00:00 2001 From: "E.S. Rosenberg a.k.a. Keeper of the Keys" Date: Mon, 1 Apr 2024 00:13:23 +0300 Subject: [PATCH 10/11] SDK auto-modified translation files --- .../harbour-org.gpodder.sailfish-bg.ts | 28 +++++++++---------- .../harbour-org.gpodder.sailfish-de.ts | 28 +++++++++---------- .../harbour-org.gpodder.sailfish-es.ts | 28 +++++++++---------- .../harbour-org.gpodder.sailfish-it.ts | 28 +++++++++---------- .../harbour-org.gpodder.sailfish-pl.ts | 28 +++++++++---------- .../harbour-org.gpodder.sailfish-ru.ts | 28 +++++++++---------- .../harbour-org.gpodder.sailfish-sv.ts | 28 +++++++++---------- .../harbour-org.gpodder.sailfish-zh_CN.ts | 28 +++++++++---------- 8 files changed, 112 insertions(+), 112 deletions(-) diff --git a/translations/harbour-org.gpodder.sailfish-bg.ts b/translations/harbour-org.gpodder.sailfish-bg.ts index 968e0b9..faff595 100644 --- a/translations/harbour-org.gpodder.sailfish-bg.ts +++ b/translations/harbour-org.gpodder.sailfish-bg.ts @@ -275,72 +275,72 @@ PlayerPage - + Stop sleep timer - + Sleep timer Отброяване до заспиване - + Clear play queue - + Now playing - + Sleep timer: Отброяване до заспиване: - + - 1 min - + - 10 sec - + Pause Паузиране - + Play Пускане - + + 10 sec - + + 1 min - + Playback speed: - + Queue - + Remove from queue diff --git a/translations/harbour-org.gpodder.sailfish-de.ts b/translations/harbour-org.gpodder.sailfish-de.ts index 7d7b2d6..f82dfc2 100644 --- a/translations/harbour-org.gpodder.sailfish-de.ts +++ b/translations/harbour-org.gpodder.sailfish-de.ts @@ -274,72 +274,72 @@ PlayerPage - + Stop sleep timer - + Sleep timer Sleeptimer - + Clear play queue - + Now playing - + Sleep timer: Sleep Timer: - + - 1 min - + - 10 sec - + Pause Pause - + Play Abspielen - + + 10 sec - + + 1 min - + Playback speed: - + Queue - + Remove from queue diff --git a/translations/harbour-org.gpodder.sailfish-es.ts b/translations/harbour-org.gpodder.sailfish-es.ts index ca038f8..b8ea28d 100644 --- a/translations/harbour-org.gpodder.sailfish-es.ts +++ b/translations/harbour-org.gpodder.sailfish-es.ts @@ -274,72 +274,72 @@ PlayerPage - + Stop sleep timer - + Sleep timer Temporizador - + Clear play queue - + Now playing - + Sleep timer: Temporizador: - + - 1 min - + - 10 sec - + Pause Pausar - + Play Reproducir - + + 10 sec - + + 1 min - + Playback speed: - + Queue - + Remove from queue diff --git a/translations/harbour-org.gpodder.sailfish-it.ts b/translations/harbour-org.gpodder.sailfish-it.ts index 6e019e9..e5f669b 100644 --- a/translations/harbour-org.gpodder.sailfish-it.ts +++ b/translations/harbour-org.gpodder.sailfish-it.ts @@ -274,72 +274,72 @@ PlayerPage - + Stop sleep timer - + Sleep timer Timer spegnimento - + Clear play queue - + Now playing - + Sleep timer: Timer spegnimento: - + - 1 min - + - 10 sec - + Pause Pausa - + Play Riproduci - + + 10 sec - + + 1 min - + Playback speed: - + Queue - + Remove from queue diff --git a/translations/harbour-org.gpodder.sailfish-pl.ts b/translations/harbour-org.gpodder.sailfish-pl.ts index f8cd6a7..408dc9d 100644 --- a/translations/harbour-org.gpodder.sailfish-pl.ts +++ b/translations/harbour-org.gpodder.sailfish-pl.ts @@ -274,72 +274,72 @@ PlayerPage - + Stop sleep timer - + Sleep timer Wyłącznik czasowy - + Clear play queue - + Now playing - + Sleep timer: Wyłącznik czasowy: - + - 1 min - + - 10 sec - + Pause Pauza - + Play Odtwarzaj - + + 10 sec - + + 1 min - + Playback speed: - + Queue - + Remove from queue diff --git a/translations/harbour-org.gpodder.sailfish-ru.ts b/translations/harbour-org.gpodder.sailfish-ru.ts index e9ab6dd..86a9d27 100644 --- a/translations/harbour-org.gpodder.sailfish-ru.ts +++ b/translations/harbour-org.gpodder.sailfish-ru.ts @@ -274,72 +274,72 @@ PlayerPage - + Stop sleep timer - + Sleep timer Отключиться через - + Clear play queue - + Now playing - + Sleep timer: Таймер сна: - + - 1 min - + - 10 sec - + Pause Пауза - + Play Играть - + + 10 sec - + + 1 min - + Playback speed: - + Queue - + Remove from queue diff --git a/translations/harbour-org.gpodder.sailfish-sv.ts b/translations/harbour-org.gpodder.sailfish-sv.ts index ed1dd67..7803b73 100644 --- a/translations/harbour-org.gpodder.sailfish-sv.ts +++ b/translations/harbour-org.gpodder.sailfish-sv.ts @@ -274,72 +274,72 @@ PlayerPage - + Stop sleep timer - + Sleep timer Insomningstimer - + Clear play queue - + Now playing - + Sleep timer: Insomningstimer: - + - 1 min - + - 10 sec - + Pause Paus - + Play Spela - + + 10 sec - + + 1 min - + Playback speed: Uppspelningshastighet: - + Queue - + Remove from queue diff --git a/translations/harbour-org.gpodder.sailfish-zh_CN.ts b/translations/harbour-org.gpodder.sailfish-zh_CN.ts index 165bffe..8afa010 100644 --- a/translations/harbour-org.gpodder.sailfish-zh_CN.ts +++ b/translations/harbour-org.gpodder.sailfish-zh_CN.ts @@ -274,72 +274,72 @@ PlayerPage - + Stop sleep timer - + Sleep timer 睡眠计时器 - + Clear play queue - + Now playing - + Sleep timer: 睡眠计时器: - + - 1 min - + - 10 sec - + Pause 暂停 - + Play 播放 - + + 10 sec - + + 1 min - + Playback speed: - + Queue - + Remove from queue From 349c8d406ccfb07c1e248b59c4569cde874a7518 Mon Sep 17 00:00:00 2001 From: "E.S. Rosenberg a.k.a. Keeper of the Keys" Date: Mon, 1 Apr 2024 00:21:07 +0300 Subject: [PATCH 11/11] Make some variables more explicit --- qml/PlayerPage.qml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/qml/PlayerPage.qml b/qml/PlayerPage.qml index 52c6d3d..9bb6212 100644 --- a/qml/PlayerPage.qml +++ b/qml/PlayerPage.qml @@ -34,6 +34,7 @@ Page { id: flickable anchors.fill: parent + contentWidth: isPortrait ? Screen.width : Screen.height contentHeight: isPortrait ? artColumn.height + infoColumn.height : Math.max(artColumn.height + infoColumn.height) PullDownMenu { @@ -61,7 +62,7 @@ Page { Flow { id: pageFlow - width: parent.width + width: playerPage.width Column { id: artColumn