[vlc-devel] [PATCH 07/55] qml: use repeater for sortmenu model in PlaylistOverlayMenu
Fatih Uzunoglu
fuzun54 at outlook.com
Thu Jan 7 21:36:20 UTC 2021
---
.../qt/playlist/qml/PlaylistOverlayMenu.qml | 153 +++++-------------
1 file changed, 42 insertions(+), 111 deletions(-)
diff --git a/modules/gui/qt/playlist/qml/PlaylistOverlayMenu.qml b/modules/gui/qt/playlist/qml/PlaylistOverlayMenu.qml
index 37a5f66236..77cb4c2220 100644
--- a/modules/gui/qt/playlist/qml/PlaylistOverlayMenu.qml
+++ b/modules/gui/qt/playlist/qml/PlaylistOverlayMenu.qml
@@ -187,120 +187,51 @@ Widgets.OverlayMenu {
// Sort menu:
- function sortOrderMarkRetriever(key) {
- if (key === mainPlaylistController.sortKey) {
- return (mainPlaylistController.sortOrder === PlaylistControllerModel.SORT_ORDER_ASC ? "↓" : "↑")
- }
- else {
- return null
- }
- }
-
- Action {
- id: sortTitleAction
- text: i18n.qtr("Title")
- onTriggered: mainPlaylistController.sort(key)
- readonly property int key: PlaylistControllerModel.SORT_KEY_TITLE
- readonly property string marking: sortOrderMarkRetriever(key)
- readonly property bool tickMark: (key === mainPlaylistController.sortKey)
- }
-
- Action {
- id: sortDurationAction
- text: i18n.qtr("Duration")
- onTriggered: mainPlaylistController.sort(key)
- readonly property int key: PlaylistControllerModel.SORT_KEY_DURATION
- readonly property string marking: sortOrderMarkRetriever(key)
- readonly property bool tickMark: (key === mainPlaylistController.sortKey)
- }
-
- Action {
- id: sortArtistAction
- text: i18n.qtr("Artist")
- onTriggered: mainPlaylistController.sort(key)
- readonly property int key: PlaylistControllerModel.SORT_KEY_ARTIST
- readonly property string marking: sortOrderMarkRetriever(key)
- readonly property bool tickMark: (key === mainPlaylistController.sortKey)
- }
-
- Action {
- id: sortAlbumAction
- text: i18n.qtr("Album")
- onTriggered: mainPlaylistController.sort(key)
- readonly property int key: PlaylistControllerModel.SORT_KEY_ALBUM
- readonly property string marking: sortOrderMarkRetriever(key)
- readonly property bool tickMark: (key === mainPlaylistController.sortKey)
- }
-
- Action {
- id: sortAlbumArtistAction
- text: i18n.qtr("Album Artist")
- onTriggered: mainPlaylistController.sort(key)
- readonly property int key: PlaylistControllerModel.SORT_KEY_ALBUM_ARTIST
- readonly property string marking: sortOrderMarkRetriever(key)
- readonly property bool tickMark: (key === mainPlaylistController.sortKey)
- }
-
- Action {
- id: sortGenreAction
- text: i18n.qtr("Genre")
- onTriggered: mainPlaylistController.sort(key)
- readonly property int key: PlaylistControllerModel.SORT_KEY_GENRE
- readonly property string marking: sortOrderMarkRetriever(key)
- readonly property bool tickMark: (key === mainPlaylistController.sortKey)
- }
-
- Action {
- id: sortDateAction
- text: i18n.qtr("Date")
- onTriggered: mainPlaylistController.sort(key)
- readonly property int key: PlaylistControllerModel.SORT_KEY_DATE
- readonly property string marking: sortOrderMarkRetriever(key)
- readonly property bool tickMark: (key === mainPlaylistController.sortKey)
- }
-
- Action {
- id: sortTrackNumberAction
- text: i18n.qtr("Track Number")
- onTriggered: mainPlaylistController.sort(key)
- readonly property int key: PlaylistControllerModel.SORT_KEY_TRACK_NUMBER
- readonly property string marking: sortOrderMarkRetriever(key)
- readonly property bool tickMark: (key === mainPlaylistController.sortKey)
- }
-
- Action {
- id: sortURLAction
- text: i18n.qtr("URL")
- onTriggered: mainPlaylistController.sort(key)
- readonly property int key: PlaylistControllerModel.SORT_KEY_URL
- readonly property string marking: sortOrderMarkRetriever(key)
- readonly property bool tickMark: (key === mainPlaylistController.sortKey)
- }
-
- Action {
- id: sortRatingAction
- text: i18n.qtr("Rating")
- onTriggered: mainPlaylistController.sort(key)
- readonly property int key: PlaylistControllerModel.SORT_KEY_RATING
- readonly property string marking: sortOrderMarkRetriever(key)
- readonly property bool tickMark: (key === mainPlaylistController.sortKey)
- }
-
property var sortMenu: ({
title: i18n.qtr("Sort Menu"),
- entries: [
- sortTitleAction,
- sortDurationAction,
- sortArtistAction,
- sortAlbumAction,
- sortAlbumArtistAction,
- sortGenreAction,
- sortDateAction,
- sortTrackNumberAction,
- sortURLAction,
- sortRatingAction
- ]
+ entries: []
})
+ Component {
+ id: sortActionDelegate
+
+ Action {
+ property int key: undefined
+ readonly property string marking: {
+ if (key === mainPlaylistController.sortKey) {
+ return (mainPlaylistController.sortOrder === PlaylistControllerModel.SORT_ORDER_ASC ? "↓" : "↑")
+ }
+ else {
+ return null
+ }
+ }
+ readonly property bool tickMark: (key === mainPlaylistController.sortKey)
+
+ onTriggered: mainPlaylistController.sort(key)
+ }
+ }
+ Repeater {
+ model: [{title: i18n.qtr("Title"), key: PlaylistControllerModel.SORT_KEY_TITLE},
+ {title: i18n.qtr("Duration"), key: PlaylistControllerModel.SORT_KEY_DURATION},
+ {title: i18n.qtr("Artist"), key: PlaylistControllerModel.SORT_KEY_ARTIST},
+ {title: i18n.qtr("Album"), key: PlaylistControllerModel.SORT_KEY_ALBUM},
+ {title: i18n.qtr("Album Artist"), key: PlaylistControllerModel.SORT_KEY_ALBUM_ARTIST},
+ {title: i18n.qtr("Genre"), key: PlaylistControllerModel.SORT_KEY_GENRE},
+ {title: i18n.qtr("Date"), key: PlaylistControllerModel.SORT_KEY_DATE},
+ {title: i18n.qtr("Track Number"), key: PlaylistControllerModel.SORT_KEY_TRACK_NUMBER},
+ {title: i18n.qtr("URL"), key: PlaylistControllerModel.SORT_KEY_URL},
+ {title: i18n.qtr("Rating"), key: PlaylistControllerModel.SORT_KEY_RATING}]
+
+ delegate: Loader {
+ asynchronous: true
+ sourceComponent: sortActionDelegate
+
+ onLoaded: {
+ item.text = modelData.title
+ item.key = modelData.key
+ overlayMenu.sortMenu.entries.push(item)
+ }
+ }
+ }
}
--
2.27.0
More information about the vlc-devel
mailing list