[vlc-devel] [PATCH 21/22] qml: factorise navigation bindings
Pierre Lamot
pierre at videolabs.io
Fri Feb 14 11:23:56 CET 2020
---
.../gui/qt/medialibrary/qml/MainDisplay.qml | 44 +++++--------------
.../gui/qt/medialibrary/qml/MusicDisplay.qml | 15 +++----
.../medialibrary/qml/MusicGenresDisplay.qml | 5 +--
3 files changed, 17 insertions(+), 47 deletions(-)
diff --git a/modules/gui/qt/medialibrary/qml/MainDisplay.qml b/modules/gui/qt/medialibrary/qml/MainDisplay.qml
index 2524b657fb..c7903e6ec3 100644
--- a/modules/gui/qt/medialibrary/qml/MainDisplay.qml
+++ b/modules/gui/qt/medialibrary/qml/MainDisplay.qml
@@ -27,7 +27,6 @@ import "qrc:///widgets/" as Widgets
import "qrc:///util/KeyHelper.js" as KeyHelper
import "qrc:///playlist/" as PL
import "qrc:///player/" as Player
-import "qrc:///network/" as Network
Widgets.NavigableFocusScope {
id: root
@@ -49,6 +48,13 @@ Widgets.NavigableFocusScope {
function loadView() {
var found = stackView.loadView(root.pageModel, root.view, root.viewProperties)
+ stackView.currentItem.navigationParent = medialibId
+ stackView.currentItem.navigationUpItem = sourcesBanner
+ stackView.currentItem.navigationRightItem = playlist
+ stackView.currentItem.navigationDownItem = Qt.binding(function() {
+ return miniPlayer.expanded ? miniPlayer : medialibId
+ })
+
sourcesBanner.subTabModel = stackView.currentItem.tabModel
sourcesBanner.sortModel = stackView.currentItem.sortModel
sourcesBanner.contentModel = stackView.currentItem.contentModel
@@ -77,52 +83,22 @@ Widgets.NavigableFocusScope {
rootWindow.sendHotkey(event.key, event.modifiers);
}
- Component {
- id: musicComp
- MusicDisplay {
- navigationParent: medialibId
- navigationUpItem: sourcesBanner
- navigationRightItem: playlist
- navigationDownItem: miniPlayer.expanded ? miniPlayer : medialibId
- }
- }
-
- Component {
- id: videoComp
- VideoDisplay {
- navigationParent: medialibId
- navigationUpItem: sourcesBanner
- navigationRightItem: playlist
- navigationDownItem: miniPlayer.expanded ? miniPlayer : medialibId
- }
- }
-
- Component {
- id: networkComp
- Network.NetworkDisplay {
- navigationParent: medialibId
- navigationUpItem: sourcesBanner
- navigationRightItem: playlist
- navigationDownItem: miniPlayer.expanded ? miniPlayer : medialibId
- }
- }
-
readonly property var pageModel: [
{
displayText: i18n.qtr("Video"),
icon: VLCIcons.topbar_video,
name: "video",
- component: videoComp
+ url: "qrc:///medialibrary/VideoDisplay.qml"
}, {
displayText: i18n.qtr("Music"),
icon: VLCIcons.topbar_music,
name: "music",
- component: musicComp
+ url: "qrc:///medialibrary/MusicDisplay.qml"
}, {
displayText: i18n.qtr("Network"),
icon: VLCIcons.topbar_network,
name: "network",
- component: networkComp
+ url: "qrc:///network/NetworkDisplay.qml"
}
]
diff --git a/modules/gui/qt/medialibrary/qml/MusicDisplay.qml b/modules/gui/qt/medialibrary/qml/MusicDisplay.qml
index 3254452da2..cd1eaccf53 100644
--- a/modules/gui/qt/medialibrary/qml/MusicDisplay.qml
+++ b/modules/gui/qt/medialibrary/qml/MusicDisplay.qml
@@ -48,6 +48,8 @@ Widgets.NavigableFocusScope {
var found = stackView.loadView(root.pageModel, view, viewProperties)
if (!found)
stackView.replace(root.pageModel[0].component)
+
+ stackView.currentItem.navigationParent = root
sortModel = stackView.currentItem.sortModel
contentModel = stackView.currentItem.model
}
@@ -62,27 +64,22 @@ Widgets.NavigableFocusScope {
history.push(["mc", "music", root.pageModel[index].name])
}
- Component { id: albumComp; MusicAlbumsDisplay{ navigationParent: root } }
- Component { id: artistComp; MusicArtistsDisplay{ navigationParent: root } }
- Component { id: genresComp; MusicGenresDisplay{ navigationParent: root } }
- Component { id: tracksComp; MusicTracksDisplay{ navigationParent: root } }
-
readonly property var pageModel: [{
displayText: i18n.qtr("Albums"),
name: "albums",
- component: albumComp
+ url: "qrc:///medialibrary/MusicAlbumsDisplay.qml"
}, {
displayText: i18n.qtr("Artists"),
name: "artists",
- component: artistComp
+ url: "qrc:///medialibrary/MusicArtistsDisplay.qml"
}, {
displayText: i18n.qtr("Genres"),
name: "genres" ,
- component: genresComp
+ url: "qrc:///medialibrary/MusicGenresDisplay.qml"
}, {
displayText: i18n.qtr("Tracks"),
name: "tracks" ,
- component: tracksComp
+ url: "qrc:///medialibrary/MusicTracksDisplay.qml"
}
]
diff --git a/modules/gui/qt/medialibrary/qml/MusicGenresDisplay.qml b/modules/gui/qt/medialibrary/qml/MusicGenresDisplay.qml
index 05b6e930fc..945673813c 100644
--- a/modules/gui/qt/medialibrary/qml/MusicGenresDisplay.qml
+++ b/modules/gui/qt/medialibrary/qml/MusicGenresDisplay.qml
@@ -59,6 +59,7 @@ Widgets.NavigableFocusScope {
var found = stackView.loadView(root.pageModel, view, viewProperties)
if (!found)
stackView.replace(root.pageModel[0].component)
+ stackView.currentItem.navigationParent = root
sortModel = stackView.currentItem.sortModel
contentModel = stackView.currentItem.model
}
@@ -80,8 +81,6 @@ Widgets.NavigableFocusScope {
/* List View */
MusicGenres {
onCurrentIndexChanged: _updateGenresAllHistory(currentIndex)
-
- navigationParent: root
}
}
@@ -99,8 +98,6 @@ Widgets.NavigableFocusScope {
onParentIdChanged: _updateGenresAlbumsHistory(currentIndex, parentId, genreName)
onGenreNameChanged: _updateGenresAlbumsHistory(currentIndex, parentId, genreName)
onCurrentIndexChanged: _updateGenresAlbumsHistory(currentIndex, parentId, genreName)
-
- navigationParent: root
}
}
--
2.17.1
More information about the vlc-devel
mailing list