[vlc-devel] [PATCH 11/38] qml: add progressbar to the miniplayer

Fatih Uzunoglu fuzun54 at outlook.com
Thu Aug 20 19:55:20 CEST 2020


+ some layout changes
---
 modules/gui/qt/player/qml/MiniPlayer.qml | 208 +++++++++++++----------
 modules/gui/qt/style/VLCStyle.qml        |   2 +-
 2 files changed, 119 insertions(+), 91 deletions(-)

diff --git a/modules/gui/qt/player/qml/MiniPlayer.qml b/modules/gui/qt/player/qml/MiniPlayer.qml
index 4ee41d91de..7ec5995733 100644
--- a/modules/gui/qt/player/qml/MiniPlayer.qml
+++ b/modules/gui/qt/player/qml/MiniPlayer.qml
@@ -49,127 +49,155 @@ Widgets.NavigableFocusScope {
         to: 0
     }
 
-    Rectangle {
-
+    Column {
         anchors.left: parent.left
         anchors.right: parent.right
 
-        height: VLCStyle.miniPlayerHeight
-        color: VLCStyle.colors.banner
-
-        RowLayout {
-            anchors.fill: parent
-            anchors.leftMargin: VLCStyle.applicationHorizontalMargin
-            anchors.rightMargin: VLCStyle.applicationHorizontalMargin
-            anchors.bottomMargin: VLCStyle.applicationVerticalMargin
-
-            Widgets.FocusBackground {
-                id: playingItemInfo
-                Layout.fillHeight: true
-                Layout.preferredWidth: playingItemInfoRow.implicitWidth
-                width: childrenRect.width
-                focus: true
-
-                MouseArea {
-                    anchors.fill: parent
-                    onClicked: history.push(["player"])
-                }
+        spacing: VLCStyle.dp(-progressBar.height / 2)
 
-                Keys.onPressed: {
-                    if (KeyHelper.matchOk(event) ) {
-                        event.accepted = true
-                    }
-                }
-                Keys.onReleased: {
-                    if (!event.accepted && KeyHelper.matchOk(event))
-                        history.push(["player"])
+        SliderBar {
+            id: progressBar
+            value: player.position
+            visible: progressBar.value >= 0.0 && progressBar.value <= 1.0
+            z: 1
+
+            isMiniplayer: true
+
+            anchors {
+                left: parent.left
+                right: parent.right
+            }
+        }
+
+        Rectangle {
+            anchors {
+                left: parent.left
+                right: parent.right
+            }
+            z: 0
+            height: VLCStyle.miniPlayerHeight
+            color: VLCStyle.colors.banner
+
+            RowLayout {
+                anchors {
+                    fill: parent
+
+                    leftMargin: VLCStyle.applicationHorizontalMargin
+                    rightMargin: VLCStyle.applicationHorizontalMargin
+                    bottomMargin: VLCStyle.applicationVerticalMargin
                 }
 
-                Row {
-                    id: playingItemInfoRow
-                    anchors.top: parent.top
-                    anchors.bottom: parent.bottom
+                Widgets.FocusBackground {
+                    id: playingItemInfo
+                    Layout.fillHeight: true
+                    Layout.preferredWidth: playingItemInfoRow.implicitWidth
+                    width: childrenRect.width
+                    focus: true
 
-                    rightPadding: VLCStyle.margin_normal
+                    MouseArea {
+                        anchors.fill: parent
+                        onClicked: history.push(["player"])
+                    }
+
+                    Keys.onPressed: {
+                        if (KeyHelper.matchOk(event) ) {
+                            event.accepted = true
+                        }
+                    }
+                    Keys.onReleased: {
+                        if (!event.accepted && KeyHelper.matchOk(event))
+                            history.push(["player"])
+                    }
 
-                    Image {
-                        id: cover
-                        source: (mainPlaylistController.currentItem.artwork && mainPlaylistController.currentItem.artwork.toString())
-                                ? mainPlaylistController.currentItem.artwork
-                                : VLCStyle.noArtAlbum
-                        fillMode: Image.PreserveAspectFit
 
+                    Row {
+                        id: playingItemInfoRow
                         anchors.top: parent.top
                         anchors.bottom: parent.bottom
-                    }
-
-                    Column {
                         anchors.verticalCenter: parent.verticalCenter
+
                         leftPadding: VLCStyle.margin_normal
 
-                        Widgets.MenuLabel {
-                            id: titleLabel
-                            text: mainPlaylistController.currentItem.title
-                        }
+                        Image {
+                            id: cover
+                            anchors.verticalCenter: parent.verticalCenter
+
+                            source: (mainPlaylistController.currentItem.artwork && mainPlaylistController.currentItem.artwork.toString())
+                                    ? mainPlaylistController.currentItem.artwork
+                                    : VLCStyle.noArtAlbum
+                            fillMode: Image.PreserveAspectFit
 
-                        Widgets.MenuCaption {
-                            id: artistLabel
-                            text: mainPlaylistController.currentItem.artist
+                            width: VLCStyle.dp(60)
+                            height: VLCStyle.dp(60)
                         }
 
-                        Widgets.MenuCaption {
-                            id: progressIndicator
-                            text: player.time.toString() + " / " + player.length.toString()
+                        Column {
+                            anchors.verticalCenter: parent.verticalCenter
+                            leftPadding: VLCStyle.margin_xsmall
+
+                            Widgets.MenuLabel {
+                                id: titleLabel
+                                text: mainPlaylistController.currentItem.title
+                            }
+
+                            Widgets.MenuCaption {
+                                id: artistLabel
+                                text: mainPlaylistController.currentItem.artist
+                            }
+
+                            Widgets.MenuCaption {
+                                id: progressIndicator
+                                text: player.time.toString() + " / " + player.length.toString()
+                            }
                         }
                     }
-                }
 
-                KeyNavigation.right: buttonrow
-            }
+                    KeyNavigation.right: buttonrow
+                }
 
-            Item {
-                Layout.fillWidth: true
-            }
+                Item {
+                    Layout.fillWidth: true
+                }
 
-            PlayerButtonsLayout {
-                id: buttonrow
+                PlayerButtonsLayout {
+                    id: buttonrow
 
-                model: miniPlayerModel
-                defaultSize: VLCStyle.icon_normal
+                    model: miniPlayerModel
+                    defaultSize: VLCStyle.icon_normal
 
-                Layout.alignment: Qt.AlignVCenter
-                Layout.rightMargin: VLCStyle.margin_normal
-                Layout.preferredWidth: buttonrow.implicitWidth
-                Layout.preferredHeight: buttonrow.implicitHeight
+                    Layout.alignment: Qt.AlignVCenter
+                    Layout.rightMargin: VLCStyle.margin_normal
+                    Layout.preferredWidth: buttonrow.implicitWidth
+                    Layout.preferredHeight: buttonrow.implicitHeight
 
-                navigationParent: root
-                navigationLeftItem: playingItemInfo
+                    navigationParent: root
+                    navigationLeftItem: playingItemInfo
+                }
             }
-        }
 
-        Connections{
-            target: mainInterface
-            onToolBarConfUpdated: {
-                miniPlayerModel.reloadModel()
+            Connections{
+                target: mainInterface
+                onToolBarConfUpdated: {
+                    miniPlayerModel.reloadModel()
+                }
             }
-        }
 
-        PlayerControlBarModel {
-            id: miniPlayerModel
-            mainCtx: mainctx
-            configName: "MiniPlayerToolbar"
-        }
+            PlayerControlBarModel {
+                id: miniPlayerModel
+                mainCtx: mainctx
+                configName: "MiniPlayerToolbar"
+            }
 
-        ControlButtons {
-            id: controlmodelbuttons
-        }
+            ControlButtons {
+                id: controlmodelbuttons
+            }
 
-        Keys.onPressed: {
-            if (!event.accepted)
-                defaultKeyAction(event, 0)
-            if (!event.accepted)
-                mainInterface.sendHotkey(event.key, event.modifiers);
+            Keys.onPressed: {
+                if (!event.accepted)
+                    defaultKeyAction(event, 0)
+                if (!event.accepted)
+                    mainInterface.sendHotkey(event.key, event.modifiers);
+            }
         }
-
     }
 }
diff --git a/modules/gui/qt/style/VLCStyle.qml b/modules/gui/qt/style/VLCStyle.qml
index 49bc56a5fd..26e0767bae 100644
--- a/modules/gui/qt/style/VLCStyle.qml
+++ b/modules/gui/qt/style/VLCStyle.qml
@@ -120,7 +120,7 @@ Item {
 
     property real network_normal: dp(100, scale)
 
-    property int miniPlayerHeight: dp(60, scale)
+    property int miniPlayerHeight: dp(76, scale)
 
     property int expandAlbumTracksHeight: dp(200, scale)
 
-- 
2.25.1



More information about the vlc-devel mailing list