From 889b2fb8ce5227b4605fe574df02e330bf019f2b Mon Sep 17 00:00:00 2001 From: Arthur Lobo <64273139+ArthurLobopro@users.noreply.github.com> Date: Sun, 2 Mar 2025 12:55:42 -0300 Subject: [PATCH 1/7] feat: show video while set playbackRate --- package/contents/ui/config.qml | 77 ++++++++++++++++++++++------------ 1 file changed, 51 insertions(+), 26 deletions(-) diff --git a/package/contents/ui/config.qml b/package/contents/ui/config.qml index 98f3787..c870488 100644 --- a/package/contents/ui/config.qml +++ b/package/contents/ui/config.qml @@ -709,36 +709,61 @@ Kirigami.FormLayout { property real speed property string filename: "" - Kirigami.FormLayout { - RowLayout { - Kirigami.FormData.label: i18n("Playback speed:") - Slider { - id: dialogPlaybackRateSpeed - from: 0 - to: 2 - value: videoConfig.speed - onValueChanged: { - videoConfig.speed = value - } + onFilenameChanged: { + videoPlayer.pause() + videoPlayer.source = filename + videoPlayer.position = 0 + videoPlayer.play() + } + + Column { + Rectangle { + //Mini 16/9 + width: 400 + height: 236 + color: "transparent" + + Video { + id: videoPlayer + anchors.fill: parent + source: videoConfig.filename + autoPlay: true + loops: MediaPlayer.Infinite + playbackRate: videoConfig.speed } - Label { - text: parseFloat(dialogPlaybackRateSpeed.value).toFixed(2) - font.features: { "tnum": 1 } - } - Button { - icon.name: "edit-undo-symbolic" - flat: true - onClicked: { - dialogPlaybackRateSpeed.value = 0.0 + } + + Kirigami.FormLayout { + RowLayout { + Kirigami.FormData.label: i18n("Playback speed:") + Slider { + id: dialogPlaybackRateSpeed + from: 0 + to: 2 + value: videoConfig.speed + onValueChanged: { + videoConfig.speed = value + } + } + Label { + text: parseFloat(dialogPlaybackRateSpeed.value).toFixed(2) + font.features: { "tnum": 1 } + } + Button { + icon.name: "edit-undo-symbolic" + flat: true + onClicked: { + dialogPlaybackRateSpeed.value = 0.0 + } + ToolTip.text: i18n("Reset to default") + ToolTip.visible: hovered + } + Kirigami.ContextualHelpButton { + toolTipText: i18n("A value other than 0.0 overrides the global Playback speed for this video.") } - ToolTip.text: i18n("Reset to default") - ToolTip.visible: hovered - } - Kirigami.ContextualHelpButton { - toolTipText: i18n("A value other than 0.0 overrides the global Playback speed for this video.") } } - } + } onAccepted: { videosConfig[index].playbackRate = speed From 8ab6ba1a46b5ef56ab06e000d98acbb65a0639d6 Mon Sep 17 00:00:00 2001 From: Arthur Lobo <64273139+ArthurLobopro@users.noreply.github.com> Date: Mon, 3 Mar 2025 20:06:09 -0300 Subject: [PATCH 2/7] fix: use default when speed is 0 --- package/contents/ui/config.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/contents/ui/config.qml b/package/contents/ui/config.qml index c870488..29dce8c 100644 --- a/package/contents/ui/config.qml +++ b/package/contents/ui/config.qml @@ -729,7 +729,7 @@ Kirigami.FormLayout { source: videoConfig.filename autoPlay: true loops: MediaPlayer.Infinite - playbackRate: videoConfig.speed + playbackRate: videoConfig.speed || cfg_PlaybackRate } } From 5e75ffd98c2d75ac29b3e80cdefe3ee5845eaaa3 Mon Sep 17 00:00:00 2001 From: Arthur Lobo <64273139+ArthurLobopro@users.noreply.github.com> Date: Mon, 3 Mar 2025 20:20:20 -0300 Subject: [PATCH 3/7] fix: alow to view and edit unabled videos --- package/contents/ui/config.qml | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/package/contents/ui/config.qml b/package/contents/ui/config.qml index 29dce8c..3b32fa3 100644 --- a/package/contents/ui/config.qml +++ b/package/contents/ui/config.qml @@ -199,18 +199,20 @@ Kirigami.FormLayout { Utils.updateConfig() } } - Button { - icon.name: "preferences-other" - enabled: true - onClicked: { - dialogPlaybackRateSpeed.value = videosConfig[modelData].playbackRate - videoConfig.filename = videosConfig[modelData].filename - videoConfig.index = index - videoConfig.open() - } + } + + Button { + icon.name: "preferences-other" + enabled: true + onClicked: { + dialogPlaybackRateSpeed.value = videosConfig[modelData].playbackRate + videoConfig.filename = videosConfig[modelData].filename + videoConfig.index = index + videoConfig.open() } } - Button{ + + Button { icon.name: "edit-delete-remove" onClicked: { videosConfig.splice(index,1) From ef7bce1f2b0e91c83c58d24b3d37c70dfbee370c Mon Sep 17 00:00:00 2001 From: Luis Bocanegra Date: Mon, 3 Mar 2025 19:34:23 -0600 Subject: [PATCH 4/7] fix: stop playback after closing video settings dialog --- package/contents/ui/config.qml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/package/contents/ui/config.qml b/package/contents/ui/config.qml index 3b32fa3..9fafdbd 100644 --- a/package/contents/ui/config.qml +++ b/package/contents/ui/config.qml @@ -711,8 +711,7 @@ Kirigami.FormLayout { property real speed property string filename: "" - onFilenameChanged: { - videoPlayer.pause() + onOpened: { videoPlayer.source = filename videoPlayer.position = 0 videoPlayer.play() @@ -732,6 +731,13 @@ Kirigami.FormLayout { autoPlay: true loops: MediaPlayer.Infinite playbackRate: videoConfig.speed || cfg_PlaybackRate + Component.onCompleted: { + videoConfig.aboutToHide.connect( function release() { + videoPlayer.stop() + videoPlayer.source = "" + videoConfig.aboutToHide.disconnect(release) + }) + } } } From e93b8057b178f6a50b0f28c3cea439a8e99a15e8 Mon Sep 17 00:00:00 2001 From: Luis Bocanegra Date: Mon, 3 Mar 2025 19:34:23 -0600 Subject: [PATCH 5/7] fix: stop playback after closing video settings dialog --- package/contents/ui/config.qml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/package/contents/ui/config.qml b/package/contents/ui/config.qml index 3b32fa3..97a04db 100644 --- a/package/contents/ui/config.qml +++ b/package/contents/ui/config.qml @@ -711,8 +711,7 @@ Kirigami.FormLayout { property real speed property string filename: "" - onFilenameChanged: { - videoPlayer.pause() + onOpened: { videoPlayer.source = filename videoPlayer.position = 0 videoPlayer.play() @@ -732,6 +731,11 @@ Kirigami.FormLayout { autoPlay: true loops: MediaPlayer.Infinite playbackRate: videoConfig.speed || cfg_PlaybackRate + onVisibleChanged: { + if (visible) return + videoPlayer.stop() + videoPlayer.source = "" + } } } From f1a45e8244718d90d7dc144f7994047f8dd5ffda Mon Sep 17 00:00:00 2001 From: Arthur Lobo <64273139+ArthurLobopro@users.noreply.github.com> Date: Tue, 4 Mar 2025 10:34:50 -0300 Subject: [PATCH 6/7] fix: destroy videoplayer after close --- package/contents/ui/config.qml | 51 ++++++++++++++++++++++------------ 1 file changed, 34 insertions(+), 17 deletions(-) diff --git a/package/contents/ui/config.qml b/package/contents/ui/config.qml index 97a04db..23263f8 100644 --- a/package/contents/ui/config.qml +++ b/package/contents/ui/config.qml @@ -712,9 +712,26 @@ Kirigami.FormLayout { property string filename: "" onOpened: { - videoPlayer.source = filename - videoPlayer.position = 0 - videoPlayer.play() + videoPlayer.player = Qt.createQmlObject(` + import QtMultimedia + + Video { + id: videoPlayer + anchors.fill: parent + loops: MediaPlayer.Infinite + source: "" + autoPlay: true + }`, + videoPlayer, + "dynamicVideo" + ) + + videoPlayer.player.source = videoConfig.filename + videoPlayer.player.playbackRate = videoConfig.speed || cfg_PlaybackRate + } + + onSpeedChanged: { + videoPlayer.player.playbackRate = videoConfig.speed || cfg_PlaybackRate } Column { @@ -724,19 +741,9 @@ Kirigami.FormLayout { height: 236 color: "transparent" - Video { - id: videoPlayer - anchors.fill: parent - source: videoConfig.filename - autoPlay: true - loops: MediaPlayer.Infinite - playbackRate: videoConfig.speed || cfg_PlaybackRate - onVisibleChanged: { - if (visible) return - videoPlayer.stop() - videoPlayer.source = "" - } - } + id: videoPlayer + + property var player } Kirigami.FormLayout { @@ -769,12 +776,22 @@ Kirigami.FormLayout { } } } - } + } + + function destroyVideoPlayer(){ + videoPlayer.player.destroy() + videoPlayer.player = null + } onAccepted: { videosConfig[index].playbackRate = speed + destroyVideoPlayer() Utils.updateConfig() } + + onRejected: { + destroyVideoPlayer() + } } Component.onCompleted: { From 7ed8195034c803de5786d823e8ab4cc7e34bf277 Mon Sep 17 00:00:00 2001 From: Arthur Lobo <64273139+ArthurLobopro@users.noreply.github.com> Date: Tue, 4 Mar 2025 10:52:21 -0300 Subject: [PATCH 7/7] fix: calls gabarge collector to reduce memory usage --- package/contents/ui/config.qml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package/contents/ui/config.qml b/package/contents/ui/config.qml index 23263f8..f1b28d1 100644 --- a/package/contents/ui/config.qml +++ b/package/contents/ui/config.qml @@ -722,8 +722,7 @@ Kirigami.FormLayout { source: "" autoPlay: true }`, - videoPlayer, - "dynamicVideo" + videoPlayer ) videoPlayer.player.source = videoConfig.filename @@ -781,6 +780,7 @@ Kirigami.FormLayout { function destroyVideoPlayer(){ videoPlayer.player.destroy() videoPlayer.player = null + gc() } onAccepted: {