[vlc-commits] [Git][videolan/vlc][master] 9 commits: qml/controlbarcontrols: Create TeletextButton

Steve Lhomme (@robUx4) gitlab at videolan.org
Tue Aug 30 12:38:37 UTC 2022



Steve Lhomme pushed to branch master at VideoLAN / VLC


Commits:
ed203d0e by Benjamin Arnaud at 2022-08-30T12:16:33+00:00
qml/controlbarcontrols: Create TeletextButton

- - - - -
5cc7975d by Benjamin Arnaud at 2022-08-30T12:16:33+00:00
qml/ControlbarControls: Update TELETEXT_BUTTONS to TeletextButton.qml

- - - - -
aa3de67d by Benjamin Arnaud at 2022-08-30T12:16:33+00:00
qt/control_list_filter: Add TELETEXT_BUTTONS filter

- - - - -
d6ae5886 by Benjamin Arnaud at 2022-08-30T12:16:33+00:00
qml/NavigationWidget: Update to TeletextButton

- - - - -
99ca9c4f by Benjamin Arnaud at 2022-08-30T12:16:33+00:00
qml/TeletextWidget: Remove 'paintOnly' property

- - - - -
37a55445 by Benjamin Arnaud at 2022-08-30T12:16:33+00:00
qml/TeletextWidget: Add a SubtitleLabel for the title

- - - - -
a749fb90 by Benjamin Arnaud at 2022-08-30T12:16:33+00:00
qml/PlaybackSpeed(s): Fix keyboard navigation

- - - - -
0c1cf3bf by Benjamin Arnaud at 2022-08-30T12:16:33+00:00
qml/TeletextWidget: Update contentSize(s) implementation

- - - - -
2a02bdf3 by Benjamin Arnaud at 2022-08-30T12:16:33+00:00
qml/NavigationWidget: Fix 'row' implicit width

- - - - -


10 changed files:

- modules/gui/qt/Makefile.am
- modules/gui/qt/player/control_list_filter.cpp
- modules/gui/qt/player/qml/ControlbarControls.qml
- modules/gui/qt/player/qml/PlaybackSpeed.qml
- modules/gui/qt/player/qml/controlbarcontrols/NavigationWidget.qml
- modules/gui/qt/player/qml/controlbarcontrols/PlaybackSpeedButton.qml
- + modules/gui/qt/player/qml/controlbarcontrols/TeletextButton.qml
- modules/gui/qt/player/qml/controlbarcontrols/TeletextWidget.qml
- modules/gui/qt/vlc.qrc
- po/POTFILES.in


Changes:

=====================================
modules/gui/qt/Makefile.am
=====================================
@@ -913,6 +913,7 @@ libqt_plugin_la_QML = \
 	gui/qt/player/qml/controlbarcontrols/SnapshotButton.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/TeletextWidget.qml \
 	gui/qt/player/qml/controlbarcontrols/VolumeWidget.qml \
 	gui/qt/player/qml/controlbarcontrols/Fallback.qml \


=====================================
modules/gui/qt/player/control_list_filter.cpp
=====================================
@@ -69,6 +69,10 @@ bool ControlListFilter::filterAcceptsRow(int source_row, const QModelIndex &) co
     {
         return m_player->hasPrograms();
     }
+    else if (type == ControlListModel::TELETEXT_BUTTONS)
+    {
+        return m_player->isTeletextAvailable();
+    }
 
     return true;
 }


