vlc | branch: master | Adrien Maglo <[email protected]> | Tue Apr 16 23:32:04 2019 +0200| [ec78cc6dfa48839c5b981c7249325a75af996f53] | committer: Thomas Guillem
qml: add sections to the MusicTrackListDisplay Signed-off-by: Thomas Guillem <[email protected]> > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=ec78cc6dfa48839c5b981c7249325a75af996f53 --- .../components/mediacenter/mlalbumtrackmodel.cpp | 12 ++++++++ .../components/mediacenter/mlalbumtrackmodel.hpp | 2 ++ .../mediacenter/MusicAlbumsGridExpandDelegate.qml | 2 ++ .../qt/qml/mediacenter/MusicTrackListDisplay.qml | 2 ++ modules/gui/qt/qml/utils/KeyNavigableListView.qml | 32 ++++++++++++++++++++++ modules/gui/qt/qml/utils/KeyNavigableTableView.qml | 2 ++ 6 files changed, 52 insertions(+) diff --git a/modules/gui/qt/components/mediacenter/mlalbumtrackmodel.cpp b/modules/gui/qt/components/mediacenter/mlalbumtrackmodel.cpp index 2b5be88f01..7ef567aeef 100644 --- a/modules/gui/qt/components/mediacenter/mlalbumtrackmodel.cpp +++ b/modules/gui/qt/components/mediacenter/mlalbumtrackmodel.cpp @@ -29,6 +29,7 @@ enum Role { TRACK_DURATION, TRACK_ALBUM, TRACK_ARTIST, + TRACK_FIRST_SYMBOL, }; } @@ -76,6 +77,8 @@ QVariant MLAlbumTrackModel::data(const QModelIndex &index, int role) const return QVariant::fromValue( ml_track->getAlbumTitle() ); case TRACK_ARTIST: return QVariant::fromValue( ml_track->getArtist() ); + case TRACK_FIRST_SYMBOL: + return QVariant::fromValue( getFirstSymbol( ml_track->getTitle() ) ); default : return QVariant(); } @@ -92,6 +95,7 @@ QHash<int, QByteArray> MLAlbumTrackModel::roleNames() const { TRACK_DURATION, "duration" }, { TRACK_ALBUM, "album_title"}, { TRACK_ARTIST, "main_artist"}, + { TRACK_FIRST_SYMBOL, "first_symbol"}, }; } @@ -177,3 +181,11 @@ void MLAlbumTrackModel::onVlcMlEvent(const vlc_ml_event_t* event) } MLBaseModel::onVlcMlEvent( event ); } + +QString MLAlbumTrackModel::getFirstSymbol( const QString& str ) +{ + QString ret("#"); + if ( str.length() > 0 && str[0].isLetter() ) + ret = str[0].toUpper(); + return ret; +} diff --git a/modules/gui/qt/components/mediacenter/mlalbumtrackmodel.hpp b/modules/gui/qt/components/mediacenter/mlalbumtrackmodel.hpp index 4314ff229a..bae6f42db9 100644 --- a/modules/gui/qt/components/mediacenter/mlalbumtrackmodel.hpp +++ b/modules/gui/qt/components/mediacenter/mlalbumtrackmodel.hpp @@ -49,5 +49,7 @@ private: virtual void onVlcMlEvent( const vlc_ml_event_t* event ) override; static QHash<QByteArray, vlc_ml_sorting_criteria_t> M_names_to_criteria; + + static QString getFirstSymbol( const QString& str ); }; #endif // MLTRACKMODEL_HPP diff --git a/modules/gui/qt/qml/mediacenter/MusicAlbumsGridExpandDelegate.qml b/modules/gui/qt/qml/mediacenter/MusicAlbumsGridExpandDelegate.qml index 6e17b1e34f..b037bf6f49 100644 --- a/modules/gui/qt/qml/mediacenter/MusicAlbumsGridExpandDelegate.qml +++ b/modules/gui/qt/qml/mediacenter/MusicAlbumsGridExpandDelegate.qml @@ -165,6 +165,8 @@ Utils.NavigableFocusScope { MusicTrackListDisplay { id: expand_track_id + section.property: "" + height: expand_track_id.contentHeight anchors { left: parent.left diff --git a/modules/gui/qt/qml/mediacenter/MusicTrackListDisplay.qml b/modules/gui/qt/qml/mediacenter/MusicTrackListDisplay.qml index a5034b94c0..f82e5e1299 100644 --- a/modules/gui/qt/qml/mediacenter/MusicTrackListDisplay.qml +++ b/modules/gui/qt/qml/mediacenter/MusicTrackListDisplay.qml @@ -37,6 +37,8 @@ Utils.KeyNavigableTableView { ListElement{ criteria: "disc_number"; width:0.05; text: qsTr("Disc"); showSection: "" } } + section.property: "first_symbol" + model: MLAlbumTrackModel { id: rootmodel ml: medialib diff --git a/modules/gui/qt/qml/utils/KeyNavigableListView.qml b/modules/gui/qt/qml/utils/KeyNavigableListView.qml index 35b832647e..c5eb93d240 100644 --- a/modules/gui/qt/qml/utils/KeyNavigableListView.qml +++ b/modules/gui/qt/qml/utils/KeyNavigableListView.qml @@ -18,6 +18,8 @@ import QtQuick 2.11 import QtQuick.Controls 2.4 +import "qrc:///style/" + NavigableFocusScope { id: listview_id @@ -52,6 +54,32 @@ NavigableFocusScope { property alias highlightMoveVelocity: view.highlightMoveVelocity + property alias section: view.section + + Component { + id: sectionHeading + Rectangle { + width: parent.width + height: childrenRect.height + + Column { + width: parent.width + + Text { + text: section + font.pixelSize: 20 + color: VLCStyle.colors.accent + } + + Rectangle { + width: parent.width + height: 1 + color: VLCStyle.colors.textInactive + } + } + } + } + ListView { id: view anchors.fill: parent @@ -66,6 +94,10 @@ NavigableFocusScope { highlightMoveDuration: 300 //ms highlightMoveVelocity: 1000 //px/s + section.property: "" + section.criteria: ViewSection.FullString + section.delegate: sectionHeading + Connections { target: view.currentItem ignoreUnknownSignals: true diff --git a/modules/gui/qt/qml/utils/KeyNavigableTableView.qml b/modules/gui/qt/qml/utils/KeyNavigableTableView.qml index 5a539367e3..d6d9d17f43 100644 --- a/modules/gui/qt/qml/utils/KeyNavigableTableView.qml +++ b/modules/gui/qt/qml/utils/KeyNavigableTableView.qml @@ -38,6 +38,8 @@ NavigableFocusScope { property alias interactive: view.interactive + property alias section: view.section + Utils.SelectableDelegateModel { id: delegateModel _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
