[vlc-devel] [PATCH 11/27] qml: add support for proper adjustable spacing in player controlbar
Fatih Uzunoglu
fuzun54 at outlook.com
Fri Dec 4 00:01:46 CET 2020
---
modules/gui/qt/player/qml/ButtonsLayout.qml | 13 +++++----
.../gui/qt/player/qml/PlayerButtonsLayout.qml | 29 +++++++++++++------
2 files changed, 28 insertions(+), 14 deletions(-)
diff --git a/modules/gui/qt/player/qml/ButtonsLayout.qml b/modules/gui/qt/player/qml/ButtonsLayout.qml
index 02fdc4b8f0..b0f1f60690 100644
--- a/modules/gui/qt/player/qml/ButtonsLayout.qml
+++ b/modules/gui/qt/player/qml/ButtonsLayout.qml
@@ -32,10 +32,13 @@ Widgets.NavigableFocusScope {
property var defaultSize: VLCStyle.icon_normal
property bool forceColors: false
- property real minimumWidth: 0
+ property real _minimumWidth: 0 // minimumWidth without spacing (minimumWidth of all controls inside)
+ property real minimumWidth: _minimumWidth + ((buttonsRepeater.count - 1) * buttonrow.spacing) // minimumWidth with spacing
property real extraWidth: undefined
property int expandableCount: 0 // widget count that can expand when extra width is available
+ property alias spacing: buttonrow.spacing
+
implicitWidth: buttonrow.implicitWidth
implicitHeight: buttonrow.implicitHeight
@@ -72,9 +75,9 @@ Widgets.NavigableFocusScope {
buttonsLayout.expandableCount--
if (item.item.minimumWidth !== undefined)
- buttonsLayout.minimumWidth -= item.item.minimumWidth + buttonrow.spacing
+ buttonsLayout._minimumWidth -= item.item.minimumWidth
else
- buttonsLayout.minimumWidth -= item.item.width + buttonrow.spacing
+ buttonsLayout._minimumWidth -= item.item.width
}
delegate: Loader {
@@ -117,9 +120,9 @@ Widgets.NavigableFocusScope {
buttonloader.item.navigationLeft = buttonsLayout.navigationLeft
if (buttonloader.item.minimumWidth !== undefined)
- buttonsLayout.minimumWidth += buttonloader.item.minimumWidth + buttonrow.spacing
+ buttonsLayout._minimumWidth += buttonloader.item.minimumWidth
else
- buttonsLayout.minimumWidth += buttonloader.item.width + buttonrow.spacing
+ buttonsLayout._minimumWidth += buttonloader.item.width
if (buttonloader.item.extraWidth !== undefined && buttonsLayout.extraWidth !== undefined) {
buttonsLayout.expandableCount++
diff --git a/modules/gui/qt/player/qml/PlayerButtonsLayout.qml b/modules/gui/qt/player/qml/PlayerButtonsLayout.qml
index 087bd7c4ff..4c90b72dfd 100644
--- a/modules/gui/qt/player/qml/PlayerButtonsLayout.qml
+++ b/modules/gui/qt/player/qml/PlayerButtonsLayout.qml
@@ -37,7 +37,10 @@ Widgets.NavigableFocusScope {
property real marginBottom: 0
property bool forceColors: false
-
+
+ property real spacing: VLCStyle.margin_normal // spacing between controls
+ property real layoutSpacing: VLCStyle.margin_xlarge // spacing between layouts (left, center, and right)
+
enum Alignment {
Left = 0,
Center = 1,
@@ -68,15 +71,16 @@ Widgets.NavigableFocusScope {
model: models[PlayerButtonsLayout.Alignment.Left]
- extraWidth: (buttonrow_center.x - buttonrow_left.x - minimumWidth)
+ extraWidth: (buttonrow_center.x - buttonrow_left.x - minimumWidth - layoutSpacing)
anchors {
left: parent.left
verticalCenter: parent.verticalCenter
- leftMargin: playerButtonsLayout.marginLeft
- topMargin: playerButtonsLayout.marginTop
- bottomMargin: playerButtonsLayout.marginBottom
+ leftMargin: marginLeft
+ topMargin: marginTop
+ bottomMargin: marginBottom
+ rightMargin: layoutSpacing
}
forceColors: playerButtonsLayout.forceColors
@@ -87,6 +91,8 @@ Widgets.NavigableFocusScope {
navigationRightItem: buttonrow_center
focus: true
+
+ spacing: playerButtonsLayout.spacing
}
ButtonsLayout {
@@ -106,6 +112,8 @@ Widgets.NavigableFocusScope {
navigationParent: playerButtonsLayout
navigationLeftItem: buttonrow_left
navigationRightItem: buttonrow_right
+
+ spacing: playerButtonsLayout.spacing
}
ButtonsLayout {
@@ -113,15 +121,16 @@ Widgets.NavigableFocusScope {
model: models[PlayerButtonsLayout.Alignment.Right]
- extraWidth: (playerButtonsLayout.width - (buttonrow_center.x + buttonrow_center.width) - minimumWidth)
+ extraWidth: (playerButtonsLayout.width - (buttonrow_center.x + buttonrow_center.width) - minimumWidth - (2 * layoutSpacing))
anchors {
right: parent.right
verticalCenter: parent.verticalCenter
- rightMargin: playerButtonsLayout.marginRight
- topMargin: playerButtonsLayout.marginTop
- bottomMargin: playerButtonsLayout.marginBottom
+ rightMargin: marginRight
+ topMargin: marginTop
+ bottomMargin: marginBottom
+ leftMargin: layoutSpacing
}
forceColors: playerButtonsLayout.forceColors
@@ -130,5 +139,7 @@ Widgets.NavigableFocusScope {
navigationParent: playerButtonsLayout
navigationLeftItem: buttonrow_center
+
+ spacing: playerButtonsLayout.spacing
}
}
--
2.27.0
More information about the vlc-devel
mailing list