[vlc-commits] [Git][videolan/vlc][master] 6 commits: qt/pixmaps: Create 'transparency' icon

Steve Lhomme (@robUx4) gitlab at videolan.org
Thu Sep 22 16:04:14 UTC 2022



Steve Lhomme pushed to branch master at VideoLAN / VLC


Commits:
ba1f22e9 by Benjamin Arnaud at 2022-09-22T13:16:35+00:00
qt/pixmaps: Create 'transparency' icon

- - - - -
7ee63907 by Benjamin Arnaud at 2022-09-22T13:16:35+00:00
qt/pixmaps: Create 'circle' icon

- - - - -
5ad00a15 by Benjamin Arnaud at 2022-09-22T13:16:35+00:00
qml: Create CheckButton

- - - - -
e17cdd06 by Benjamin Arnaud at 2022-09-22T13:16:35+00:00
qml: Create TeletextColorButton

- - - - -
12b1fe10 by Benjamin Arnaud at 2022-09-22T13:16:35+00:00
qml/controlbarcontrols: Create ControlCheckButton

- - - - -
7f43af78 by Benjamin Arnaud at 2022-09-22T13:16:35+00:00
qml/TeletextWidget: Revamp the layout and implementation

- - - - -


12 changed files:

- modules/gui/qt/Makefile.am
- modules/gui/qt/pixmaps/VLCIcons.json
- modules/gui/qt/pixmaps/VLCIcons.ttf
- + modules/gui/qt/pixmaps/icons/circle.svg
- + modules/gui/qt/pixmaps/icons/transparency.svg
- + modules/gui/qt/player/qml/controlbarcontrols/ControlCheckButton.qml
- + modules/gui/qt/player/qml/controlbarcontrols/TeletextColorButton.qml
- modules/gui/qt/player/qml/controlbarcontrols/TeletextWidget.qml
- modules/gui/qt/style/VLCIcons.qml
- modules/gui/qt/style/VLCStyle.qml
- modules/gui/qt/vlc.qrc
- + modules/gui/qt/widgets/qml/CheckButton.qml


Changes:

=====================================
modules/gui/qt/Makefile.am
=====================================
@@ -891,6 +891,7 @@ libqt_plugin_la_QML = \
 	gui/qt/player/qml/controlbarcontrols/ChapterNextButton.qml \
 	gui/qt/player/qml/controlbarcontrols/ChapterPreviousButton.qml \
 	gui/qt/player/qml/controlbarcontrols/ControlButtonPopup.qml \
+	gui/qt/player/qml/controlbarcontrols/ControlCheckButton.qml \
 	gui/qt/player/qml/controlbarcontrols/DvdMenuButton.qml \
 	gui/qt/player/qml/controlbarcontrols/ExpandingSpacerWidget.qml \
 	gui/qt/player/qml/controlbarcontrols/ExtendedSettingsButton.qml \
@@ -922,6 +923,7 @@ libqt_plugin_la_QML = \
 	gui/qt/player/qml/controlbarcontrols/SpacerWidget.qml \
 	gui/qt/player/qml/controlbarcontrols/StopButton.qml \
 	gui/qt/player/qml/controlbarcontrols/TeletextButton.qml \
+	gui/qt/player/qml/controlbarcontrols/TeletextColorButton.qml \
 	gui/qt/player/qml/controlbarcontrols/TeletextWidget.qml \
 	gui/qt/player/qml/controlbarcontrols/VolumeWidget.qml \
 	gui/qt/player/qml/controlbarcontrols/Fallback.qml \
@@ -951,6 +953,7 @@ libqt_plugin_la_QML = \
 	gui/qt/widgets/qml/BannerTabButton.qml \
 	gui/qt/widgets/qml/BusyIndicatorExt.qml \
 	gui/qt/widgets/qml/CaptionLabel.qml \
+	gui/qt/widgets/qml/CheckButton.qml \
 	gui/qt/widgets/qml/CheckedDelegate.qml \
 	gui/qt/widgets/qml/ComboBoxExt.qml \
 	gui/qt/widgets/qml/AcrylicBackground.qml \


