[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