[vlc-devel] [PATCH 09/27] qml: new styling for SortControl
Fatih Uzunoglu
fuzun54 at outlook.com
Fri Oct 9 18:56:30 CEST 2020
---
modules/gui/qt/widgets/qml/SortControl.qml | 59 ++++++++++++++++++----
1 file changed, 49 insertions(+), 10 deletions(-)
diff --git a/modules/gui/qt/widgets/qml/SortControl.qml b/modules/gui/qt/widgets/qml/SortControl.qml
index e44206a55e..9129b8a6d7 100644
--- a/modules/gui/qt/widgets/qml/SortControl.qml
+++ b/modules/gui/qt/widgets/qml/SortControl.qml
@@ -17,6 +17,9 @@
*****************************************************************************/
import QtQuick 2.11
import QtQuick.Controls 2.4
+import QtQuick.Layouts 1.3
+
+import org.videolan.vlc 0.1
import "qrc:///style/"
import "qrc:///widgets/" as Widgets
@@ -29,7 +32,7 @@ Widgets.NavigableFocusScope {
property alias model: list.model
property string textRole
-
+ property string criteriaRole
property int popupAlignment: Qt.AlignRight | Qt.AlignBottom
property int listWidth
@@ -38,6 +41,11 @@ Widgets.NavigableFocusScope {
property VLCColors _colors: VLCStyle.colors
+ // properties that should be handled by parent
+ // if they are not updated, SortControl will behave as before
+ property var sortKey : PlaylistControllerModel.SORT_KEY_NONE
+ property var sortOrder : undefined
+
signal sortSelected(var modelData)
onFocusChanged: {
@@ -122,7 +130,7 @@ Widgets.NavigableFocusScope {
background: Item {}
contentItem: Item {
- implicitHeight: itemText.implicitHeight
+ implicitHeight: itemRow.implicitHeight
Rectangle {
anchors.fill: parent
@@ -130,15 +138,46 @@ Widgets.NavigableFocusScope {
visible: mouseArea.containsMouse
}
- MenuCaption {
- id: itemText
- text: root.textRole ? (Array.isArray(root.model) ? modelData[root.textRole] : model[root.textRole]) : modelData
+ RowLayout {
+ id: itemRow
anchors.fill: parent
- topPadding: VLCStyle.margin_xxsmall
- bottomPadding: VLCStyle.margin_xxsmall
- leftPadding: VLCStyle.margin_xsmall
- rightPadding: VLCStyle.margin_xsmall
- color: _colors.buttonText
+
+ MenuCaption {
+ id: isActiveText
+ Layout.preferredHeight: itemText.implicitHeight
+ Layout.preferredWidth: tickMetric.width
+ Layout.leftMargin: VLCStyle.margin_xsmall
+
+ text: root.criteriaRole ? (Array.isArray(root.model) ? (modelData[root.criteriaRole] === sortKey ? "✓" : "")
+ : (model[root.criteriaRole] === sortKey ? "✓" : "")) : ""
+ color: _colors.buttonText
+
+ TextMetrics {
+ id: tickMetric
+ text: "✓"
+ }
+ }
+
+ MenuCaption {
+ Layout.fillWidth: true
+ Layout.topMargin: VLCStyle.margin_xxsmall
+ Layout.bottomMargin: VLCStyle.margin_xxsmall
+ Layout.leftMargin: VLCStyle.margin_xsmall
+
+ id: itemText
+ text: root.textRole ? (Array.isArray(root.model) ? modelData[root.textRole] : model[root.textRole]) : modelData
+
+ color: _colors.buttonText
+ }
+
+ MenuCaption {
+ Layout.preferredHeight: itemText.implicitHeight
+ Layout.rightMargin: VLCStyle.margin_xsmall
+
+ text: (isActiveText.text === "" ? "" : (sortOrder === PlaylistControllerModel.SORT_ORDER_ASC ? "↓" : "↑"))
+
+ color: _colors.buttonText
+ }
}
MouseArea {
--
2.25.1
More information about the vlc-devel
mailing list