=====================================
modules/gui/qt/pixmaps/VLCIcons.json
=====================================
@@ -68,6 +68,8 @@
         {"key":"topbar_video", "path": "./icons/topbar_video.svg"},
         {"key":"tv", "path": "./icons/tv.svg"},
         {"key":"tvtelx", "path": "./icons/tvtelx.svg"},
+        {"key":"transparency", "path": "./icons/transparency.svg"},
+        {"key":"circle", "path": "./icons/circle.svg"},
         {"key":"visualization", "path": "./icons/visualization.svg"},
         {"key":"volume_high", "path": "./icons/volume_high.svg"},
         {"key":"volume_low", "path": "./icons/volume_low.svg"},


=====================================
modules/gui/qt/pixmaps/VLCIcons.ttf
=====================================
Binary files a/modules/gui/qt/pixmaps/VLCIcons.ttf and b/modules/gui/qt/pixmaps/VLCIcons.ttf differ


=====================================
modules/gui/qt/pixmaps/icons/circle.svg
=====================================
@@ -0,0 +1,4 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<circle cx="12" cy="12" r="8" fill="black"/>
+</svg>
+


=====================================
modules/gui/qt/pixmaps/icons/transparency.svg
=====================================
@@ -0,0 +1,3 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M17.4 20C18.8359 20 20 18.8359 20 17.4L20 11C20 9.56406 18.8359 8.4 17.4 8.4H16.4V9.6H17.4C18.1732 9.6 18.8 10.2268 18.8 11L18.8 17.4C18.8 18.1732 18.1732 18.8 17.4 18.8L11 18.8C10.2268 18.8 9.6 18.1732 9.6 17.4V16.4H8.4V17.4C8.4 18.8359 9.56406 20 11 20L17.4 20ZM13 15.6C14.4359 15.6 15.6 14.4359 15.6 13L15.6 6.6C15.6 5.16406 14.4359 4 13 4L6.6 4C5.16406 4 4 5.16406 4 6.6L4 13C4 14.4359 5.16406 15.6 6.6 15.6H13ZM14.4 13C14.4 13.7732 13.7732 14.4 13 14.4L12.3754 14.4L14.4 12.3754V13ZM14.4 10.7752L10.7752 14.4L9.17521 14.4L14.4 9.17521L14.4 10.7752ZM7.47815 14.4L6.6 14.4C6.41483 14.4 6.23805 14.364 6.07627 14.2987L14.2987 6.07628C14.364 6.23806 14.4 6.41483 14.4 6.6V7.47815L7.47815 14.4ZM5.26263 13.4153C5.22193 13.2841 5.2 13.1446 5.2 13V11.9752L11.9752 5.2L13 5.2C13.1446 5.2 13.2841 5.22193 13.4153 5.26264L5.26263 13.4153ZM5.2 10.2781L5.2 8.77518L8.77518 5.2L10.2781 5.2L5.2 10.2781ZM5.2 7.07812L5.2 6.6C5.2 5.8268 5.8268 5.2 6.6 5.2H7.07813L5.2 7.07812Z" fill="#212121"/>
+</svg>


