Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • videolan/vlc
  • chouquette/vlc
  • bakiewicz.marek122/vlc
  • devnexen/vlc
  • rohanrajpal/vlc
  • blurrrb/vlc
  • gsoc/gsoc2019/darkapex/vlc
  • b1ue/vlc
  • fkuehne/vlc
  • magsoft/vlc
  • chub/vlc
  • cramiro9/vlc
  • robUx4/vlc
  • rom1v/vlc
  • akshayaky/vlc
  • tmk907/vlc
  • akymaster/vlc
  • govind.sharma/vlc
  • psilokos/vlc
  • xjbeta/vlc
  • jahan/vlc
  • 1480c1/vlc
  • amanchande/vlc
  • aaqib/vlc
  • rist/vlc
  • apol/vlc
  • mindfreeze/vlc
  • alexandre-janniaux/vlc
  • sandsmark/vlc
  • jagannatharjun/vlc
  • gsoc/gsoc2020/matiaslgonzalez/vlc
  • gsoc/gsoc2020/jagannatharjun/vlc
  • mstorsjo/vlc
  • gsoc/gsoc2020/vedenta/vlc
  • gsoc/gsoc2020/arnav-ishaan/vlc
  • gsoc/gsoc2020/andreduong/vlc
  • fuzun/vlc
  • gsoc/gsoc2020/vatsin/vlc
  • gsoc/gsoc2020/sagid/vlc
  • yaron/vlc
  • Phoenix/vlc
  • Garf/vlc
  • ePiratWorkarounds/vlc
  • tguillem/vlc
  • jnqnfe/vlc
  • mdc/vlc
  • Vedaa/vlc
  • rasa/vlc
  • quink/vlc
  • yealo/vlc
  • aleksey_ak/vlc
  • ePirat/vlc
  • ilya.yanok/vlc
  • asenat/vlc
  • m/vlc
  • bunjee/vlc
  • BLumia/vlc
  • sagudev/vlc
  • hamedmonji30/vlc
  • nullgemm/vlc
  • DivyamAhuja/vlc
  • thesamesam/vlc
  • dag7/vlc
  • snehil101/vlc
  • haasn/vlc
  • jbk/vlc
  • ValZapod/vlc
  • mfkl/vlc
  • WangChuan/vlc
  • core1024/vlc
  • GhostVaibhav/vlc
  • dfuhrmann/vlc
  • davide.prade/vlc
  • tmatth/vlc
  • Courmisch/vlc
  • zouya/vlc
  • hpi/vlc
  • EwoutH/vlc
  • aleung27/vlc
  • hengwu0/vlc
  • saladin/vlc
  • ashuio/vlc
  • richselwood/vlc
  • verma16Ayush/vlc
  • chemicalflash/vlc
  • PoignardAzur/vlc
  • huangjieNT/vlc
  • Blake-Haydon/vlc
  • AnuthaDev/vlc
  • gsoc/gsoc2021/mpd/vlc
  • nicolas_lequec/vlc
  • sambassaly/vlc
  • thresh/vlc
  • bonniegong/vlc
  • myaashish/vlc
  • stavros.vagionitis/vlc
  • ileoo/vlc
  • louis-santucci/vlc
  • cchristiansen/vlc
  • sabyasachi07/vlc
  • AbduAmeen/vlc
  • ashishb0410/vlc
  • urbanhusky/vlc
  • davidepietrasanta/vlc
  • riksleutelstad/vlc
  • jeremyVignelles/vlc
  • komh/vlc
  • iamjithinjohn/vlc
  • JohannesKauffmann/vlc2
  • kunglao/vlc
  • natzberg/vlc
  • jill/vlc
  • cwendling/vlc
  • adufou/vlc
  • ErwanAirone/vlc
  • HasinduDilshan10/vlc
  • vagrantc/vlc
  • rafiv/macos-bigsur-icon
  • Aymeriic/vlc
  • saranshg20/vlc
  • metzlove24/vlc
  • linkfanel/vlc
  • Ds886/vlc
  • metehan-arslan/vlc
  • Skantes/vlc
  • kgsandundananjaya96/vlc
  • mitchcapper/vlc
  • advaitgupta/vlc
  • StefanBruens/vlc
  • ratajs/vlc
  • T.M.F.B.3761/vlc
  • m222059/vlc
  • casemerrick/vlc
  • joshuaword2alt/vlc
  • sjwaddy/vlc
  • dima/vlc
  • Ybalrid/vlc
  • umxprime/vlc
  • eschmidt/vlc
  • vannieuwenhuysenmichelle/vlc
  • badcf00d/vlc
  • wesinator/vlc
  • louis/vlc
  • xqq/vlc
  • EmperorYP7/vlc
  • NicoLiam/vlc
  • loveleen/vlc
  • rofferom/vlc
  • rbultje/vlc
  • TheUnamed/vlc
  • pratiksharma341/vlc
  • Saurab17/vlc
  • purist.coder/vlc
  • Shuicheng/vlc
  • mdrrubel292/vlc
  • silverbleu00/vlc
  • metif12/vlc
  • asher-m/vlc
  • jeffk/vlc
  • Brandonbr1/vlc
  • beautyyuyanli/vlc
  • rego21/vlc
  • muyangren907/vlc
  • collectionbylawrencejason/vlc
  • evelez/vlc
  • GSMgeeth/vlc
  • Oneric/vlc
  • TJ5/vlc
  • XuanTung95/vlc
  • darrenjenny21/vlc
  • Trenly/vlc
  • RockyTDR/vlc
  • mjakubowski/vlc
  • caprica/vlc
  • ForteFrankie/vlc
  • seannamiller19/vlc
  • junlon2006/vlc
  • kiwiren6666/vlc
  • iuseiphonexs/vlc
  • fenngtun/vlc
  • Rajdutt999/vlc
  • typx/vlc
  • leon.vitanos/vlc
  • robertogarci0938/vlc
  • gsoc/gsoc2022/luc65r/vlc-mpd
  • skeller/vlc
  • MCJack123/vlc
  • luc65r/vlc-mpd
  • popov895/vlc
  • claucambra/vlc
  • brad/vlc
  • matthewmurua88/vlc
  • Tomas8874/vlc
  • philenotfound/vlc
  • makita-do3/vlc
  • LZXCorp/vlc
  • mar0x/vlc
  • senojetkennedy0102/vlc
  • shaneb243/vlc
  • ahmadbader/vlc
  • rajduttcse26/vlc-audio-filters
  • Juniorzito8415/vlc
  • achernyakov/vlc
  • lucasjetgroup/vlc
  • pupdoggy666/vlc
  • gmde9363/vlc
  • alexnwayne/vlc
  • bahareebrahimi781/vlc
  • hamad633666/vlc
  • umghof3112/vlc
  • joe0199771874/vlc
  • Octocats66666666/vlc
  • jjm_223/vlc
  • btech10110.19/vlc
  • sunnykfc028/vlc-audio-filters
  • loic/vlc
  • nguyenminhducmx1/vlc
  • JanekKrueger/vlc
  • bstubbington2/vlc
  • rcombs/vlc
  • Ordissimo/vlc
  • king7532/vlc
  • noobsauce101/vlc
  • schong0525/vlc
  • myQwil/vlc
  • apisbg91/vlc
  • geeboy0101017/vlc
  • kim.faughey/vlc
  • nurupo/vlc
  • yyusea/vlc
  • 0711235879.khco/vlc
  • ialo/vlc
  • iloveyeye2/vlc
  • gdtdftdqtd/vlc
  • leandroconsiglio/vlc
  • AndyHTML2012/vlc
  • ncz/vlc
  • lucenticus/vlc
  • knr1931/vlc
  • kjoonlee/vlc
  • chandrakant100/vlc-qt
  • johge42/vlc
  • polter/vlc
  • hexchain/vlc
  • Tushwrld/vlc
  • mztea928/vlc
  • jbelloncastro/vlc
  • alvinhochun/vlc
  • ghostpiratecrow/vlc
  • ujjwaltwitx/vlc
  • alexsonarin06/vlc
  • adrianbon76/vlc
  • altsod/vlc
  • damien.lucas44/vlc
  • dmytrivtaisa/vlc
  • utk202/vlc
  • aaxhrj/vlc
  • thomas.hermes/vlc
  • structurenewworldorder/vlc
  • slomo/vlc
  • wantlamy/vlc
  • musc.o3cminc/vlc
  • thebarshablog/vlc
  • kerrick/vlc
  • kratos142518/vlc
  • leogps/vlc
  • vacantron/vlc
  • luna_koly/vlc
  • Ratio2/vlc
  • anuoshemohammad/vlc
  • apsun/vlc
  • aaa1115910/vlc
  • alimotmoyo/vlc
  • Ambossmann/vlc
  • Sam-LearnsToCode/vlc
  • Chilledheart/vlc
  • Labnann/vlc
  • ktcoooot1/vlc
  • mohit-marathe/vlc
  • johnddx/vlc
  • manstabuk/vlc
  • Omar-ahmed314/vlc
  • vineethkm/vlc
  • 9Enemi86/vlc
  • radoslav.m.panteleev/vlc
  • ashishami2002/vlc
  • Corbax/vlc
  • firnasahmed/vlc
  • pelayarmalam4/vlc
  • c0ff330k/vlc
  • shikhindahikar/vlc
  • l342723951/vlc
  • christianschwandner/vlc
  • douniwan5788/vlc
  • 7damian7/vlc
  • ferdnyc/vlc
  • f.ales1/vlc
  • pandagby/vlc
  • BaaBaa/vlc
  • jewe37/vlc
  • w00drow/vlc
  • russelltg/vlc
  • ironicallygod/vlc
  • soumyaDghosh/vlc
  • linzihao1999/vlc
  • deyayush6/vlc
  • mibi88/vlc
  • newabdallah10/vlc
  • jhorbincolombia/vlc
  • rimvihaqueshupto/vlc
  • andrewkhon98/vlc
  • fab78/vlc
  • lapaz17/vlc
  • amanna13/vlc
  • mdakram28/vlc
  • 07jw1980/vlc
  • sohamgupta/vlc
  • Eson-Jia1/vlc
  • Sumou/vlc
  • vikram-kangotra/vlc
  • chalice191/vlc
  • olivercalder/vlc
  • aaasg4001/vlc
  • zipdox/vlc
  • kwizart/vlc
  • Dragon-S/vlc
  • jdemeule/vlc
  • gabriel_lt/vlc
  • locutusofborg/vlc
  • sammirata/vlc-librist
  • another/vlc
  • Benjamin_Loison/vlc
  • ahmedmoselhi/vlc
  • petergaal/vlc
  • huynhsontung/vlc
  • dariusmihut/vlc
  • tvermaashutosh/vlc
  • buti/vlc
  • Niram7777/vlc
  • rohan-here/vlc
  • balaji-sivasakthi/vlc
  • rlindner81/vlc
  • Kakadus/vlc
  • djain/vlc
  • ABBurmeister/vlc
  • craighuggins/vlc
  • orbea/vlc
  • maxos/vlc
  • aakarshmj/vlc
  • kblaschke/vlc
  • ankitm/vlc
  • advait-0/vlc
  • mohak2003/vlc
  • yselkowitz/vlc
  • AZM999/vlc-azm
  • andrey.turkin/vlc
  • Disha-Baghel/vlc
  • nowrep/vlc
  • Apeng/vlc
  • Choucroute_melba/vlc
  • autra/vlc
  • eclipseo/vlc
  • fhuber/vlc
  • olafhering/vlc
  • sdasda7777/vlc
  • 1div0/vlc
  • skosnits/vlc-extended-playlist-support
  • dnicolson/vlc
  • Timshel/vlc
  • octopols/vlc
  • MangalK/vlc
  • nima64/vlc
  • misawai/vlc
  • Alexander-Wilms/vlc
  • Maxime2/vlc-fork-for-visualizer
  • ww/vlc
  • jeske/vlc
  • sgross-emlix/vlc
  • morenonatural/vlc
  • freakingLovesVLC/vlc
  • borisgolovnev/vlc
  • mpromonet/vlc
  • diogo.simao-marques/vlc
  • masstock/vlc
  • pratikpatel8982/vlc
  • hugok79/vlc
  • longervision/vlc
  • abhiudaysurya/vlc
  • rishabhgarg/vlc
  • tumic/vlc
  • cart/vlc
  • shubham442/vlc
  • Aditya692005/vlc
  • sammirata/vlc4
  • syrykh/vlc
  • Vvorcun/macos-new-icon
  • AyaanshC/vlc
  • nasso/vlc
  • Quark/vlc
  • sebastinas/vlc
  • rhstone/vlc
  • talregev/vlc
  • Managor/vlc
