[vlc-commits] [Git][videolan/vlc][master] 3 commits: qml/TableView(s): Switch to sub-model based models

Jean-Baptiste Kempf (@jbk) gitlab at videolan.org
Thu Dec 22 10:19:05 UTC 2022



Jean-Baptiste Kempf pushed to branch master at VideoLAN / VLC


Commits:
0e535ad8 by Benjamin Arnaud at 2022-12-22T10:01:27+00:00
qml/TableView(s): Switch to sub-model based models

This should improve maintenability and clarity of our TableView models.
It also brings a better modularity when we have different models depending
on the current width of the application, like in MusicTrackListDisplay.

In MusicTracksDisplay we switch to a dedicated sortModel for the SortControl.

Co-authored-by: Pierre Lamot <pierre at videolabs.io>

- - - - -
125791ae by Benjamin Arnaud at 2022-12-22T10:01:27+00:00
qml/TableView(s): Switch to column sized models

This enforces the fact that we're using columns instead of absolute width
to define our sizes in TableView(s) models. That way we know we always
respect the grid approach of our UI design.

- - - - -
16e91345 by Benjamin Arnaud at 2022-12-22T10:01:27+00:00
qml/TableView(s): Remove 'isPrimary' from models

- - - - -


15 changed files:

- modules/gui/qt/medialibrary/qml/MusicAlbums.qml
- modules/gui/qt/medialibrary/qml/MusicAlbumsGridExpandDelegate.qml
- modules/gui/qt/medialibrary/qml/MusicAllArtists.qml
- modules/gui/qt/medialibrary/qml/MusicArtist.qml
- modules/gui/qt/medialibrary/qml/MusicGenres.qml
- modules/gui/qt/medialibrary/qml/MusicTrackListDisplay.qml
- modules/gui/qt/medialibrary/qml/MusicTracksDisplay.qml
- modules/gui/qt/medialibrary/qml/PlaylistMedia.qml
- modules/gui/qt/medialibrary/qml/PlaylistMediaList.qml
- modules/gui/qt/medialibrary/qml/UrlListDisplay.qml
- modules/gui/qt/medialibrary/qml/VideoListDisplay.qml
- modules/gui/qt/network/qml/BrowseDeviceView.qml
- modules/gui/qt/network/qml/BrowseTreeDisplay.qml
- modules/gui/qt/widgets/qml/KeyNavigableTableView.qml
- modules/gui/qt/widgets/qml/TableViewDelegate.qml


Changes:

=====================================
modules/gui/qt/medialibrary/qml/MusicAlbums.qml
=====================================
@@ -217,11 +217,39 @@ FocusScope {
             rowHeight: VLCStyle.tableCoverRow_height
             headerTopPadding: VLCStyle.margin_normal
 
-            sortModel:  [
-                { isPrimary: true, criteria: "title", width: VLCStyle.colWidth(2), text: I18n.qtr("Title"), headerDelegate: tableColumns.titleHeaderDelegate, colDelegate: tableColumns.titleDelegate, placeHolder: VLCStyle.noArtAlbumCover },
-                { criteria: "main_artist", width: VLCStyle.colWidth(Math.max(tableView_id._nbCols - 3, 1)), text: I18n.qtr("Artist") },
-                { criteria: "duration", width:VLCStyle.colWidth(1), showSection: "", headerDelegate: tableColumns.timeHeaderDelegate, colDelegate: tableColumns.timeColDelegate },
-            ]
+            sortModel: [{
+                size: 2,
+
+                model: {
+                    criteria: "title",
+
+                    text: I18n.qtr("Title"),
+
+                    headerDelegate: tableColumns.titleHeaderDelegate,
+                    colDelegate: tableColumns.titleDelegate,
+
+                    placeHolder: VLCStyle.noArtAlbumCover
+                }
+            }, {
+                size: Math.max(tableView_id._nbCols - 3, 1),
+
+                model: {
+                    criteria: "main_artist",
+
+                    text: I18n.qtr("Artist")
+                }
+            }, {
+                size: 1,
+
+                model: {
+                    criteria: "duration",
+
+                    showSection: "",
+
+                    headerDelegate: tableColumns.timeHeaderDelegate,
+                    colDelegate: tableColumns.timeColDelegate
+                }
+            }]
 
             Navigation.cancelAction: root._onNavigationCancel
 


=====================================
modules/gui/qt/medialibrary/qml/MusicAlbumsGridExpandDelegate.qml
=====================================
@@ -289,10 +289,35 @@ FocusScope {
                 currentIndex = 0
             }
 
-            sortModel: [
-                { isPrimary: true, criteria: "title", width: VLCStyle.colWidth(Math.max(tracks._nbCols - 1, 1)), visible: true, text: I18n.qtr("Title"), showSection: "", colDelegate: titleDelegate, headerDelegate: titleHeaderDelegate },
-                { criteria: "duration",               width: VLCStyle.colWidth(1), visible: true, showSection: "", colDelegate: tableColumns.timeColDelegate, headerDelegate: tableColumns.timeHeaderDelegate },
-            ]
+            sortModel: [{
+                size: Math.max(tracks._nbCols - 1, 1),
+
+                model: {
+                    criteria: "title",
+
+                    visible: true,
+
+                    text: I18n.qtr("Title"),
+
+                    showSection: "",
+
+                    colDelegate: titleDelegate,
+                    headerDelegate: titleHeaderDelegate
+                }
+            }, {
+                size: 1,
+
+                model: {
+                    criteria: "duration",
+
+                    visible: true,
+
+                    showSection: "",
+
+                    colDelegate: tableColumns.timeColDelegate,
+                    headerDelegate: tableColumns.timeHeaderDelegate
+                }
+            }]
 
             Navigation.parentItem: root
             Navigation.leftItem: actionButtons


=====================================
modules/gui/qt/medialibrary/qml/MusicAllArtists.qml
=====================================
@@ -187,10 +187,28 @@ FocusScope {
                 }
             }
 
-            sortModel:  [
-                { isPrimary: true, criteria: "name", width: VLCStyle.colWidth(Math.max(artistTable._nbCols - 1, 1)), text: I18n.qtr("Name"), headerDelegate: tableColumns.titleHeaderDelegate, colDelegate: tableColumns.titleDelegate, placeHolder: VLCStyle.noArtArtistSmall },
-                { criteria: "nb_tracks", width: VLCStyle.colWidth(1), text: I18n.qtr("Tracks") }
-            ]
+            sortModel: [{
+                size: Math.max(artistTable._nbCols - 1, 1),
+
+                model: {
+                    criteria: "name",
+
+                    text: I18n.qtr("Name"),
+
+                    headerDelegate: tableColumns.titleHeaderDelegate,
+                    colDelegate: tableColumns.titleDelegate,
+
+                    placeHolder: VLCStyle.noArtArtistSmall
+                }
+            }, {
+                size: 1,
+
+                model: {
+                    criteria: "nb_tracks",
+
+                    text: I18n.qtr("Tracks")
+                }
+            }]
 
             onItemDoubleClicked: root.requestArtistAlbumView(Qt.MouseFocusReason)
 