=====================================
modules/gui/qt/player/qml/controlbarcontrols/ControlCheckButton.qml
=====================================
@@ -0,0 +1,39 @@
+/*****************************************************************************
+ * Copyright (C) 2019 VLC authors and VideoLAN
+ *
+ * Authors: Benjamin Arnaud <bunjee at omega.gg>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * ( at your option ) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+import QtQuick 2.11
+
+import "qrc:///style/"
+import "qrc:///widgets/" as Widgets
+
+Widgets.CheckButton {
+    // Properties
+
+    property VLCColors colors: VLCStyle.colors
+
+    // Style
+
+    color: (checked) ? colors.accent
+                     : colors.black
+
+    colorHandle: colors.white
+
+    colorActive: colors.bgFocus
+}


=====================================
modules/gui/qt/player/qml/controlbarcontrols/TeletextColorButton.qml
=====================================
@@ -0,0 +1,35 @@
+/*****************************************************************************
+ * Copyright (C) 2019 VLC authors and VideoLAN
+ *
+ * Authors: Benjamin Arnaud <bunjee at omega.gg>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * ( at your option ) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+import QtQuick 2.11
+import QtQuick.Templates 2.4 as T
+
+import "qrc:///widgets/" as Widgets
+import "qrc:///style/"
+
+Widgets.IconControlButton {
+    // Settings
+
+    iconText: VLCIcons.circle
+
+    colorDisabled: "grey"
+
+    T.ToolTip.visible: (hovered || visualFocus)
+}


=====================================
modules/gui/qt/player/qml/controlbarcontrols/TeletextWidget.qml
=====================================
@@ -24,7 +24,6 @@ import org.videolan.vlc 0.1
 import "qrc:///widgets/" as Widgets
 import "qrc:///style/"
 
-
 T.Pane {
     id: root
 
@@ -47,52 +46,63 @@ T.Pane {
 
         spacing: VLCStyle.margin_small
 
-        Widgets.SubtitleLabel {
-            text: I18n.qtr("Teletext")
+        Item {
+            anchors.left: parent.left
+            anchors.right: parent.right
 
-            color: root.colors.text
-        }
+            height: teleActivateBtn.height
 
-        Row {
-            Widgets.IconControlButton{
+            Widgets.SubtitleLabel {
+                text: I18n.qtr("Teletext")
+
+                color: root.colors.text
+            }
+
+            ControlCheckButton {
                 id: teleActivateBtn
 
-                checked: Player.teletextEnabled
+                anchors.right: parent.right
+
+                anchors.verticalCenter: parent.verticalCenter
 
                 focus: true
 
-                iconText: VLCIcons.tv
-                text: I18n.qtr("Teletext activate")
+                checked: Player.teletextEnabled
 
                 colors: root.colors
-                color: colors.text
-
-                T.ToolTip.visible: hovered || visualFocus
 
                 Navigation.parentItem: root
                 Navigation.rightItem: teleTransparencyBtn
+                Navigation.downItem: teleTransparencyBtn
 
-                onClicked: Player.teletextEnabled = !Player.teletextEnabled
+                onCheckedChanged: Player.teletextEnabled = checked
             }
+        }
+
+        Row {
+            spacing: VLCStyle.margin_small
 
             Widgets.IconControlButton{
                 id: teleTransparencyBtn
 
+                anchors.verticalCenter: parent.verticalCenter
+
                 enabled: teleActivateBtn.checked
 
-                opacity: 0.5
+                checked: Player.teletextTransparency
 
-                iconText: VLCIcons.tvtelx
+                iconText: VLCIcons.transparency
                 text: I18n.qtr("Teletext transparency")
 
                 colors: root.colors
-                color: colors.text
 
-                T.ToolTip.visible: hovered || visualFocus
+                T.ToolTip.visible: (hovered || visualFocus)
 
                 Navigation.parentItem: root
                 Navigation.leftItem: teleActivateBtn
                 Navigation.rightItem: telePageNumber
+                Navigation.upItem: teleActivateBtn
+                Navigation.downItem: indexKeyBtn
 
                 onClicked: Player.teletextTransparency = !Player.teletextTransparency
             }
@@ -100,8 +110,10 @@ T.Pane {
             Widgets.SpinBoxExt{
                 id: telePageNumber
 
+                anchors.verticalCenter: parent.verticalCenter
+
                 // NOTE: We want a fixed size for the TextInput.
-                width: VLCStyle.dp(64, VLCStyle.scale)
+                width: VLCStyle.dp(136, VLCStyle.scale)
 
                 enabled: teleActivateBtn.checked
 
@@ -120,6 +132,8 @@ T.Pane {
                 Navigation.parentItem: root
                 Navigation.leftItem: teleTransparencyBtn
                 Navigation.rightItem: indexKeyBtn
+                Navigation.upItem: teleActivateBtn
+                Navigation.downItem: indexKeyBtn
 
                 //only update the player teletext page when the user change the value manually
                 property bool inhibitPageUpdate: true
@@ -144,107 +158,112 @@ T.Pane {
                     }
                 }
             }
+        }
+
+        Row {
+            spacing: VLCStyle.margin_small
 
             Widgets.IconControlButton{
                 id: indexKeyBtn
 
+                anchors.verticalCenter: parent.verticalCenter
+
+                width: redKeyBtn.width
+
+                size: VLCStyle.dp(32, VLCStyle.scale)
+
                 enabled: teleActivateBtn.checked
 
-                iconText: VLCIcons.record
+                iconText: VLCIcons.home
                 text: I18n.qtr("Index key")
 
                 colors: root.colors
-                color: "grey"
-                colorDisabled: "grey"
 
-                T.ToolTip.visible: hovered || visualFocus
+                T.ToolTip.visible: (hovered || visualFocus)
 
                 Navigation.parentItem: root
                 Navigation.leftItem: telePageNumber
                 Navigation.rightItem: redKeyBtn
+                Navigation.upItem: teleTransparencyBtn
 
                 onClicked: Player.teletextPage = Player.TELE_INDEX
             }
 
-            Widgets.IconControlButton{
+            TeletextColorButton {
                 id: redKeyBtn
 
+                anchors.verticalCenter: parent.verticalCenter
+
                 enabled: teleActivateBtn.checked
 
-                iconText: VLCIcons.record
                 text: I18n.qtr("Red key")
 
                 colors: root.colors
                 color: "red"
-                colorDisabled: "grey"
-
-                T.ToolTip.visible: hovered || visualFocus
 
                 Navigation.parentItem: root
                 Navigation.leftItem: indexKeyBtn
                 Navigation.rightItem: greenKeyBtn
+                Navigation.upItem: teleTransparencyBtn
 
                 onClicked: Player.teletextPage = Player.TELE_RED
             }
 
-            Widgets.IconControlButton{
+            TeletextColorButton {
                 id: greenKeyBtn
 
+                anchors.verticalCenter: parent.verticalCenter
+
                 enabled: teleActivateBtn.checked
 
-                iconText: VLCIcons.record
                 text: I18n.qtr("Green key")
 
                 colors: root.colors
                 color: "green"
-                colorDisabled: "grey"
-
-                T.ToolTip.visible: hovered || visualFocus
 
                 Navigation.parentItem: root
                 Navigation.leftItem: redKeyBtn
                 Navigation.rightItem: yellowKeyBtn
+                Navigation.upItem: teleTransparencyBtn
 
                 onClicked: Player.teletextPage = Player.TELE_GREEN
             }
 
-            Widgets.IconControlButton{
+            TeletextColorButton {
                 id: yellowKeyBtn
 
+                anchors.verticalCenter: parent.verticalCenter
+
                 enabled: teleActivateBtn.checked
 
-                iconText: VLCIcons.record
                 text: I18n.qtr("Yellow key")
 
                 colors: root.colors
                 color: "yellow"
-                colorDisabled: "grey"
-
-                T.ToolTip.visible: hovered || visualFocus
 
                 Navigation.parentItem: root
                 Navigation.leftItem: greenKeyBtn
                 Navigation.rightItem: blueKeyBtn
+                Navigation.upItem: teleTransparencyBtn
 
                 onClicked: Player.teletextPage = Player.TELE_YELLOW
             }
 
-            Widgets.IconControlButton{
+            TeletextColorButton {
                 id: blueKeyBtn
 
+                anchors.verticalCenter: parent.verticalCenter
+
                 enabled: teleActivateBtn.checked
 
-                iconText: VLCIcons.record
                 text: I18n.qtr("Blue key")
 
                 colors: root.colors
                 color: "blue"
-                colorDisabled: "grey"
-
-                T.ToolTip.visible: hovered || visualFocus
 
                 Navigation.parentItem: root
                 Navigation.leftItem: yellowKeyBtn
+                Navigation.upItem: teleTransparencyBtn
 
                 onClicked: Player.teletextPage = Player.TELE_BLUE
             }


=====================================
modules/gui/qt/style/VLCIcons.qml
=====================================
@@ -77,15 +77,17 @@ QtObject {
     readonly property string topbar_video : "\ue03d"
     readonly property string tv : "\ue03e"
     readonly property string tvtelx : "\ue03f"
-    readonly property string visualization : "\ue040"
-    readonly property string volume_high : "\ue041"
-    readonly property string volume_low : "\ue042"
-    readonly property string volume_medium : "\ue043"
-    readonly property string volume_muted : "\ue044"
-    readonly property string volume_zero : "\ue045"
-    readonly property string window_close : "\ue046"
-    readonly property string window_maximize : "\ue047"
-    readonly property string window_minimize : "\ue048"
-    readonly property string window_restore : "\ue049"
+    readonly property string transparency : "\ue040"
+    readonly property string circle : "\ue041"
+    readonly property string visualization : "\ue042"
+    readonly property string volume_high : "\ue043"
+    readonly property string volume_low : "\ue044"
+    readonly property string volume_medium : "\ue045"
+    readonly property string volume_muted : "\ue046"
+    readonly property string volume_zero : "\ue047"
+    readonly property string window_close : "\ue048"
+    readonly property string window_maximize : "\ue049"
+    readonly property string window_minimize : "\ue04a"
+    readonly property string window_restore : "\ue04b"
 
 }


=====================================
modules/gui/qt/style/VLCStyle.qml
=====================================
@@ -161,6 +161,12 @@ QtObject {
     readonly property int button_width_normal: dp(96, scale)
     readonly property int button_width_large: dp(128, scale)
 
+    readonly property int checkButton_width: dp(56, scale)
+    readonly property int checkButton_height: dp(32, scale)
+
+    readonly property int checkButton_margins: dp(4, scale)
+    readonly property int checkButton_handle_margins: dp(2, scale)
+
     readonly property int table_section_width: dp(32, scale)
     readonly property int table_section_text_margin: dp(10, scale)
 


=====================================
modules/gui/qt/vlc.qrc
=====================================
@@ -153,6 +153,7 @@
         <file alias="BusyIndicatorExt.qml">widgets/qml/BusyIndicatorExt.qml</file>
         <file alias="AcrylicBackground.qml">widgets/qml/AcrylicBackground.qml</file>
         <file alias="AnimatedBackground.qml">widgets/qml/AnimatedBackground.qml</file>
+        <file alias="CheckButton.qml">widgets/qml/CheckButton.qml</file>
         <file alias="CSDWindowButton.qml">widgets/qml/CSDWindowButton.qml</file>
         <file alias="CSDWindowButtonSet.qml">widgets/qml/CSDWindowButtonSet.qml</file>
         <file alias="CSDTitlebarTapNDrapHandler.qml">widgets/qml/CSDTitlebarTapNDrapHandler.qml</file>
@@ -321,6 +322,7 @@
         <file alias="ChapterNextButton.qml">player/qml/controlbarcontrols/ChapterNextButton.qml</file>
         <file alias="ChapterPreviousButton.qml">player/qml/controlbarcontrols/ChapterPreviousButton.qml</file>
         <file alias="ControlButtonPopup.qml">player/qml/controlbarcontrols/ControlButtonPopup.qml</file>
+        <file alias="ControlCheckButton.qml">player/qml/controlbarcontrols/ControlCheckButton.qml</file>
         <file alias="DvdMenuButton.qml">player/qml/controlbarcontrols/DvdMenuButton.qml</file>
         <file alias="ExpandingSpacerWidget.qml">player/qml/controlbarcontrols/ExpandingSpacerWidget.qml</file>
         <file alias="ExtendedSettingsButton.qml">player/qml/controlbarcontrols/ExtendedSettingsButton.qml</file>
@@ -352,6 +354,7 @@
         <file alias="SpacerWidget.qml">player/qml/controlbarcontrols/SpacerWidget.qml</file>
         <file alias="StopButton.qml">player/qml/controlbarcontrols/StopButton.qml</file>
         <file alias="TeletextButton.qml">player/qml/controlbarcontrols/TeletextButton.qml</file>
+        <file alias="TeletextColorButton.qml">player/qml/controlbarcontrols/TeletextColorButton.qml</file>
         <file alias="TeletextWidget.qml">player/qml/controlbarcontrols/TeletextWidget.qml</file>
         <file alias="VolumeWidget.qml">player/qml/controlbarcontrols/VolumeWidget.qml</file>
         <file alias="Fallback.qml">player/qml/controlbarcontrols/Fallback.qml</file>


=====================================
modules/gui/qt/widgets/qml/CheckButton.qml
=====================================
@@ -0,0 +1,194 @@
+/*****************************************************************************
+ * Copyright (C) 2019 VLC authors and VideoLAN
+ *
+ * Authors: Benjamin Arnaud <bunjee at omega.gg>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * ( at your option ) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+import QtQuick 2.11
+import QtQuick.Templates 2.4 as T
+
+import org.videolan.vlc 0.1
+
+import "qrc:///style/"
+
+T.Switch {
+    id: root
+
+    // Style
+
+    property int animationDuration: VLCStyle.duration_long
+
+    property color color: (checked) ? VLCStyle.colors.accent
+                                    : VLCStyle.colors.black
+
+    property color colorHandle: VLCStyle.colors.white
+
+    property color colorActive: VLCStyle.colors.bgFocus
+
+    // Private
+
+    property bool _update: true
+
+    // Settings
+
+    width : VLCStyle.checkButton_width
+    height: VLCStyle.checkButton_height
+
+    T.ToolTip.visible: (T.ToolTip.text && (hovered || visualFocus))
+
+    T.ToolTip.text: text
+
+    T.ToolTip.delay: VLCStyle.delayToolTipAppear
+
+    // Keys
+
+    Keys.priority: Keys.AfterItem
+
+    Keys.onPressed: Navigation.defaultKeyAction(event)
+
+    // Events
+
+    onWidthChanged: {
+        animation.stop()
+
+        if (checked)
+            handle.x = handle.drag.maximumX
+        else
+            handle.x = 0
+    }
+
+    onCheckedChanged: {
+        if (_update === false)
+            return
+
+        var from = handle.x
+        var to
+
+        if (checked)
+            to = handle.drag.maximumX
+        else
+            to = 0
+
+        _animate(from, to)
+    }
+
+    // Functions
+
+    // Private
+
+    function _applyX(x) {
+        var from = handle.x
+        var to
+
+        _update = false
+
+        if (x < width / 2) {
+            to = 0
+
+            checked = false
+        } else {
+            to = handle.drag.maximumX
+
+            checked = true
+        }
+
+        _update = true
+
+        _animate(from, to)
+    }
+
+    function _animate(from, to) {
+        if (from === to)
+            return
+
+        animation.from = from
+        animation.to   = to
+
+        animation.restart()
+    }
+
+    // Animations
+
+    NumberAnimation {
+        id: animation
+
+        target: handle
+
+        property: "x"
+
+        duration: VLCStyle.duration_short
+
+        easing.type: Easing.OutQuad
+    }
+
+    // Children
+
+    background: Rectangle {
+        visible: root.visualFocus
+
+        color: "transparent"
+
+        border.width: VLCStyle.focus_border
+
+        border.color: (visible) ? root.colorActive
+                                : VLCStyle.colors.setColorAlpha(root.colorActive, 0)
+
+        Behavior on border.color {
+            ColorAnimation {
+                duration: root.animationDuration
+            }
+        }
+    }
+
+    indicator: Rectangle {
+        anchors.fill: parent
+
+        anchors.margins: VLCStyle.checkButton_margins
+
+        radius: height
+
+        color: root.color
+
+        MouseArea {
+            id: handle
+
+            width: Math.round(root.height - VLCStyle.checkButton_margins * 2)
+            height: width
+
+            drag.target: handle
+            drag.axis  : Drag.XAxis
+
+            drag.minimumX: 0
+            drag.maximumX: parent.width - width
+
+            onClicked: root.toggle()
+
+            // NOTE: We update the position when the drag has ended.
+            drag.onActiveChanged: if (drag.active === false) root._applyX(x + width / 2)
+
+            Rectangle {
+                anchors.fill: parent
+
+                anchors.margins: VLCStyle.checkButton_handle_margins
+
+                radius: height
+
+                color: root.colorHandle
+            }
+        }
+    }
+}



View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/71bc0ae5f7866dfacdd6b16b6c08a1321811a571...7f43af78b61073bcfbbe2fab8cadd315b97c6e8a

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/71bc0ae5f7866dfacdd6b16b6c08a1321811a571...7f43af78b61073bcfbbe2fab8cadd315b97c6e8a
You're receiving this email because of your account on code.videolan.org.


VideoLAN code repository instance


More information about the vlc-commits mailing list