=====================================
modules/gui/qt/player/qml/ControlbarControls.qml
=====================================
@@ -58,8 +58,8 @@ QtObject {
         { id: ControlListModel.VOLUME, file: "VolumeWidget.qml", label: VLCIcons.volume_high, text: I18n.qtr("Volume Widget") },
         { id: ControlListModel.NAVIGATION_BUTTONS, file: "NavigationWidget.qml", label: VLCIcons.dvd_menu, text: I18n.qtr("Navigation") },
         { id: ControlListModel.DVD_MENUS_BUTTON, file: "DvdMenuButton.qml", label: VLCIcons.dvd_menu, text: I18n.qtr("DVD menus") },
-        { id: ControlListModel.TELETEXT_BUTTONS, file: "TeletextWidget.qml", label: VLCIcons.tvtelx, text: I18n.qtr("Teletext") },
         { id: ControlListModel.PROGRAM_BUTTON, file: "ProgramButton.qml", label: VLCIcons.bookmark, text: I18n.qtr("Program Button") },
+        { id: ControlListModel.TELETEXT_BUTTONS, file: "TeletextButton.qml", label: VLCIcons.tvtelx, text: I18n.qtr("Teletext") },
         { id: ControlListModel.RENDERER_BUTTON, file: "RendererButton.qml", label: VLCIcons.renderer, text: I18n.qtr("Renderer Button") },
         { id: ControlListModel.ASPECT_RATIO_COMBOBOX, file: "AspectRatioWidget.qml", label: VLCIcons.aspect_ratio, text: I18n.qtr("Aspect Ratio") },
         { id: ControlListModel.WIDGET_SPACER, file: "SpacerWidget.qml", label: VLCIcons.space, text: I18n.qtr("Spacer") },


=====================================
modules/gui/qt/player/qml/PlaybackSpeed.qml
=====================================
@@ -202,7 +202,7 @@ ColumnLayout {
 
             focus: true
 
-            Navigation.parentItem: rowB
+            Navigation.parentItem: rowA
             Navigation.downItem: slider
 
             onClicked: slider.value = 0
@@ -333,12 +333,10 @@ ColumnLayout {
             bgColor: root.colors.button
             borderColor: root.colors.buttonBorder
 
-            // NOTE: Applying the right theme to the ComboBox.
             Navigation.parentItem: rowB
 
-            // NOTE: This makes the navigation convenient since 'up' is changing the comboBox value.
+            // NOTE: This makes the navigation possible since 'up' is changing the comboBox value.
             Navigation.leftItem: slider
-            Navigation.rightItem: slider
 
             Component.onCompleted: {
                 for (var i = 0; i < _model.length; i++) {


=====================================
modules/gui/qt/player/qml/controlbarcontrols/NavigationWidget.qml
=====================================
@@ -41,6 +41,10 @@ Templates.Pane {
 
     readonly property string _controlPath : "qrc:///player/controlbarcontrols/"
 
+    // Signals
+
+    signal requestLockUnlockAutoHide(bool lock)
+
     // Settings
 
     implicitWidth: contentWidth + leftPadding + rightPadding
@@ -65,6 +69,16 @@ Templates.Pane {
         item.Navigation.parentItem = Qt.binding(function() { return loader })
     }
 
+    function _applyItemLock(loader, item) {
+        if (item === null) return
+
+        _applyItem(loader, item)
+
+        item.requestLockUnlockAutoHide.connect(function(lock) {
+            controlLayout.requestLockUnlockAutoHide(lock)
+        })
+    }
+
     // Children
 
     Row {
@@ -77,6 +91,9 @@ Templates.Pane {
 
             anchors.verticalCenter: parent.verticalCenter
 
+            // NOTE: This is required for the implicitWidth.
+            visible: (source != "")
+
             focus: (item && item.enabled)
 
             // NOTE: We display the 'menu button' as a placeholder for the customize dialog.
@@ -102,6 +119,9 @@ Templates.Pane {
 
             anchors.verticalCenter: parent.verticalCenter
 
+            // NOTE: This is required for the implicitWidth.
+            visible: (source != "")
+
             focus: (item && item.enabled && loaderA.focus === false)
 
             source: (Player.hasPrograms
@@ -113,15 +133,7 @@ Templates.Pane {
             Navigation.leftItem: loaderA.item
             Navigation.rightItem: loaderC.item
 
-            onLoaded: {
-                if (item === null) return
-
-                _applyItem(loaderB, item)
-
-                item.requestLockUnlockAutoHide.connect(function(lock) {
-                    controlLayout.requestLockUnlockAutoHide(lock)
-                })
-            }
+            onLoaded: _applyItemLock(loaderB, item)
         }
 
         Loader {
@@ -129,18 +141,21 @@ Templates.Pane {
 
             anchors.verticalCenter: parent.verticalCenter
 
+            // NOTE: This is required for the implicitWidth.
+            visible: (source != "")
+
             focus: (item && item.enabled && (loaderA.focus === false && loaderB.focus === false))
 
             source: (Player.isTeletextAvailable
                      &&
-                     root.paintOnly === false) ? root._controlPath + "TeletextWidget.qml" : ""
+                     root.paintOnly == false) ? _controlPath + "TeletextButton.qml" : ""
 
             Navigation.parentItem: root
 
             Navigation.leftItem: (loaderB.item) ? loaderB.item
                                                 : loaderA.item
 
-            onLoaded: if (item) _applyItem(loaderC, item)
+            onLoaded: _applyItemLock(loaderC, item)
         }
     }
 }


=====================================
modules/gui/qt/player/qml/controlbarcontrols/PlaybackSpeedButton.qml
=====================================
@@ -38,6 +38,20 @@ Widgets.IconControlButton {
 
     color: (popup.visible) ? colors.accent : colors.playerControlBarFg
 
+    // FIXME: We can't use upItem because a Popup is not an Item.
+    Navigation.upAction: function() {
+        if (popup.visible) {
+            popup.forceActiveFocus(Qt.TabFocusReason)
+
+            return
+        }
+
+        var parent = Navigation.parentItem;
+
+        if (parent)
+            parent.Navigation.defaultNavigationUp()
+    }
+
     onClicked: popup.open()
 
     Popup {
@@ -115,6 +129,9 @@ Widgets.IconControlButton {
             colors: root.colors
 
             Navigation.parentItem: root
+
+            // NOTE: Mapping the right direction because the down action triggers the ComboBox.
+            Navigation.rightItem: root
         }
     }
 


=====================================
modules/gui/qt/player/qml/controlbarcontrols/TeletextButton.qml
=====================================
@@ -0,0 +1,160 @@
+/*****************************************************************************
+ * 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.Controls 2.4
+
+import org.videolan.vlc 0.1
+
+import "qrc:///style/"
+import "qrc:///widgets/" as Widgets
+import "qrc:///util/Helpers.js" as Helpers
+
+Widgets.IconControlButton {
+    id: root
+
+    // Signals
+
+    signal requestLockUnlockAutoHide(bool lock)
+
+    // Properties
+
+    // Private
+
+    readonly property bool _isCurrentViewPlayer: (paintOnly === false
+                                                  &&
+                                                  History.current.name === "player")
+
+    // Settings
+
+    enabled: Player.isTeletextAvailable
+
+    iconText: VLCIcons.tv
+
+    text: I18n.qtr("Teletext")
+
+    color: (popup.visible) ? colors.accent : colors.playerControlBarFg
+
+    // FIXME: We can't use upItem because a Popup is not an Item.
+    Navigation.upAction: function() {
+        if (popup.visible) {
+            popup.forceActiveFocus(Qt.TabFocusReason)
+
+            return
+        }
+
+        var parent = Navigation.parentItem;
+
+        if (parent)
+            parent.Navigation.defaultNavigationUp()
+    }
+
+    // Events
+
+    onClicked: popup.open()
+
+    // Connections
+
+    Connections {
+        target: (popup.visible) ? popup.parent : null
+
+        onWidthChanged: _updatePosition()
+        onHeightChanged: _updatePosition()
+    }
+
+    // Functions
+
+    // Private
+
+    function _updatePosition() {
+        var parent = popup.parent
+
+        var position = parent.mapFromItem(root, x, y)
+
+        var popupX = Math.round(position.x - ((popup.width - width) / 2))
+
+        var minimum = VLCStyle.applicationHorizontalMargin + VLCStyle.margin_xxsmall
+
+        var maximum = parent.width - popup.width - minimum
+
+        popup.x = Helpers.clamp(popupX, minimum, maximum)
+
+        popup.y = position.y - popup.height - VLCStyle.margin_xxsmall
+    }
+
+    // Children
+
+    Popup {
+        id: popup
+
+        parent: (root._isCurrentViewPlayer) ? rootPlayer : g_root
+
+        width: VLCStyle.dp(256, VLCStyle.scale)
+        height: implicitHeight
+
+        padding: VLCStyle.margin_small
+
+        z: 1
+
+        focus: true
+
+        modal: true
+
+        // NOTE: Popup.CloseOnPressOutside doesn't work with non-model Popup on Qt < 5.15.
+        closePolicy: (Popup.CloseOnPressOutside | Popup.CloseOnEscape)
+
+        Overlay.modal: null
+
+        onOpened: {
+            root._updatePosition()
+
+            root.requestLockUnlockAutoHide(true)
+
+            if (root._isCurrentViewPlayer)
+                rootPlayer.menu = popup
+        }
+
+        onClosed: {
+            root.requestLockUnlockAutoHide(false)
+
+            root.forceActiveFocus()
+
+            if (root._isCurrentViewPlayer)
+                rootPlayer.menu = undefined
+        }
+
+        onWidthChanged: if (visible) root._updatePosition()
+        onHeightChanged: if (visible) root._updatePosition()
+
+        background: Rectangle {
+            opacity: 0.85
+
+            color: colors.bg
+        }
+
+        contentItem: TeletextWidget {
+            colors: root.colors
+
+            Navigation.parentItem: root
+
+            Navigation.downItem: root
+        }
+    }
+}


=====================================
modules/gui/qt/player/qml/controlbarcontrols/TeletextWidget.qml
=====================================
@@ -29,230 +29,225 @@ T.Pane {
     id: root
 
     property VLCColors colors: VLCStyle.colors
-    property bool paintOnly: false
 
-    enabled: Player.isTeletextAvailable
+    implicitWidth: Math.max(background ? background.implicitWidth : 0,
+                            contentWidth + leftPadding + rightPadding)
 
-    implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding)
-    implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding)
+    implicitHeight: Math.max(background ? background.implicitHeight : 0,
+                             contentHeight + topPadding + bottomPadding)
 
-    contentWidth: teleWidget.implicitWidth
-    contentHeight: teleWidget.implicitHeight
+    contentWidth: column.implicitWidth
+    contentHeight: column.implicitHeight
 
     Keys.priority: Keys.AfterItem
     Keys.onPressed: Navigation.defaultKeyAction(event)
 
-    Row {
-        id: teleWidget
-        anchors.fill: parent
+    Column {
+        id: column
 
-        Widgets.IconControlButton{
-            id: teleActivateBtn
+        spacing: VLCStyle.margin_small
 
-            paintOnly: root.paintOnly
+        Widgets.SubtitleLabel {
+            text: I18n.qtr("Teletext")
 
-            checked: Player.teletextEnabled
-
-            focus: true
-
-            iconText: VLCIcons.tv
-            text: I18n.qtr("Teletext activate")
-
-            colors: root.colors
-            color: colors.text
-
-            T.ToolTip.visible: hovered || visualFocus
+            color: root.colors.text
+        }
 
-            Navigation.parentItem: root
-            Navigation.rightItem: teleTransparencyBtn
+        Row {
+            Widgets.IconControlButton{
+                id: teleActivateBtn
 
-            onClicked: Player.teletextEnabled = !Player.teletextEnabled
-        }
+                checked: Player.teletextEnabled
 
-        Widgets.IconControlButton{
-            id: teleTransparencyBtn
+                focus: true
 
-            paintOnly: root.paintOnly
+                iconText: VLCIcons.tv
+                text: I18n.qtr("Teletext activate")
 
-            enabled: teleActivateBtn.checked
+                colors: root.colors
+                color: colors.text
 
-            opacity: 0.5
+                T.ToolTip.visible: hovered || visualFocus
 
-            iconText: VLCIcons.tvtelx
-            text: I18n.qtr("Teletext transparency")
+                Navigation.parentItem: root
+                Navigation.rightItem: teleTransparencyBtn
 
-            colors: root.colors
-            color: colors.text
+                onClicked: Player.teletextEnabled = !Player.teletextEnabled
+            }
 
-            T.ToolTip.visible: hovered || visualFocus
+            Widgets.IconControlButton{
+                id: teleTransparencyBtn
 
-            Navigation.parentItem: root
-            Navigation.leftItem: teleActivateBtn
-            Navigation.rightItem: telePageNumber
+                enabled: teleActivateBtn.checked
 
-            onClicked: Player.teletextTransparency = !Player.teletextTransparency
-        }
+                opacity: 0.5
 
-        Widgets.SpinBoxExt{
-            id: telePageNumber
+                iconText: VLCIcons.tvtelx
+                text: I18n.qtr("Teletext transparency")
 
-            // NOTE: We want a fixed size for the TextInput.
-            width: VLCStyle.dp(64, VLCStyle.scale)
+                colors: root.colors
+                color: colors.text
 
-            enabled: teleActivateBtn.checked
+                T.ToolTip.visible: hovered || visualFocus
 
-            from: 100
-            to: 899
+                Navigation.parentItem: root
+                Navigation.leftItem: teleActivateBtn
+                Navigation.rightItem: telePageNumber
 
-            validator: IntValidator {
-                bottom: telePageNumber.from
-                top: telePageNumber.to
+                onClicked: Player.teletextTransparency = !Player.teletextTransparency
             }
 
-            editable: true
-            textColor: colors.text
-            bgColor: colors.bg
-
-            Navigation.parentItem: root
-            Navigation.leftItem: teleTransparencyBtn
-            Navigation.rightItem: indexKeyBtn
+            Widgets.SpinBoxExt{
+                id: telePageNumber
 
-            //only update the player teletext page when the user change the value manually
-            property bool inhibitPageUpdate: true
+                // NOTE: We want a fixed size for the TextInput.
+                width: VLCStyle.dp(64, VLCStyle.scale)
 
-            onValueChanged: {
-                if (inhibitPageUpdate)
-                    return
-                Player.teletextPage = value
-            }
+                enabled: teleActivateBtn.checked
 
-            Component.onCompleted: {
-                value = Player.teletextPage
-                inhibitPageUpdate = false
-            }
+                from: 100
+                to: 899
 
-            Connections {
-                target: Player
-                onTeletextPageChanged: {
-                    telePageNumber.inhibitPageUpdate = true
-                    telePageNumber.value = Player.teletextPage
-                    telePageNumber.inhibitPageUpdate = false
+                validator: IntValidator {
+                    bottom: telePageNumber.from
+                    top: telePageNumber.to
                 }
-            }
-        }
 
-        Widgets.IconControlButton{
-            id: indexKeyBtn
+                editable: true
+                textColor: colors.text
+                bgColor: colors.bg
 
-            paintOnly: root.paintOnly
+                Navigation.parentItem: root
+                Navigation.leftItem: teleTransparencyBtn
+                Navigation.rightItem: indexKeyBtn
 
-            enabled: teleActivateBtn.checked
+                //only update the player teletext page when the user change the value manually
+                property bool inhibitPageUpdate: true
 
-            iconText: VLCIcons.record
-            text: I18n.qtr("Index key")
+                onValueChanged: {
+                    if (inhibitPageUpdate)
+                        return
+                    Player.teletextPage = value
+                }
 
-            colors: root.colors
-            color: "grey"
-            colorDisabled: "grey"
+                Component.onCompleted: {
+                    value = Player.teletextPage
+                    inhibitPageUpdate = false
+                }
 
-            T.ToolTip.visible: hovered || visualFocus
+                Connections {
+                    target: Player
+                    onTeletextPageChanged: {
+                        telePageNumber.inhibitPageUpdate = true
+                        telePageNumber.value = Player.teletextPage
+                        telePageNumber.inhibitPageUpdate = false
+                    }
+                }
+            }
 
-            Navigation.parentItem: root
-            Navigation.leftItem: telePageNumber
-            Navigation.rightItem: redKeyBtn
+            Widgets.IconControlButton{
+                id: indexKeyBtn
 
-            onClicked: Player.teletextPage = Player.TELE_INDEX
-        }
+                enabled: teleActivateBtn.checked
 
-        Widgets.IconControlButton{
-            id: redKeyBtn
+                iconText: VLCIcons.record
+                text: I18n.qtr("Index key")
 
-            paintOnly: root.paintOnly
+                colors: root.colors
+                color: "grey"
+                colorDisabled: "grey"
 
-            enabled: teleActivateBtn.checked
+                T.ToolTip.visible: hovered || visualFocus
 
-            iconText: VLCIcons.record
-            text: I18n.qtr("Red key")
+                Navigation.parentItem: root
+                Navigation.leftItem: telePageNumber
+                Navigation.rightItem: redKeyBtn
 
-            colors: root.colors
-            color: "red"
-            colorDisabled: "grey"
+                onClicked: Player.teletextPage = Player.TELE_INDEX
+            }
 
-            T.ToolTip.visible: hovered || visualFocus
+            Widgets.IconControlButton{
+                id: redKeyBtn
 
-            Navigation.parentItem: root
-            Navigation.leftItem: indexKeyBtn
-            Navigation.rightItem: greenKeyBtn
+                enabled: teleActivateBtn.checked
 
-            onClicked: Player.teletextPage = Player.TELE_RED
-        }
+                iconText: VLCIcons.record
+                text: I18n.qtr("Red key")
 
-        Widgets.IconControlButton{
-            id: greenKeyBtn
+                colors: root.colors
+                color: "red"
+                colorDisabled: "grey"
 
-            paintOnly: root.paintOnly
+                T.ToolTip.visible: hovered || visualFocus
 
-            enabled: teleActivateBtn.checked
+                Navigation.parentItem: root
+                Navigation.leftItem: indexKeyBtn
+                Navigation.rightItem: greenKeyBtn
 
-            iconText: VLCIcons.record
-            text: I18n.qtr("Green key")
+                onClicked: Player.teletextPage = Player.TELE_RED
+            }
 
-            colors: root.colors
-            color: "green"
-            colorDisabled: "grey"
+            Widgets.IconControlButton{
+                id: greenKeyBtn
 
-            T.ToolTip.visible: hovered || visualFocus
+                enabled: teleActivateBtn.checked
 
-            Navigation.parentItem: root
-            Navigation.leftItem: redKeyBtn
-            Navigation.rightItem: yellowKeyBtn
+                iconText: VLCIcons.record
+                text: I18n.qtr("Green key")
 
-            onClicked: Player.teletextPage = Player.TELE_GREEN
-        }
+                colors: root.colors
+                color: "green"
+                colorDisabled: "grey"
 
-        Widgets.IconControlButton{
-            id: yellowKeyBtn
+                T.ToolTip.visible: hovered || visualFocus
 
-            paintOnly: root.paintOnly
+                Navigation.parentItem: root
+                Navigation.leftItem: redKeyBtn
+                Navigation.rightItem: yellowKeyBtn
 
-            enabled: teleActivateBtn.checked
+                onClicked: Player.teletextPage = Player.TELE_GREEN
+            }
 
-            iconText: VLCIcons.record
-            text: I18n.qtr("Yellow key")
+            Widgets.IconControlButton{
+                id: yellowKeyBtn
 
-            colors: root.colors
-            color: "yellow"
-            colorDisabled: "grey"
+                enabled: teleActivateBtn.checked
 
-            T.ToolTip.visible: hovered || visualFocus
+                iconText: VLCIcons.record
+                text: I18n.qtr("Yellow key")
 
-            Navigation.parentItem: root
-            Navigation.leftItem: greenKeyBtn
-            Navigation.rightItem: blueKeyBtn
+                colors: root.colors
+                color: "yellow"
+                colorDisabled: "grey"
 
-            onClicked: Player.teletextPage = Player.TELE_YELLOW
-        }
+                T.ToolTip.visible: hovered || visualFocus
 
-        Widgets.IconControlButton{
-            id: blueKeyBtn
+                Navigation.parentItem: root
+                Navigation.leftItem: greenKeyBtn
+                Navigation.rightItem: blueKeyBtn
 
-            paintOnly: root.paintOnly
+                onClicked: Player.teletextPage = Player.TELE_YELLOW
+            }
+
+            Widgets.IconControlButton{
+                id: blueKeyBtn
 
-            enabled: teleActivateBtn.checked
+                enabled: teleActivateBtn.checked
 
-            iconText: VLCIcons.record
-            text: I18n.qtr("Blue key")
+                iconText: VLCIcons.record
+                text: I18n.qtr("Blue key")
 
-            colors: root.colors
-            color: "blue"
-            colorDisabled: "grey"
+                colors: root.colors
+                color: "blue"
+                colorDisabled: "grey"
 
-            T.ToolTip.visible: hovered || visualFocus
+                T.ToolTip.visible: hovered || visualFocus
 
-            Navigation.parentItem: root
-            Navigation.leftItem: yellowKeyBtn
+                Navigation.parentItem: root
+                Navigation.leftItem: yellowKeyBtn
 
-            onClicked: Player.teletextPage = Player.TELE_BLUE
+                onClicked: Player.teletextPage = Player.TELE_BLUE
+            }
         }
     }
 }


=====================================
modules/gui/qt/vlc.qrc
=====================================
@@ -345,6 +345,7 @@
         <file alias="SnapshotButton.qml">player/qml/controlbarcontrols/SnapshotButton.qml</file>
         <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="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>


=====================================
po/POTFILES.in
=====================================
@@ -887,6 +887,7 @@ modules/gui/qt/player/qml/controlbarcontrols/SlowerButton.qml
 modules/gui/qt/player/qml/controlbarcontrols/SnapshotButton.qml
 modules/gui/qt/player/qml/controlbarcontrols/SpacerWidget.qml
 modules/gui/qt/player/qml/controlbarcontrols/StopButton.qml
+modules/gui/qt/player/qml/controlbarcontrols/TeletextButton.qml
 modules/gui/qt/player/qml/controlbarcontrols/TeletextWidget.qml
 modules/gui/qt/player/qml/controlbarcontrols/VolumeWidget.qml
 modules/gui/qt/playlist/qml/PlaylistDelegate.qml



View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/35acecef6d0fac2879c1507c2362f2067d14aeb6...2a02bdf338061b98fbe8ad3d5bd6da1a21090329

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/35acecef6d0fac2879c1507c2362f2067d14aeb6...2a02bdf338061b98fbe8ad3d5bd6da1a21090329
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