=====================================
modules/gui/qt/medialibrary/qml/MusicArtist.qml
=====================================
@@ -395,11 +395,37 @@ FocusScope {
             headerPositioning: ListView.InlineHeader
             rowHeight: VLCStyle.tableCoverRow_height
 
-            sortModel:  [
-                { isPrimary: true, criteria: "title", width: VLCStyle.colWidth(2), text: I18n.qtr("Title"), headerDelegate: tableColumns.titleHeaderDelegate, colDelegate: tableColumns.titleDelegate },
-                { criteria: "album_title", width: VLCStyle.colWidth(Math.max(tableView_id._nbCols - 3, 1)), text: I18n.qtr("Album") },
-                { criteria: "duration", width:VLCStyle.colWidth(1), showSection: "", headerDelegate: tableColumns.timeHeaderDelegate, colDelegate: tableColumns.timeColDelegate },
-            ]
+            sortModel: [{
+                size: 2,
+
+                model: {
+                    criteria: "title",
+
+                    text: I18n.qtr("Title"),
+
+                    headerDelegate: tableColumns.titleHeaderDelegate,
+                    colDelegate: tableColumns.titleDelegate
+                }
+            }, {
+                size: Math.max(tableView_id._nbCols - 3, 1),
+
+                model: {
+                    criteria: "album_title",
+
+                    text: I18n.qtr("Album")
+                }
+            }, {
+                size: 1,
+
+                model: {
+                    criteria: "duration",
+
+                    showSection: "",
+
+                    headerDelegate: tableColumns.timeHeaderDelegate,
+                    colDelegate: tableColumns.timeColDelegate
+                }
+            }]
 
             Navigation.parentItem: root
 


=====================================
modules/gui/qt/medialibrary/qml/MusicGenres.qml
=====================================
@@ -247,25 +247,30 @@ FocusScope {
             headerTopPadding: VLCStyle.margin_normal
 
             sortModel: [{
-                isPrimary: true,
-                criteria: "cover",
+                size: 1,
 
-                width: VLCStyle.colWidth(1),
+                model: {
+                    criteria: "cover",
 
-                headerDelegate: tableColumns.titleHeaderDelegate,
-                colDelegate: tableColumns.titleDelegate
+                    headerDelegate: tableColumns.titleHeaderDelegate,
+                    colDelegate: tableColumns.titleDelegate
+                }
             }, {
-                criteria: "name",
+                size: _nameColSpan,
 
-                width: VLCStyle.colWidth(_nameColSpan),
+                model: {
+                    criteria: "name",
 
-                text: I18n.qtr("Name")
+                    text: I18n.qtr("Name")
+                }
             }, {
-                criteria: "nb_tracks",
+                size: 1,
 
-                width: VLCStyle.colWidth(1),
+                model: {
+                    criteria: "nb_tracks",
 
-                text: I18n.qtr("Tracks")
+                    text: I18n.qtr("Tracks")
+                }
             }]
 
             onItemDoubleClicked: {


=====================================
modules/gui/qt/medialibrary/qml/MusicTrackListDisplay.qml
=====================================
@@ -30,33 +30,141 @@ import "qrc:///style/"
 Widgets.KeyNavigableTableView {
     id: root
 
-    property var sortModelSmall: [
-        { isPrimary: true, criteria: "title",       width: VLCStyle.colWidth(1), text: I18n.qtr("Title"),    showSection: "title", colDelegate: tableColumns.titleDelegate, headerDelegate: tableColumns.titleHeaderDelegate, placeHolder: VLCStyle.noArtAlbumCover },
-        { criteria: "album_title", width: VLCStyle.colWidth(1), text: I18n.qtr("Album"),    showSection: "album_title" },
-        { criteria: "main_artist", width: VLCStyle.colWidth(1), text: I18n.qtr("Artist"),   showSection: "main_artist" },
-        { criteria: "duration", width: VLCStyle.colWidth(1), text: I18n.qtr("Duration"), showSection: "", colDelegate: tableColumns.timeColDelegate, headerDelegate: tableColumns.timeHeaderDelegate },
-    ]
-
-    property var sortModelMedium: [
-        { isPrimary: true, criteria: "title",       width: VLCStyle.colWidth(2), text: I18n.qtr("Title"),    showSection: "title", colDelegate: tableColumns.titleDelegate, headerDelegate: tableColumns.titleHeaderDelegate, placeHolder: VLCStyle.noArtAlbumCover },
-        { criteria: "album_title", width: VLCStyle.colWidth(2), text: I18n.qtr("Album"),    showSection: "album_title" },
-        { criteria: "main_artist", width: VLCStyle.colWidth(1), text: I18n.qtr("Artist"),   showSection: "main_artist" },
-        { criteria: "duration", width: VLCStyle.colWidth(1), text: I18n.qtr("Duration"), showSection: "", colDelegate: tableColumns.timeColDelegate, headerDelegate: tableColumns.timeHeaderDelegate },
-    ]
+    // Properties
 
     readonly property int _expandingColsSpan: Math.floor((VLCStyle.gridColumnsForWidth(root.availableRowWidth) - 3 /* static cols (track_number, etc)*/) / 3)
-    property var sortModelLarge: [
-        { isPrimary: true, criteria: "title",       width: VLCStyle.colWidth(root._expandingColsSpan), text: I18n.qtr("Title"),    showSection: "title", colDelegate: tableColumns.titleDelegate, headerDelegate: tableColumns.titleHeaderDelegate, placeHolder: VLCStyle.noArtAlbumCover },
-        { criteria: "album_title", width: VLCStyle.colWidth(root._expandingColsSpan), text: I18n.qtr("Album"),    showSection: "album_title" },
-        { criteria: "main_artist", width: VLCStyle.colWidth(root._expandingColsSpan), text: I18n.qtr("Artist"),   showSection: "main_artist" },
-        { criteria: "duration", width: VLCStyle.colWidth(1), text: I18n.qtr("Duration"), showSection: "", colDelegate: tableColumns.timeColDelegate, headerDelegate: tableColumns.timeHeaderDelegate },
-        { criteria: "track_number",width: VLCStyle.colWidth(1), text: I18n.qtr("Track"), showSection: "" },
-        { criteria: "disc_number", width: VLCStyle.colWidth(1), text: I18n.qtr("Disc"),  showSection: "" },
-    ]
-
-    sortModel: ( availableRowWidth < VLCStyle.colWidth(6) ) ? sortModelSmall
-                                                            : ( availableRowWidth < VLCStyle.colWidth(9) )
-                                                              ? sortModelMedium : sortModelLarge
+
+    property alias parentId: rootmodel.parentId
+
+    // Private
+
+    property var _lineTitle: ({
+        criteria: "title",
+
+        text: I18n.qtr("Title"),
+
+        showSection: "title",
+
+        colDelegate: tableColumns.titleDelegate,
+        headerDelegate: tableColumns.titleHeaderDelegate,
+
+        placeHolder: VLCStyle.noArtAlbumCover
+    })
+
+    property var _lineAlbum: ({
+        criteria: "album_title",
+
+        text: I18n.qtr("Album"),
+
+        showSection: "album_title"
+    })
+
+    property var _lineArtist: ({
+        criteria: "main_artist",
+
+        text: I18n.qtr("Artist"),
+
+        showSection: "main_artist"
+    })
+
+    property var _lineDuration: ({
+        criteria: "duration",
+
+        text: I18n.qtr("Duration"),
+
+        showSection: "",
+
+        colDelegate: tableColumns.timeColDelegate,
+        headerDelegate: tableColumns.timeHeaderDelegate
+    })
+
+    property var _lineTrack: ({
+        criteria: "track_number",
+
+        text: I18n.qtr("Track"),
+
+        showSection: ""
+    })
+
+    property var _lineDisc: ({
+        criteria: "disc_number",
+
+        text: I18n.qtr("Disc"),
+
+        showSection: ""
+    })
+
+    property var _modelLarge: [{
+        size: _expandingColsSpan,
+
+        model: _lineTitle
+    }, {
+        size: _expandingColsSpan,
+
+        model: _lineAlbum
+    }, {
+        size: _expandingColsSpan,
+
+        model: _lineArtist
+    }, {
+        size: 1,
+
+        model: _lineDuration
+    }, {
+        size: 1,
+
+        model: _lineTrack
+    }, {
+        size: 1,
+
+        model: _lineDisc
+    }]
+
+    property var _modelMedium: [{
+        size: 2,
+
+        model: _lineTitle
+    }, {
+        size: 2,
+
+        model: _lineAlbum
+    }, {
+        size: 1,
+
+        model: _lineArtist
+    }, {
+        size: 1,
+
+        model: _lineDuration
+    }]
+
+    property var _modelSmall: [{
+        size: 1,
+
+        model: _lineTitle
+    }, {
+        size: 1,
+
+        model: _lineAlbum
+    }, {
+        size: 1,
+
+        model: _lineArtist
+    }, {
+        size: 1,
+
+        model: _lineDuration
+    }]
+
+    sortModel: {
+        if (availableRowWidth < VLCStyle.colWidth(6))
+            return _modelSmall
+        else if (availableRowWidth < VLCStyle.colWidth(9))
+            return _modelMedium
+        else
+            return _modelLarge
+    }
+
     section.property: "title_first_symbol"
 
     headerColor: VLCStyle.colors.bg
@@ -65,8 +173,6 @@ Widgets.KeyNavigableTableView {
     selectionDelegateModel: selectionModel
     rowHeight: VLCStyle.tableCoverRow_height
 
-    property alias parentId: rootmodel.parentId
-
     onActionForSelection:  MediaLib.addAndPlay(model.getIdsForIndexes( selection ))
     onItemDoubleClicked: MediaLib.addAndPlay(model.id)
     onContextMenuButtonClicked: contextMenu.popup(selectionModel.selectedIndexes, globalMousePos)


=====================================
modules/gui/qt/medialibrary/qml/MusicTracksDisplay.qml
=====================================
@@ -27,7 +27,15 @@ import "qrc:///main/" as MainInterface
 FocusScope {
     id: root
 
-    property alias sortModel: tracklistdisplay_id.sortModel
+    property var sortModel: [
+        { text: I18n.qtr("Title"),    criteria: "title"},
+        { text: I18n.qtr("Album"),    criteria: "album_title" },
+        { text: I18n.qtr("Artist"),   criteria: "main_artist" },
+        { text: I18n.qtr("Duration"), criteria: "duration" },
+        { text: I18n.qtr("Track"),    criteria: "track_number" },
+        { text: I18n.qtr("Disc"),     criteria: "disc_number" }
+    ]
+
     property alias model: tracklistdisplay_id.model
     property alias selectionModel: tracklistdisplay_id.selectionDelegateModel
     readonly property bool isViewMultiView: false


=====================================
modules/gui/qt/medialibrary/qml/PlaylistMedia.qml
=====================================
@@ -55,31 +55,35 @@ MainInterface.MainTableView {
     acceptDrop: true
 
     sortModel: [{
-        criteria: "thumbnail",
+        size: 1,
 
-        width: VLCStyle.colWidth(1),
+        model: {
+            criteria: "thumbnail",
 
-        type: "image",
+            type: "image",
 
-        headerDelegate: table.titleHeaderDelegate,
-        colDelegate   : table.titleDelegate,
+            headerDelegate: table.titleHeaderDelegate,
+            colDelegate   : table.titleDelegate,
 
-        placeHolder: VLCStyle.noArtAlbumCover,
+            placeHolder: VLCStyle.noArtAlbumCover
+        }
     }, {
-        isPrimary: true,
-
-        criteria: "title",
+        size: Math.max(columns - 2, 1),
 
-        width: VLCStyle.colWidth(Math.max(columns - 2, 1)),
+        model: {
+            criteria: "title",
 
-        text: I18n.qtr("Title")
+            text: I18n.qtr("Title")
+        }
     }, {
-        criteria: "duration",
+        size: 1,
 
-        width: VLCStyle.colWidth(1),
+        model: {
+            criteria: "duration",
 
-        headerDelegate: table.timeHeaderDelegate,
-        colDelegate   : table.timeColDelegate
+            headerDelegate: table.timeHeaderDelegate,
+            colDelegate   : table.timeColDelegate
+        }
     }]
 
     //---------------------------------------------------------------------------------------------


=====================================
modules/gui/qt/medialibrary/qml/PlaylistMediaList.qml
=====================================
@@ -342,25 +342,30 @@ FocusScope {
             headerColor: VLCStyle.colors.bg
 
             sortModel: [{
-                isPrimary: true,
-                criteria: "thumbnail",
+                size: 1,
 
-                width: VLCStyle.colWidth(1),
+                model: {
+                    criteria: "thumbnail",
 
-                headerDelegate: columns.titleHeaderDelegate,
-                colDelegate   : columns.titleDelegate
+                    headerDelegate: columns.titleHeaderDelegate,
+                    colDelegate   : columns.titleDelegate
+                }
             }, {
-                criteria: "name",
+                size: _columns,
 
-                width: VLCStyle.colWidth(_columns),
+                model: {
+                    criteria: "name",
 
-                text: I18n.qtr("Name")
+                    text: I18n.qtr("Name")
+                }
             }, {
-                criteria: "count",
+                size: 1,
 
-                width: VLCStyle.colWidth(1),
+                model: {
+                    criteria: "count",
 
-                text: I18n.qtr("Tracks")
+                    text: I18n.qtr("Tracks")
+                }
             }]
 
             Navigation.parentItem: root


=====================================
modules/gui/qt/medialibrary/qml/UrlListDisplay.qml
=====================================
@@ -43,20 +43,29 @@ Widgets.KeyNavigableTableView {
     selectionDelegateModel: selectionModel
 
     sortModel: [{
-            "isPrimary": true,
-            "criteria": "url",
-            "width": VLCStyle.colWidth(Math.max(listView_id._nbCols - 1,
-                                                1)),
-            "text": I18n.qtr("Url"),
-            "showSection": "url",
+        size: Math.max(listView_id._nbCols - 1, 1),
+
+        model: {
+            criteria: url,
+
+            text: I18n.qtr("Url"),
+
+            showSection: url,
+
             headerDelegate: urlHeaderDelegate
-        }, {
-            "criteria": "last_played_date",
-            "width": VLCStyle.colWidth(1),
-            "showSection": "",
-            "headerDelegate": tableColumns.timeHeaderDelegate,
-            "showContextButton": true
-        }]
+        }
+    }, {
+        size: 1,
+
+        model: {
+            criteria: last_played_date,
+
+            showSection: "",
+            showContextButton: true,
+
+            headerDelegate: tableColumns.timeHeaderDelegate
+        }
+    }]
 
     rowHeight: VLCStyle.listAlbumCover_height + VLCStyle.margin_xxsmall * 2
     headerColor: VLCStyle.colors.bg


=====================================
modules/gui/qt/medialibrary/qml/VideoListDisplay.qml
=====================================
@@ -47,36 +47,42 @@ MainInterface.MainTableView {
     //---------------------------------------------------------------------------------------------
 
     sortModel: [{
-        type: "image",
+        size: 1,
 
-        criteria: "thumbnail",
+        model: ({
+            type: "image",
 
-        width: VLCStyle.colWidth(1),
+            criteria: "thumbnail",
 
-        showSection: "",
+            showSection: "",
 
-        placeHolder: VLCStyle.noArtVideoCover,
+            placeHolder: VLCStyle.noArtVideoCover,
 
-        headerDelegate: tableColumns.titleHeaderDelegate,
-        colDelegate   : tableColumns.titleDelegate,
+            headerDelegate: tableColumns.titleHeaderDelegate,
+            colDelegate   : tableColumns.titleDelegate
+        })
     }, {
-        isPrimary: true,
-        criteria: mainCriteria,
+        size: Math.max(listView_id._nbCols - 2, 1),
 
-        width: VLCStyle.colWidth(Math.max(listView_id._nbCols - 2, 1)),
+        model: ({
+            criteria: mainCriteria,
 
-        showSection: "title",
+            showSection: "title",
 
-        text: I18n.qtr("Title")
+            text: I18n.qtr("Title")
+        })
     }, {
-        criteria: "duration",
+        size: 1,
 
-        width: VLCStyle.colWidth(1),
+        model: ({
+            criteria: "duration",
 
-        showSection: "",
+            showSection: "",
+            showContextButton: true,
 
-        headerDelegate: tableColumns.timeHeaderDelegate, showContextButton: true,
-        colDelegate   : tableColumns.timeColDelegate
+            headerDelegate: tableColumns.timeHeaderDelegate,
+            colDelegate   : tableColumns.timeColDelegate
+        })
     }]
 
     section.property: "title_first_symbol"


=====================================
modules/gui/qt/network/qml/BrowseDeviceView.qml
=====================================
@@ -278,27 +278,32 @@ FocusScope {
             model: modelFilter
 
             sortModel: [{
-                criteria: "artwork",
+                size: 1,
 
-                width: VLCStyle.colWidth(1),
+                model: {
+                    criteria: "artwork",
 
-                headerDelegate: artworkHeader,
-                colDelegate   : artworkColumn
+                    headerDelegate: artworkHeader,
+                    colDelegate   : artworkColumn
+                }
             }, {
-                isPrimary: true,
-                criteria: "name",
+                size: listView._nameColSpan,
 
-                width: VLCStyle.colWidth(listView._nameColSpan),
+                model: {
+                    criteria: "name",
 
-                text: I18n.qtr("Name")
+                    text: I18n.qtr("Name")
+                }
             }, {
-                criteria: "mrl",
+                size: Math.max(listView._nbCols - listView._nameColSpan - 1, 1),
 
-                width: VLCStyle.colWidth(Math.max(listView._nbCols - listView._nameColSpan - 1), 1),
+                model: {
+                    criteria: "mrl",
 
-                text: I18n.qtr("Url"),
+                    text: I18n.qtr("Url"),
 
-                colDelegate: mrlColumn
+                    colDelegate: mrlColumn
+                }
             }]
 
             header: root.header


=====================================
modules/gui/qt/network/qml/BrowseTreeDisplay.qml
=====================================
@@ -307,11 +307,34 @@ FocusScope {
                 }
             }
 
-            sortModel: [
-                { criteria: "thumbnail", width: VLCStyle.colWidth(1), headerDelegate: tableView.thumbnailHeader, colDelegate: tableView.thumbnailColumn },
-                { isPrimary: true, criteria: "name", width: VLCStyle.colWidth(tableView._nameColSpan), text: I18n.qtr("Name") },
-                { criteria: "mrl", width: VLCStyle.colWidth(Math.max(tableView._nbCols - tableView._nameColSpan - 1), 1), text: I18n.qtr("Url"), showContextButton: true },
-            ]
+            sortModel: [{
+                size: 1,
+
+                model: {
+                    criteria: "thumbnail",
+
+                    headerDelegate: tableView.thumbnailHeader,
+                    colDelegate: tableView.thumbnailColumn
+                }
+            }, {
+                size: tableView._nameColSpan,
+
+                model: {
+                    criteria: "name",
+
+                    text: I18n.qtr("Name")
+                }
+            }, {
+                size: Math.max(tableView._nbCols - tableView._nameColSpan - 1, 1),
+
+                model: {
+                    criteria: "mrl",
+
+                    text: I18n.qtr("Url"),
+
+                    showContextButton: true
+                }
+            }]
 
             onActionForSelection: _actionAtIndex(selection[0].row)
             onItemDoubleClicked: _actionAtIndex(index)


=====================================
modules/gui/qt/widgets/qml/KeyNavigableTableView.qml
=====================================
@@ -54,7 +54,7 @@ FocusScope {
         var size = leftMargin + rightMargin
 
         for (var i in sortModel)
-            size += sortModel[i].width
+            size += VLCStyle.colWidth(sortModel[i].size)
 
         return size + Math.max(VLCStyle.column_spacing * (sortModel.length - 1), 0)
     }
@@ -314,11 +314,13 @@ FocusScope {
                         model: sortModel
                         MouseArea {
                             height: childrenRect.height
-                            width: modelData.width || 1
+
+                            width: VLCStyle.colWidth(modelData.size) || 1
+
                             //Layout.alignment: Qt.AlignVCenter
 
                             Loader {
-                                property var model: modelData
+                                property var model: modelData.model
 
                                 sourceComponent: model.headerDelegate || root.tableHeaderDelegate
                             }


=====================================
modules/gui/qt/widgets/qml/TableViewDelegate.qml
=====================================
@@ -179,7 +179,7 @@ T.Control {
             Loader{
                 property var rowModel: delegate.rowModel
 
-                property var colModel: modelData
+                property var colModel: modelData.model
 
                 readonly property int index: delegate._index
 
@@ -189,7 +189,7 @@ T.Control {
 
                 readonly property color foregroundColor: delegate.background.foregroundColor
 
-                width: (modelData.width) ? modelData.width : 0
+                width: (modelData.size) ? VLCStyle.colWidth(modelData.size) : 0
 
                 height: parent.height
 



View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/12497780d6b1d109f5bdfaaa0128a0a2506d0711...16e913456ee1075b2b819d7951892b1e3f3f980b

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/12497780d6b1d109f5bdfaaa0128a0a2506d0711...16e913456ee1075b2b819d7951892b1e3f3f980b
You're receiving this email because of your account on code.videolan.org.


VideoLAN code repository instance


More information about the vlc-commits mailing list