diff --git a/modules/gui/qt/Makefile.am b/modules/gui/qt/Makefile.am index 643d918df9ffe7384023f35943f03126d3e4a01e..c27dbcfbe2cb9363a5b25a29b80e83f7395e5b65 100644 --- a/modules/gui/qt/Makefile.am +++ b/modules/gui/qt/Makefile.am @@ -820,6 +820,7 @@ libqt_plugin_la_QML = \ gui/qt/player/qml/TopBar.qml \ gui/qt/player/qml/TrackInfo.qml \ gui/qt/player/qml/TracksPage.qml \ + gui/qt/player/qml/TracksPageAudio.qml \ gui/qt/player/qml/TracksPageSpeed.qml \ gui/qt/player/qml/TracksPageSubtitle.qml \ gui/qt/player/qml/ControlLayout.qml \ diff --git a/modules/gui/qt/player/qml/TracksPageAudio.qml b/modules/gui/qt/player/qml/TracksPageAudio.qml new file mode 100644 index 0000000000000000000000000000000000000000..25302e5dca920a554076c7b498fe58c0387760ee --- /dev/null +++ b/modules/gui/qt/player/qml/TracksPageAudio.qml @@ -0,0 +1,127 @@ +/***************************************************************************** + * Copyright (C) 2022 VLC authors and VideoLAN + * + * Authors: Benjamin Arnaud <bunjee@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.Layouts 1.11 + +import org.videolan.vlc 0.1 + +import "qrc:///style/" +import "qrc:///widgets/" as Widgets + +TracksPage { + id: root + + // Functions + + function textFromValue(value, locale) { + return I18n.qtr("%1 ms").arg(Number(value).toLocaleString(locale, 'f', 0)) + } + + function valueFromText(text, locale) { + return Number.fromLocaleString(locale, text.substring(0, text.length - 3)) + } + + // Children + + ColumnLayout { + anchors.left: parent.left + anchors.right: parent.right + + spacing: VLCStyle.margin_xxsmall + + Widgets.SubtitleLabel { + Layout.fillWidth: true + + text: I18n.qtr("Audio track synchronization") + + color: "white" + } + + RowLayout { + Layout.fillWidth: true + Layout.topMargin: VLCStyle.margin_large + + spacing: VLCStyle.margin_xsmall + + Widgets.MenuCaption { + Layout.fillWidth: true + Layout.alignment: Qt.AlignHCenter + + text: I18n.qtr("Audio track delay") + + color: "white" + } + + Widgets.TransparentSpinBox { + id: spinBox + + property bool update: false + + Layout.preferredWidth: VLCStyle.dp(128, VLCStyle.scale) + + stepSize: 50 + from: -10000 + + textFromValue: root.textFromValue + valueFromText: root.valueFromText + + Navigation.parentItem: root + Navigation.rightItem: reset + + Component.onCompleted: { + value = Player.audioDelayMS + + update = true + } + + onValueChanged: { + if (update === false) + return + + Player.audioDelayMS = value + } + + Connections { + target: Player + + onAudioDelayChanged: { + spinBox.update = false + + spinBox.value = Player.audioDelayMS + + spinBox.update = true + } + } + } + + Widgets.ActionButtonOverlay { + id: reset + + text: I18n.qtr("Reset") + + onClicked: spinBox.value = 0 + + Navigation.parentItem: root + Navigation.leftItem: spinBox + } + } + } +} diff --git a/modules/gui/qt/vlc.qrc b/modules/gui/qt/vlc.qrc index 1c2d26557eff2eaa3b4a176c1671d026e614b5e6..654833fca338515592751d44e443d69c1f34387d 100644 --- a/modules/gui/qt/vlc.qrc +++ b/modules/gui/qt/vlc.qrc @@ -348,6 +348,7 @@ <file alias="TrackInfo.qml">player/qml/TrackInfo.qml</file> <file alias="TracksPage.qml">player/qml/TracksPage.qml</file> <file alias="TracksPageSpeed.qml">player/qml/TracksPageSpeed.qml</file> + <file alias="TracksPageAudio.qml">player/qml/TracksPageAudio.qml</file> <file alias="TracksPageSubtitle.qml">player/qml/TracksPageSubtitle.qml</file> <file alias="ControlbarControls.qml">player/qml/ControlbarControls.qml</file> <file alias="MiniPlayer.qml">player/qml/MiniPlayer.qml</file> diff --git a/po/POTFILES.in b/po/POTFILES.in index 21f94ee7ab6953b1fe5132e6fbc1c14a1a9a9581..9dc15c38b8c4a4a3044c32aa89e39b36a73f6abc 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -873,6 +873,7 @@ modules/gui/qt/player/qml/LanguageMenu.qml modules/gui/qt/player/qml/Player.qml modules/gui/qt/player/qml/ResumeDialog.qml modules/gui/qt/player/qml/TopBar.qml +modules/gui/qt/player/qml/TracksPageAudio.qml modules/gui/qt/player/qml/TracksPageSubtitle.qml modules/gui/qt/player/qml/controlbarcontrols/TeletextWidget.qml modules/gui/qt/player/qml/controlbarcontrols/VolumeWidget.qml