403 results
Show changes
Commits on Source (5)
......@@ -919,6 +919,7 @@ libqt_plugin_la_QML = \
gui/qt/player/qml/TracksPageAudio.qml \
gui/qt/player/qml/TracksPageSpeed.qml \
gui/qt/player/qml/TracksPageSubtitle.qml \
gui/qt/player/qml/TracksListPage.qml \
gui/qt/player/qml/ControlLayout.qml \
gui/qt/player/qml/controlbarcontrols/HighResolutionTimeWidget.qml \
gui/qt/player/qml/controlbarcontrols/ArtworkInfoWidget.qml \
......
/*****************************************************************************
* Copyright (C) 2023 VLC authors and VideoLAN
*
* 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.12
import QtQuick.Controls 2.12
import QtQuick.Templates 2.12 as T
import QtQuick.Layouts 1.12
import QtQml.Models 2.12
import org.videolan.vlc 0.1
import "qrc:///style/"
import "qrc:///widgets/" as Widgets
import "qrc:///util/" as Util
RowLayout {
id: root
readonly property ColorContext colorContext: ColorContext {
id: theme
colorSet: ColorContext.Window // copied from TracksPage, maybe use Pane?
}
/* required */ property var trackMenuController: null
spacing: 0
focus: true
onActiveFocusChanged: if (activeFocus) column.forceActiveFocus()
Widgets.NavigableCol {
id: column
focus: true
Layout.preferredWidth: VLCStyle.dp(72, VLCStyle.scale)
Layout.alignment: Qt.AlignTop | Qt.AlignLeft
Layout.topMargin: VLCStyle.margin_large
Navigation.rightItem: row
//we store the model in a different property as functions can't be passed in modelData
property var modelDefination: [{
"tooltip": I18n.qtr("Playback Speed"),
"action": function () {
trackMenuController.requestPlaybackSpeedPage()
}
}]
model: modelDefination
delegate: Widgets.IconTrackButton {
size: (index === 0) ? VLCStyle.fontSize_large
: VLCStyle.dp(40, VLCStyle.scale)
x: (column.width - width) / 2
text: I18n.qtr("Playback Speed")
iconText: (index === 0) ? I18n.qtr("%1x").arg(+Player.rate.toFixed(2))
: modelData.icon
T.ToolTip.visible: (hovered || visualFocus)
T.ToolTip.text: modelData.tooltip
T.ToolTip.delay: VLCStyle.delayToolTipAppear
Navigation.parentItem: column
onClicked: column.modelDefination[index].action()
}
}
Widgets.NavigableRow {
id: row
Layout.fillHeight: true
Layout.fillWidth: true
Navigation.leftItem: column
//we store the model in a different property as functions can't be passed in modelData
property var modelDefinition: [{
"title": I18n.qtr("Subtitle"),
"tracksModel": Player.subtitleTracks,
"menuIcon": VLCIcons.expand,
"menuText": I18n.qtr("Menu"),
"menuAction": function(menuPos) {
menuSubtitle.popup(menuPos)
},
}, {
"title": I18n.qtr("Audio"),
"tracksModel": Player.audioTracks,
"menuIcon": VLCIcons.expand,
"menuText": I18n.qtr("Menu"),
"menuAction": function(menuPos) {
menuAudio.popup(menuPos)
}
}, {
"title": I18n.qtr("Video Tracks"),
"tracksModel": Player.videoTracks,
"menuIcon": VLCIcons.add,
"menuText": I18n.qtr("Add"),
"menuAction": function(menuPos) {
DialogsProvider.loadVideoFile()
},
}]
//note that parenthesis around functions are *mandatory*
model: modelDefinition
delegate: Container {
// wrap the contentItem i.e Column into Container
// so that we can get focusReason, also Container
// is a FocusScope
id: tracksListContainer
property var tracksModel: modelData.tracksModel
focus: true
width: row.width / 3
height: row.height
onActiveFocusChanged: if (activeFocus) tracksList.forceActiveFocus(focusReason)
// this is required to initialize attached Navigation property
Navigation.parentItem: row
contentItem: Column {
anchors.fill: parent
focus: true
Accessible.role: Accessible.Pane
Accessible.name: modelData.title
Item {
// keep it inside so "Column" doesn't mess with it
Rectangle {
id: separator
x: 0
y: 0
width: VLCStyle.margin_xxxsmall
height: tracksListContainer.height
color: theme.border
}
}
Row {
id: titleHeader
width: tracksListContainer.width
height: implicitHeight
padding: VLCStyle.margin_xsmall
topPadding: VLCStyle.margin_large
leftPadding: VLCStyle.margin_xxlarge + separator.width
focus: true
clip: true
Widgets.SubtitleLabel {
id: titleText
width: parent.width - button.width - parent.leftPadding
- parent.rightPadding
text: modelData.title
color: theme.fg.primary
}
Widgets.IconTrackButton {
id: button
size: VLCStyle.icon_track
focus: true
text: modelData.menuText
iconText: modelData.menuIcon
Navigation.parentItem: tracksListContainer
Navigation.downItem: tracksList
onClicked: {
//functions aren't passed to modelData
row.modelDefinition[index].menuAction(mapToGlobal(0, height))
}
}
}
Widgets.KeyNavigableListView {
id: tracksList
model: tracksListContainer.tracksModel
width: tracksListContainer.width
height: tracksListContainer.height - titleHeader.height
leftMargin: separator.width
focus: true
clip: true
Accessible.role: Accessible.List
Accessible.name: I18n.qtr("Track list")
Navigation.parentItem: tracksListContainer
Navigation.upItem: button
Keys.priority: Keys.AfterItem
Keys.onPressed: Navigation.defaultKeyAction(event)
delegate: Widgets.CheckedDelegate {
readonly property bool isModelChecked: model.checked
clip: true
focus: true
text: model.display
width: tracksListContainer.width - VLCStyle.margin_xxxsmall
height: VLCStyle.dp(40, VLCStyle.scale)
opacity: hovered || activeFocus || checked ? 1 : .6
font.weight: hovered
|| activeFocus ? Font.DemiBold : Font.Normal
onIsModelCheckedChanged: {
if (model.checked !== checked)
checked = model.checked
}
onCheckedChanged: {
if (model.checked !== checked)
model.checked = checked
}
onClicked: {
tracksList.currentIndex = index
tracksList.setCurrentItemFocus(Qt.MouseFocusReason)
}
Navigation.parentItem: tracksList
}
}
}
}
}
QmlSubtitleMenu {
id: menuSubtitle
player: Player
onTriggered: {
if (action === QmlSubtitleMenu.Open) {
DialogsProvider.loadSubtitlesFile()
}
else if (action === QmlSubtitleMenu.Synchronize) {
trackMenuController.requestSubtitlePage()
}
else if (action === QmlSubtitleMenu.Download) {
Player.openVLsub()
}
}
}
QmlAudioMenu {
id: menuAudio
onTriggered: {
if (action === QmlSubtitleMenu.Open) {
DialogsProvider.loadAudioFile()
}
else if (action === QmlSubtitleMenu.Synchronize) {
trackMenuController.requestAudioPage()
}
}
}
}
......@@ -33,6 +33,11 @@ T.Popup {
id: root
// Settings
property var preferredWidth : stackView.currentItem.preferredWidth
width: Math.min((typeof preferredWidth !== "undefined")
? preferredWidth : Number.MAX_VALUE
, root.parent.width)
height: VLCStyle.dp(296, VLCStyle.scale)
......@@ -75,11 +80,11 @@ T.Popup {
}
contentItem: StackView {
id: stackView
focus: true
clip: true
initialItem: frontPage
//erf, popup are weird, content is not parented to the root
//so, duplicate the context here for the childrens
readonly property ColorContext colorContext: ColorContext {
......@@ -88,7 +93,9 @@ T.Popup {
palette: popupTheme.palette
}
onCurrentItemChanged: currentItem.forceActiveFocus()
initialItem: TracksListPage {
trackMenuController: trackMenuController
}
pushEnter: Transition {
PropertyAnimation {
......@@ -124,262 +131,28 @@ T.Popup {
}
}
Component {
id: frontPage
RowLayout {
id: frontRoot
property var currentItem: StackView.view.currentItem
spacing: 0
focus: true
onActiveFocusChanged: if (activeFocus) column.forceActiveFocus()
Connections {
target: frontRoot.StackView.view
onCurrentItemChanged: {
if (currentItem instanceof TracksPage)
root.width = Qt.binding(function () {
return Math.min(currentItem.preferredWidth, root.parent.width)
})
else
root.width = Qt.binding(function () { return root.parent.width })
}
}
Connections {
target: (currentItem && currentItem instanceof TracksPage) ? currentItem : null
onBackRequested: frontRoot.StackView.view.pop()
}
Widgets.NavigableCol {
id: column
focus: true
Layout.preferredWidth: VLCStyle.dp(72, VLCStyle.scale)
Layout.alignment: Qt.AlignTop | Qt.AlignLeft
Layout.topMargin: VLCStyle.margin_large
Navigation.rightItem: row
model: [{
"tooltip": I18n.qtr("Playback Speed"),
"source": "qrc:///player/TracksPageSpeed.qml"
}]
delegate: Widgets.IconTrackButton {
size: (index === 0) ? VLCStyle.fontSize_large
: VLCStyle.dp(40, VLCStyle.scale)
x: (column.width - width) / 2
text: I18n.qtr("Playback Speed")
iconText: (index === 0) ? I18n.qtr("%1x").arg(+Player.rate.toFixed(2))
: modelData.icon
T.ToolTip.visible: (hovered || visualFocus)
T.ToolTip.text: modelData.tooltip
T.ToolTip.delay: VLCStyle.delayToolTipAppear
Navigation.parentItem: column
onClicked: frontRoot.StackView.view.push(modelData.source)
}
}
Widgets.NavigableRow {
id: row
Layout.fillHeight: true
Layout.fillWidth: true
Navigation.leftItem: column
//we store the model in a different property as functions can't be passed in modelData
property var modelDefinition: [{
"title": I18n.qtr("Subtitle"),
"tracksModel": Player.subtitleTracks,
"menuIcon": VLCIcons.expand,
"menuText": I18n.qtr("Menu"),
"menuAction": function(menuPos) {
menuSubtitle.popup(menuPos)
},
}, {
"title": I18n.qtr("Audio"),
"tracksModel": Player.audioTracks,
"menuIcon": VLCIcons.expand,
"menuText": I18n.qtr("Menu"),
"menuAction": function(menuPos) {
menuAudio.popup(menuPos)
}
}, {
"title": I18n.qtr("Video Tracks"),
"tracksModel": Player.videoTracks,
"menuIcon": VLCIcons.add,
"menuText": I18n.qtr("Add"),
"menuAction": function(menuPos) {
DialogsProvider.loadVideoFile()
},
}]
//note that parenthesis around functions are *mandatory*
model: modelDefinition
delegate: Column {
id: tracksListContainer
property var tracksModel: modelData.tracksModel
width: row.width / 3
height: row.height
focus: true
Accessible.role: Accessible.Pane
Accessible.name: modelData.title
QtObject {
id: trackMenuController
onActiveFocusChanged: if (activeFocus) tracksList.forceActiveFocus(focusReason)
signal requestAudioPage()
signal requestSubtitlePage()
signal requestPlaybackSpeedPage()
signal requestBack()
Item {
// keep it inside so "Column" doesn't mess with it
Rectangle {
id: separator
onRequestBack: {
stackView.pop()
}
x: 0
y: 0
width: VLCStyle.margin_xxxsmall
onRequestAudioPage: {
stackView.push("qrc:///player/TracksPageAudio.qml", {"trackMenuController": trackMenuController})
}
height: tracksListContainer.height
color: theme.border
}
}
onRequestSubtitlePage: {
stackView.push("qrc:///player/TracksPageSubtitle.qml", {"trackMenuController": trackMenuController})
}
Row {
id: titleHeader
width: tracksListContainer.width
height: implicitHeight
padding: VLCStyle.margin_xsmall
topPadding: VLCStyle.margin_large
leftPadding: VLCStyle.margin_xxlarge + separator.width
focus: true
clip: true
Widgets.SubtitleLabel {
id: titleText
width: parent.width - button.width - parent.leftPadding
- parent.rightPadding
text: modelData.title
color: theme.fg.primary
}
Widgets.IconTrackButton {
id: button
size: VLCStyle.icon_track
focus: true
text: modelData.menuText
iconText: modelData.menuIcon
Navigation.parentItem: tracksListContainer
Navigation.downItem: tracksList
onClicked: {
//functions aren't passed to modelData
row.modelDefinition[index].menuAction(mapToGlobal(0, height))
}
}
}
ListView {
id: tracksList
model: tracksListContainer.tracksModel
width: tracksListContainer.width
height: tracksListContainer.height - titleHeader.height
leftMargin: separator.width
focus: true
clip: true
Accessible.role: Accessible.List
Accessible.name: I18n.qtr("Track list")
Navigation.parentItem: tracksListContainer
Navigation.upItem: button
Keys.priority: Keys.AfterItem
Keys.onPressed: Navigation.defaultKeyAction(event)
delegate: Widgets.CheckedDelegate {
readonly property bool isModelChecked: model.checked
clip: true
focus: true
text: model.display
width: tracksListContainer.width - VLCStyle.margin_xxxsmall
height: VLCStyle.dp(40, VLCStyle.scale)
opacity: hovered || activeFocus || checked ? 1 : .6
font.weight: hovered
|| activeFocus ? Font.DemiBold : Font.Normal
onIsModelCheckedChanged: {
if (model.checked !== checked)
checked = model.checked
}
onCheckedChanged: {
if (model.checked !== checked)
model.checked = checked
}
}
}
}
}
}
}
QmlSubtitleMenu {
id: menuSubtitle
player: Player
onTriggered: {
if (action === QmlSubtitleMenu.Open) {
DialogsProvider.loadSubtitlesFile()
}
else if (action === QmlSubtitleMenu.Synchronize) {
contentItem.currentItem.StackView.view.push("qrc:///player/TracksPageSubtitle.qml")
}
else if (action === QmlSubtitleMenu.Download) {
Player.openVLsub()
}
}
}
QmlAudioMenu {
id: menuAudio
onTriggered: {
if (action === QmlSubtitleMenu.Open) {
DialogsProvider.loadAudioFile()
}
else if (action === QmlSubtitleMenu.Synchronize) {
contentItem.currentItem.StackView.view.push("qrc:///player/TracksPageAudio.qml")
}
}
onRequestPlaybackSpeedPage: {
stackView.push("qrc:///player/TracksPageSpeed.qml", {"trackMenuController": trackMenuController})
}
}
}
......@@ -35,6 +35,8 @@ RowLayout {
property int preferredWidth: VLCStyle.dp(512, VLCStyle.scale)
/* required */ property var trackMenuController: null
// Settings
spacing: 0
......@@ -43,10 +45,6 @@ RowLayout {
Navigation.leftItem: button
// Signals
signal backRequested
// Children
readonly property ColorContext colorContext: ColorContext {
......@@ -73,7 +71,7 @@ RowLayout {
Navigation.parentItem: root
Navigation.rightItem: content
onClicked: root.backRequested()
onClicked: trackMenuController.requestBack()
}
}
......
......@@ -64,8 +64,6 @@ Widgets.IconControlButton {
parent: root._parentItem
width: parent.width
x: 0
y: (parent.positionSliderY - height)
z: 1
......
......@@ -308,6 +308,7 @@
<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="TracksListPage.qml">player/qml/TracksListPage.qml</file>
<file alias="ControlbarControls.qml">player/qml/ControlbarControls.qml</file>
<file alias="MiniPlayer.qml">player/qml/MiniPlayer.qml</file>
<file alias="TopBar.qml">player/qml/TopBar.qml</file>
......
......@@ -848,6 +848,7 @@ modules/gui/qt/player/qml/TopBar.qml
modules/gui/qt/player/qml/TracksMenu.qml
modules/gui/qt/player/qml/TracksPageAudio.qml
modules/gui/qt/player/qml/TracksPageSubtitle.qml
modules/gui/qt/player/qml/TracksListPage.qml
modules/gui/qt/player/qml/controlbarcontrols/ArtworkInfoWidget.qml
modules/gui/qt/player/qml/controlbarcontrols/AspectRatioWidget.qml
modules/gui/qt/player/qml/controlbarcontrols/AtoBButton.qml
......