-- cgit v1.2.3 From 2511d583662d5e316a2957da7db3527ded32e8aa Mon Sep 17 00:00:00 2001 From: JoergAtGithub Date: Sun, 11 Oct 2020 01:06:24 +0200 Subject: Implemented sort by the column with the cursor on it (currentindex column) --- src/library/librarycontrol.cpp | 11 ++++++++--- src/library/libraryview.h | 2 ++ src/library/trackmodel.h | 1 + src/widget/wtracktableview.cpp | 5 +++++ src/widget/wtracktableview.h | 1 + 5 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/library/librarycontrol.cpp b/src/library/librarycontrol.cpp index e3c573771c..115a708f83 100644 --- a/src/library/librarycontrol.cpp +++ b/src/library/librarycontrol.cpp @@ -654,11 +654,16 @@ void LibraryControl::slotSortColumn(double v) { } void LibraryControl::slotSortColumnToggle(double v) { - int column = static_cast(v); - if (static_cast(m_pSortColumn->get()) == column) { + int sortColumnId = static_cast(v); + if (sortColumnId == TrackModel::SortColumnId::SORTCOLUMN_CURRENTINDEX) { + // Get the ID of the column with the cursor + sortColumnId = m_pLibraryWidget->getActiveView()->getColumnIdFromCurrentIndex(); + } + + if (static_cast(m_pSortColumn->get()) == sortColumnId) { m_pSortOrder->set(!m_pSortOrder->get()); } else { - m_pSortColumn->set(v); + m_pSortColumn->set(sortColumnId); m_pSortOrder->set(0); } } diff --git a/src/library/libraryview.h b/src/library/libraryview.h index 378691c55a..42f7184fc0 100644 --- a/src/library/libraryview.h +++ b/src/library/libraryview.h @@ -8,6 +8,7 @@ #define LIBRARYVIEW_H #include +#include "library/trackmodel.h" class LibraryView { public: @@ -37,6 +38,7 @@ class LibraryView { /// 1, the view should move to the next selection in the list. virtual void moveSelection(int delta) {Q_UNUSED(delta);} + virtual int getColumnIdFromCurrentIndex(){return TrackModel::SortColumnId::SORTCOLUMN_INVALID;}; /// If applicable, requests that the LibraryView changes the track color of /// the selected track. Does nothing otherwise. virtual void assignPreviousTrackColor(){}; diff --git a/src/library/trackmodel.h b/src/library/trackmodel.h index 42df1d2b56..702b4a9139 100644 --- a/src/library/trackmodel.h +++ b/src/library/trackmodel.h @@ -50,6 +50,7 @@ class TrackModel { typedef int CapabilitiesFlags; /** Enables us to do ORing */ enum SortColumnId { + SORTCOLUMN_CURRENTINDEX = -2, // Column with the cursor on it SORTCOLUMN_INVALID = -1, SORTCOLUMN_ARTIST = 0, SORTCOLUMN_TITLE, diff --git a/src/widget/wtracktableview.cpp b/src/widget/wtracktableview.cpp index 25461909b6..51b08741f2 100644 --- a/src/widget/wtracktableview.cpp +++ b/src/widget/wtracktableview.cpp @@ -363,6 +363,11 @@ void WTrackTableView::slotMouseDoubleClicked(const QModelIndex& index) { } } +int WTrackTableView::getColumnIdFromCurrentIndex() { + TrackModel* trackModel = getTrackModel(); + return trackModel->sortColumnIdFromColumnIndex(currentIndex().column()); +} + void WTrackTableView::assignPreviousTrackColor() { QModelIndexList indices = selectionModel()->selectedRows(); if (indices.size() <= 0) { diff --git a/src/widget/wtracktableview.h b/src/widget/wtracktableview.h index bd7f7b56b6..0e8490013a 100644 --- a/src/widget/wtracktableview.h +++ b/src/widget/wtracktableview.h @@ -40,6 +40,7 @@ class WTrackTableView : public WLibraryTableView { void loadSelectedTrackToGroup(QString group, bool play) override; void assignNextTrackColor() override; void assignPreviousTrackColor() override; + int getColumnIdFromCurrentIndex() override; QList getSelectedTrackIds() const; void setSelectedTracks(const QList& tracks); void saveCurrentVScrollBarPos(); -- cgit v1.2.3 From ae041b02e45955e28cabaf5303634da183f96b6e Mon Sep 17 00:00:00 2001 From: JoergAtGithub Date: Sun, 11 Oct 2020 01:50:31 +0200 Subject: Added missing check for m_pLibraryWidget and fixed clang format issues --- src/library/librarycontrol.cpp | 7 +++++-- src/library/libraryview.h | 5 ++++- src/widget/wtracktableview.cpp | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/library/librarycontrol.cpp b/src/library/librarycontrol.cpp index 115a708f83..7c7da463e7 100644 --- a/src/library/librarycontrol.cpp +++ b/src/library/librarycontrol.cpp @@ -656,10 +656,13 @@ void LibraryControl::slotSortColumn(double v) { void LibraryControl::slotSortColumnToggle(double v) { int sortColumnId = static_cast(v); if (sortColumnId == TrackModel::SortColumnId::SORTCOLUMN_CURRENTINDEX) { + if (!m_pLibraryWidget) { + return; + } // Get the ID of the column with the cursor sortColumnId = m_pLibraryWidget->getActiveView()->getColumnIdFromCurrentIndex(); - } - + } + if (static_cast(m_pSortColumn->get()) == sortColumnId) { m_pSortOrder->set(!m_pSortOrder->get()); } else { diff --git a/src/library/libraryview.h b/src/library/libraryview.h index 42f7184fc0..514ac953b4 100644 --- a/src/library/libraryview.h +++ b/src/library/libraryview.h @@ -8,6 +8,7 @@ #define LIBRARYVIEW_H #include + #include "library/trackmodel.h" class LibraryView { @@ -38,7 +39,9 @@ class LibraryView { /// 1, the view should move to the next selection in the list. virtual void moveSelection(int delta) {Q_UNUSED(delta);} - virtual int getColumnIdFromCurrentIndex(){return TrackModel::SortColumnId::SORTCOLUMN_INVALID;}; + virtual int getColumnIdFromCurrentIndex() { + return TrackModel::SortColumnId::SORTCOLUMN_INVALID; + }; /// If applicable, requests that the LibraryView changes the track color of /// the selected track. Does nothing otherwise. virtual void assignPreviousTrackColor(){}; diff --git a/src/widget/wtracktableview.cpp b/src/widget/wtracktableview.cpp index 51b08741f2..632764a8fd 100644 --- a/src/widget/wtracktableview.cpp +++ b/src/widget/wtracktableview.cpp @@ -364,7 +364,7 @@ void WTrackTableView::slotMouseDoubleClicked(const QModelIndex& index) { } int WTrackTableView::getColumnIdFromCurrentIndex() { - TrackModel* trackModel = getTrackModel(); + TrackModel* trackModel = getTrackModel(); return trackModel->sortColumnIdFromColumnIndex(currentIndex().column()); } -- cgit v1.2.3 From 439f9d2b31c32bad97127e0c1471f19b90e2b08f Mon Sep 17 00:00:00 2001 From: JoergAtGithub Date: Mon, 12 Oct 2020 23:32:52 +0200 Subject: Changed enumeration entries, now -1 is used for SORTCOLUMN_CURRENTINDEX and -2 for SORTCOLUMN_INVALID. --- src/library/trackmodel.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/library/trackmodel.h b/src/library/trackmodel.h index 702b4a9139..7d46aa1b2c 100644 --- a/src/library/trackmodel.h +++ b/src/library/trackmodel.h @@ -50,8 +50,8 @@ class TrackModel { typedef int CapabilitiesFlags; /** Enables us to do ORing */ enum SortColumnId { - SORTCOLUMN_CURRENTINDEX = -2, // Column with the cursor on it - SORTCOLUMN_INVALID = -1, + SORTCOLUMN_INVALID = -2, + SORTCOLUMN_CURRENTINDEX = -1, // Column with the cursor on it SORTCOLUMN_ARTIST = 0, SORTCOLUMN_TITLE, SORTCOLUMN_ALBUM, -- cgit v1.2.3 From 76e718cb6aaf53f2ec84c5e935c0b1cacc86337f Mon Sep 17 00:00:00 2001 From: JoergAtGithub Date: Sat, 17 Oct 2020 13:27:37 +0200 Subject: Added VERIFY_OR_DEBUG_ASSERT for trackModel --- src/widget/wtracktableview.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/widget/wtracktableview.cpp b/src/widget/wtracktableview.cpp index 632764a8fd..56456fded3 100644 --- a/src/widget/wtracktableview.cpp +++ b/src/widget/wtracktableview.cpp @@ -365,6 +365,9 @@ void WTrackTableView::slotMouseDoubleClicked(const QModelIndex& index) { int WTrackTableView::getColumnIdFromCurrentIndex() { TrackModel* trackModel = getTrackModel(); + VERIFY_OR_DEBUG_ASSERT(trackModel) { + return TrackModel::SortColumnId::SORTCOLUMN_INVALID; + } return trackModel->sortColumnIdFromColumnIndex(currentIndex().column()); } -- cgit v1.2.3 From f80ed7f0de94a346cb05e5e17e2da069ddf8d7e8 Mon Sep 17 00:00:00 2001 From: JoergAtGithub Date: Sat, 17 Oct 2020 21:26:26 +0200 Subject: Changed values of the SORTCOLUMNID enumeration -1 -> Invalid 0 -> Current index 1...30 Hardcoded indices of teh sort columns --- res/controllers/Denon-MC7000-scripts.js | 8 ++-- res/controllers/Roland_DJ-505-scripts.js | 8 ++-- src/library/basesqltablemodel.cpp | 6 ++- src/library/basesqltablemodel.h | 2 +- src/library/browse/browsetablemodel.cpp | 10 ++-- src/library/browse/browsetablemodel.h | 2 +- src/library/playlisttablemodel.cpp | 6 ++- src/library/rekordbox/rekordboxfeature.cpp | 6 ++- src/library/serato/seratoplaylistmodel.cpp | 6 ++- src/library/trackmodel.h | 76 ++++++++++++++++-------------- src/widget/wtracktableview.cpp | 3 +- 11 files changed, 75 insertions(+), 58 deletions(-) diff --git a/res/controllers/Denon-MC7000-scripts.js b/res/controllers/Denon-MC7000-scripts.js index e422f9862d..a8afcd8361 100644 --- a/res/controllers/Denon-MC7000-scripts.js +++ b/res/controllers/Denon-MC7000-scripts.js @@ -726,16 +726,16 @@ MC7000.sortLibrary = function(channel, control, value) { var sortColumn; switch (control) { case 0x12: // TITLE - sortColumn = 1; + sortColumn = 2; break; case 0x13: // BPM - sortColumn = 14; + sortColumn = 15; break; case 0x14: // ARTIST - sortColumn = 0; + sortColumn = 1; break; case 0x20: // KEY - sortColumn = 19; + sortColumn = 20; break; } engine.setValue("[Library]", "sort_column_toggle", sortColumn); diff --git a/res/controllers/Roland_DJ-505-scripts.js b/res/controllers/Roland_DJ-505-scripts.js index 749c3b6aa5..6303d86ed1 100644 --- a/res/controllers/Roland_DJ-505-scripts.js +++ b/res/controllers/Roland_DJ-505-scripts.js @@ -313,16 +313,16 @@ DJ505.sortLibrary = function(channel, control, value, _status, _group) { var sortColumn; switch (control) { case 0x12: // SONG - sortColumn = 1; + sortColumn = 2; break; case 0x13: // BPM - sortColumn = 14; + sortColumn = 15; break; case 0x14: // ARTIST - sortColumn = 0; + sortColumn = 1; break; case 0x1E: // KEY - sortColumn = 19; + sortColumn = 20; break; default: // unknown sort column diff --git a/src/library/basesqltablemodel.cpp b/src/library/basesqltablemodel.cpp index b577d9048c..71f9c42aec 100644 --- a/src/library/basesqltablemodel.cpp +++ b/src/library/basesqltablemodel.cpp @@ -70,7 +70,7 @@ void BaseSqlTableModel::initHeaderProperties() { void BaseSqlTableModel::initSortColumnMapping() { // Add a bijective mapping between the SortColumnIds and column indices - for (int i = 0; i < TrackModel::SortColumnId::NUM_SORTCOLUMNIDS; ++i) { + for (int i = 0; i < TrackModel::SortColumnId::SORTCOLUMN_ID_MAX; ++i) { m_columnIndexBySortColumnId[i] = -1; } m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_ARTIST] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_ARTIST); @@ -99,7 +99,9 @@ void BaseSqlTableModel::initSortColumnMapping() { m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_SAMPLERATE] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_SAMPLERATE); m_sortColumnIdByColumnIndex.clear(); - for (int i = 0; i < TrackModel::SortColumnId::NUM_SORTCOLUMNIDS; ++i) { + for (int i = TrackModel::SortColumnId::SORTCOLUMN_ID_MIN; + i < TrackModel::SortColumnId::SORTCOLUMN_ID_MAX; + ++i) { TrackModel::SortColumnId sortColumn = static_cast(i); m_sortColumnIdByColumnIndex.insert(m_columnIndexBySortColumnId[sortColumn], sortColumn); } diff --git a/src/library/basesqltablemodel.h b/src/library/basesqltablemodel.h index 3a5e3df2b6..24a6ae8478 100644 --- a/src/library/basesqltablemodel.h +++ b/src/library/basesqltablemodel.h @@ -96,7 +96,7 @@ class BaseSqlTableModel : public BaseTrackTableModel { QSqlDatabase m_database; QString m_tableOrderBy; - int m_columnIndexBySortColumnId[NUM_SORTCOLUMNIDS]; + int m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_ID_MAX]; QMap m_sortColumnIdByColumnIndex; private slots: diff --git a/src/library/browse/browsetablemodel.cpp b/src/library/browse/browsetablemodel.cpp index 8525e2e991..23ccd5ad0c 100644 --- a/src/library/browse/browsetablemodel.cpp +++ b/src/library/browse/browsetablemodel.cpp @@ -68,7 +68,7 @@ BrowseTableModel::BrowseTableModel(QObject* parent, setDefaultSort(COLUMN_FILENAME, Qt::AscendingOrder); - for (int i = 0; i < TrackModel::SortColumnId::NUM_SORTCOLUMNIDS; ++i) { + for (int i = 0; i < TrackModel::SortColumnId::SORTCOLUMN_ID_MAX; ++i) { m_columnIndexBySortColumnId[i] = -1; } m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_FILENAME] = COLUMN_FILENAME; @@ -95,7 +95,9 @@ BrowseTableModel::BrowseTableModel(QObject* parent, m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_FILE_CREATION_TIME] = COLUMN_FILE_CREATION_TIME; m_sortColumnIdByColumnIndex.clear(); - for (int i = 0; i < TrackModel::SortColumnId::NUM_SORTCOLUMNIDS; ++i) { + for (int i = TrackModel::SortColumnId::SORTCOLUMN_ID_MIN; + i < TrackModel::SortColumnId::SORTCOLUMN_ID_MAX; + ++i) { TrackModel::SortColumnId sortColumn = static_cast(i); int columnIndex = m_columnIndexBySortColumnId[sortColumn]; if (columnIndex >= 0) { @@ -133,8 +135,8 @@ BrowseTableModel::~BrowseTableModel() { } int BrowseTableModel::columnIndexFromSortColumnId(TrackModel::SortColumnId column) { - if (column == TrackModel::SortColumnId::SORTCOLUMN_INVALID || - column >= TrackModel::SortColumnId::NUM_SORTCOLUMNIDS) { + if (column < TrackModel::SortColumnId::SORTCOLUMN_ID_MIN || + column > TrackModel::SortColumnId::SORTCOLUMN_ID_MAX) { return -1; } diff --git a/src/library/browse/browsetablemodel.h b/src/library/browse/browsetablemodel.h index 205f11c0e7..7a33b265a2 100644 --- a/src/library/browse/browsetablemodel.h +++ b/src/library/browse/browsetablemodel.h @@ -88,7 +88,7 @@ class BrowseTableModel final : public QStandardItemModel, public virtual TrackMo RecordingManager* m_pRecordingManager; BrowseThreadPointer m_pBrowseThread; QString m_previewDeckGroup; - int m_columnIndexBySortColumnId[TrackModel::SortColumnId::NUM_SORTCOLUMNIDS]; + int m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_ID_MAX]; QMap m_sortColumnIdByColumnIndex; }; diff --git a/src/library/playlisttablemodel.cpp b/src/library/playlisttablemodel.cpp index 3fc58d5570..6ccfaba177 100644 --- a/src/library/playlisttablemodel.cpp +++ b/src/library/playlisttablemodel.cpp @@ -19,7 +19,7 @@ PlaylistTableModel::PlaylistTableModel(QObject* parent, void PlaylistTableModel::initSortColumnMapping() { // Add a bijective mapping between the SortColumnIds and column indices - for (int i = 0; i < TrackModel::SortColumnId::NUM_SORTCOLUMNIDS; ++i) { + for (int i = 0; i < TrackModel::SortColumnId::SORTCOLUMN_ID_MAX; ++i) { m_columnIndexBySortColumnId[i] = -1; } m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_ARTIST] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_ARTIST); @@ -47,7 +47,9 @@ void PlaylistTableModel::initSortColumnMapping() { m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_POSITION] = fieldIndex(ColumnCache::COLUMN_PLAYLISTTRACKSTABLE_POSITION); m_sortColumnIdByColumnIndex.clear(); - for (int i = 0; i < TrackModel::SortColumnId::NUM_SORTCOLUMNIDS; ++i) { + for (int i = TrackModel::SortColumnId::SORTCOLUMN_ID_MIN; + i < TrackModel::SortColumnId::SORTCOLUMN_ID_MAX; + ++i) { TrackModel::SortColumnId sortColumn = static_cast(i); m_sortColumnIdByColumnIndex.insert(m_columnIndexBySortColumnId[sortColumn], sortColumn); } diff --git a/src/library/rekordbox/rekordboxfeature.cpp b/src/library/rekordbox/rekordboxfeature.cpp index 1b05695b42..b7a0bf44ac 100644 --- a/src/library/rekordbox/rekordboxfeature.cpp +++ b/src/library/rekordbox/rekordboxfeature.cpp @@ -1028,7 +1028,7 @@ RekordboxPlaylistModel::RekordboxPlaylistModel(QObject* parent, void RekordboxPlaylistModel::initSortColumnMapping() { // Add a bijective mapping between the SortColumnIds and column indices - for (int i = 0; i < TrackModel::SortColumnId::NUM_SORTCOLUMNIDS; ++i) { + for (int i = 0; i < TrackModel::SortColumnId::SORTCOLUMN_ID_MAX; ++i) { m_columnIndexBySortColumnId[i] = -1; } @@ -1058,7 +1058,9 @@ void RekordboxPlaylistModel::initSortColumnMapping() { m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_POSITION] = fieldIndex(ColumnCache::COLUMN_PLAYLISTTRACKSTABLE_POSITION); m_sortColumnIdByColumnIndex.clear(); - for (int i = 0; i < TrackModel::SortColumnId::NUM_SORTCOLUMNIDS; ++i) { + for (int i = TrackModel::SortColumnId::SORTCOLUMN_ID_MIN; + i < TrackModel::SortColumnId::SORTCOLUMN_ID_MAX; + ++i) { TrackModel::SortColumnId sortColumn = static_cast(i); m_sortColumnIdByColumnIndex.insert(m_columnIndexBySortColumnId[sortColumn], sortColumn); } diff --git a/src/library/serato/seratoplaylistmodel.cpp b/src/library/serato/seratoplaylistmodel.cpp index cb8be77a10..e4180d0383 100644 --- a/src/library/serato/seratoplaylistmodel.cpp +++ b/src/library/serato/seratoplaylistmodel.cpp @@ -14,7 +14,7 @@ SeratoPlaylistModel::SeratoPlaylistModel(QObject* parent, void SeratoPlaylistModel::initSortColumnMapping() { // Add a bijective mapping between the SortColumnIds and column indices - for (int i = 0; i < TrackModel::SortColumnId::NUM_SORTCOLUMNIDS; ++i) { + for (int i = 0; i < TrackModel::SortColumnId::SORTCOLUMN_ID_MAX; ++i) { m_columnIndexBySortColumnId[i] = -1; } @@ -66,7 +66,9 @@ void SeratoPlaylistModel::initSortColumnMapping() { fieldIndex(ColumnCache::COLUMN_PLAYLISTTRACKSTABLE_POSITION); m_sortColumnIdByColumnIndex.clear(); - for (int i = 0; i < TrackModel::SortColumnId::NUM_SORTCOLUMNIDS; ++i) { + for (int i = TrackModel::SortColumnId::SORTCOLUMN_ID_MIN; + i < TrackModel::SortColumnId::SORTCOLUMN_ID_MAX; + ++i) { TrackModel::SortColumnId sortColumn = static_cast(i); m_sortColumnIdByColumnIndex.insert(m_columnIndexBySortColumnId[sortColumn], sortColumn); } diff --git a/src/library/trackmodel.h b/src/library/trackmodel.h index 7d46aa1b2c..3ce85f6f75 100644 --- a/src/library/trackmodel.h +++ b/src/library/trackmodel.h @@ -49,42 +49,48 @@ class TrackModel { }; typedef int CapabilitiesFlags; /** Enables us to do ORing */ + // Note that these enum values are used literally by controller scripts and must never be changed! + // Both reordering or insertion of new enum variants is strictly forbidden! + // New variants must always be inserted between the last valid and before the terminating variant SORTCOLUMN_ID_MAX! enum SortColumnId { - SORTCOLUMN_INVALID = -2, - SORTCOLUMN_CURRENTINDEX = -1, // Column with the cursor on it - SORTCOLUMN_ARTIST = 0, - SORTCOLUMN_TITLE, - SORTCOLUMN_ALBUM, - SORTCOLUMN_ALBUMARTIST, - SORTCOLUMN_YEAR, - SORTCOLUMN_GENRE, - SORTCOLUMN_COMPOSER, - SORTCOLUMN_GROUPING, - SORTCOLUMN_TRACKNUMBER, - SORTCOLUMN_FILETYPE, - SORTCOLUMN_NATIVELOCATION, - SORTCOLUMN_COMMENT, - SORTCOLUMN_DURATION, - SORTCOLUMN_BITRATE, - SORTCOLUMN_BPM, - SORTCOLUMN_REPLAYGAIN, - SORTCOLUMN_DATETIMEADDED, - SORTCOLUMN_TIMESPLAYED, - SORTCOLUMN_RATING, - SORTCOLUMN_KEY, - SORTCOLUMN_PREVIEW, - SORTCOLUMN_COVERART, - SORTCOLUMN_POSITION, - SORTCOLUMN_PLAYLISTID, - SORTCOLUMN_LOCATION, - SORTCOLUMN_FILENAME, - SORTCOLUMN_FILE_MODIFIED_TIME, - SORTCOLUMN_FILE_CREATION_TIME, - SORTCOLUMN_SAMPLERATE, - SORTCOLUMN_COLOR, - - // NUM_SORTCOLUMNS should always be the last item. - NUM_SORTCOLUMNIDS + SORTCOLUMN_INVALID = -1, + SORTCOLUMN_CURRENTINDEX = 0, // Column with the cursor on it + SORTCOLUMN_ARTIST = 1, + SORTCOLUMN_TITLE = 2, + SORTCOLUMN_ALBUM = 3, + SORTCOLUMN_ALBUMARTIST = 4, + SORTCOLUMN_YEAR = 5, + SORTCOLUMN_GENRE = 6, + SORTCOLUMN_COMPOSER = 7, + SORTCOLUMN_GROUPING = 8, + SORTCOLUMN_TRACKNUMBER = 9, + SORTCOLUMN_FILETYPE = 10, + SORTCOLUMN_NATIVELOCATION = 11, + SORTCOLUMN_COMMENT = 12, + SORTCOLUMN_DURATION = 13, + SORTCOLUMN_BITRATE = 14, + SORTCOLUMN_BPM = 15, + SORTCOLUMN_REPLAYGAIN = 16, + SORTCOLUMN_DATETIMEADDED = 17, + SORTCOLUMN_TIMESPLAYED = 18, + SORTCOLUMN_RATING = 19, + SORTCOLUMN_KEY = 20, + SORTCOLUMN_PREVIEW = 21, + SORTCOLUMN_COVERART = 22, + SORTCOLUMN_POSITION = 23, + SORTCOLUMN_PLAYLISTID = 24, + SORTCOLUMN_LOCATION = 25, + SORTCOLUMN_FILENAME = 26, + SORTCOLUMN_FILE_MODIFIED_TIME = 27, + SORTCOLUMN_FILE_CREATION_TIME = 28, + SORTCOLUMN_SAMPLERATE = 29, + SORTCOLUMN_COLOR = 30, + + // SORTCOLUMN_ID_MAX terminates the list of columns, it must be always after the last item + SORTCOLUMN_ID_MAX, + + SORTCOLUMN_ID_MIN = SORTCOLUMN_ARTIST, + NUM_SORTCOLUMNIDS = (SORTCOLUMN_ID_MAX - SORTCOLUMN_ID_MIN) + 1 }; // Deserialize and return the track at the given QModelIndex diff --git a/src/widget/wtracktableview.cpp b/src/widget/wtracktableview.cpp index 56456fded3..9794c7e300 100644 --- a/src/widget/wtracktableview.cpp +++ b/src/widget/wtracktableview.cpp @@ -945,7 +945,8 @@ void WTrackTableView::applySortingIfVisible() { void WTrackTableView::applySorting() { TrackModel* trackModel = getTrackModel(); int sortColumnId = static_cast(m_pSortColumn->get()); - if (sortColumnId < 0 || sortColumnId >= TrackModel::SortColumnId::NUM_SORTCOLUMNIDS) { + if (sortColumnId < TrackModel::SortColumnId::SORTCOLUMN_ID_MIN || + sortColumnId > TrackModel::SortColumnId::SORTCOLUMN_ID_MAX) { return; } -- cgit v1.2.3 From dfc9c25669b76f2463f2132c292895bf82cf3666 Mon Sep 17 00:00:00 2001 From: JoergAtGithub Date: Sat, 24 Oct 2020 12:24:10 +0200 Subject: Replaced if condition by VERIFY_OR_DEBUG_ASSERT Fixed the condition for the maximum allowed value --- src/library/browse/browsetablemodel.cpp | 2 +- src/widget/wtracktableview.cpp | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/library/browse/browsetablemodel.cpp b/src/library/browse/browsetablemodel.cpp index 23ccd5ad0c..85d91a7754 100644 --- a/src/library/browse/browsetablemodel.cpp +++ b/src/library/browse/browsetablemodel.cpp @@ -136,7 +136,7 @@ BrowseTableModel::~BrowseTableModel() { int BrowseTableModel::columnIndexFromSortColumnId(TrackModel::SortColumnId column) { if (column < TrackModel::SortColumnId::SORTCOLUMN_ID_MIN || - column > TrackModel::SortColumnId::SORTCOLUMN_ID_MAX) { + column >= TrackModel::SortColumnId::SORTCOLUMN_ID_MAX) { return -1; } diff --git a/src/widget/wtracktableview.cpp b/src/widget/wtracktableview.cpp index 9794c7e300..a79dac7010 100644 --- a/src/widget/wtracktableview.cpp +++ b/src/widget/wtracktableview.cpp @@ -945,8 +945,13 @@ void WTrackTableView::applySortingIfVisible() { void WTrackTableView::applySorting() { TrackModel* trackModel = getTrackModel(); int sortColumnId = static_cast(m_pSortColumn->get()); - if (sortColumnId < TrackModel::SortColumnId::SORTCOLUMN_ID_MIN || - sortColumnId > TrackModel::SortColumnId::SORTCOLUMN_ID_MAX) { + if (sortColumnId == TrackModel::SortColumnId::SORTCOLUMN_INVALID) { + // During startup phase of Mixxx, this method is called with SORTCOLUMN_INVALID + return; + } + VERIFY_OR_DEBUG_ASSERT( + sortColumnId >= TrackModel::SortColumnId::SORTCOLUMN_ID_MIN && + sortColumnId < TrackModel::SortColumnId::SORTCOLUMN_ID_MAX) { return; } -- cgit v1.2.3 From bcca0770ef036c840f0e48e2047212eaff697a73 Mon Sep 17 00:00:00 2001 From: ronso0 Date: Wed, 21 Oct 2020 23:58:03 +0200 Subject: Librarycontrol: allow [Library],GoToItem press dialog buttons --- src/library/librarycontrol.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/library/librarycontrol.cpp b/src/library/librarycontrol.cpp index e3c573771c..94073c6ef0 100644 --- a/src/library/librarycontrol.cpp +++ b/src/library/librarycontrol.cpp @@ -643,6 +643,13 @@ void LibraryControl::slotGoToItem(double v) { // Clear the search if the searchbox has focus emit clearSearchIfClearButtonHasFocus(); + // If the focused window is a dialog, press Enter + auto focusWindow = QApplication::focusWindow(); + if (focusWindow && (focusWindow->type() & (Qt::Dialog | Qt::Popup))) { + QKeyEvent event(QEvent::KeyPress, Qt::Key_Enter, Qt::NoModifier); + QApplication::sendEvent(focusWindow, &event); + } + // TODO(xxx) instead of remote control the widgets individual, we should // translate this into Alt+Return and handle it at each library widget // individual https://bugs.launchpad.net/mixxx/+bug/1758618 -- cgit v1.2.3 From 03ebd56115278ef74f71fe7fcdb14a54fa741081 Mon Sep 17 00:00:00 2001 From: JoergAtGithub Date: Wed, 28 Oct 2020 23:51:44 +0100 Subject: Make SortColumnId an enum class (based on int) and use camelCase for the enum members --- src/library/basesqltablemodel.cpp | 112 +++++++++++++++++++++-------- src/library/basesqltablemodel.h | 2 +- src/library/browse/browsetablemodel.cpp | 88 +++++++++++++++-------- src/library/browse/browsetablemodel.h | 2 +- src/library/librarycontrol.cpp | 6 +- src/library/libraryview.h | 4 +- src/library/playlisttablemodel.cpp | 102 +++++++++++++++++++------- src/library/rekordbox/rekordboxfeature.cpp | 106 +++++++++++++++++++-------- src/library/serato/seratoplaylistmodel.cpp | 58 ++++++++------- src/library/trackmodel.h | 83 +++++++++++---------- src/widget/wtracktableview.cpp | 20 +++--- src/widget/wtracktableview.h | 2 +- 12 files changed, 383 insertions(+), 202 deletions(-) diff --git a/src/library/basesqltablemodel.cpp b/src/library/basesqltablemodel.cpp index 71f9c42aec..d3a41017ce 100644 --- a/src/library/basesqltablemodel.cpp +++ b/src/library/basesqltablemodel.cpp @@ -70,40 +70,90 @@ void BaseSqlTableModel::initHeaderProperties() { void BaseSqlTableModel::initSortColumnMapping() { // Add a bijective mapping between the SortColumnIds and column indices - for (int i = 0; i < TrackModel::SortColumnId::SORTCOLUMN_ID_MAX; ++i) { + for (int i = 0; i < static_cast(TrackModel::SortColumnId::sortColumnIdMax); ++i) { m_columnIndexBySortColumnId[i] = -1; } - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_ARTIST] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_ARTIST); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_TITLE] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_TITLE); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_ALBUM] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_ALBUM); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_ALBUMARTIST] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_ALBUMARTIST); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_YEAR] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_YEAR); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_GENRE] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_GENRE); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_COMPOSER] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_COMPOSER); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_GROUPING] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_GROUPING); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_TRACKNUMBER] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_TRACKNUMBER); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_FILETYPE] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_FILETYPE); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_NATIVELOCATION] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_NATIVELOCATION); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_COMMENT] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_COMMENT); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_DURATION] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_DURATION); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_BITRATE] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_BITRATE); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_BPM] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_BPM); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_REPLAYGAIN] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_REPLAYGAIN); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_DATETIMEADDED] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_DATETIMEADDED); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_TIMESPLAYED] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_TIMESPLAYED); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_RATING] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_RATING); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_KEY] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_KEY); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_PREVIEW] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_PREVIEW); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_COLOR] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_COLOR); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_COVERART] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_COVERART); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_SAMPLERATE] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_SAMPLERATE); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnArtist)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_ARTIST); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnTitle)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_TITLE); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnAlbum)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_ALBUM); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnAlbumArtist)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_ALBUMARTIST); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnYear)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_YEAR); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnGenre)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_GENRE); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnComposer)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_COMPOSER); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnGrouping)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_GROUPING); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnTrackNumber)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_TRACKNUMBER); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnFileType)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_FILETYPE); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnNativeLocation)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_NATIVELOCATION); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnComment)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_COMMENT); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnDuration)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_DURATION); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnBitRate)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_BITRATE); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnBpm)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_BPM); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnReplayGain)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_REPLAYGAIN); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnDateTimeAdded)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_DATETIMEADDED); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnTimesPlayed)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_TIMESPLAYED); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnRating)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_RATING); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnKey)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_KEY); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnPreview)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_PREVIEW); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnColor)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_COLOR); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnCoverArt)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_COVERART); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnSampleRate)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_SAMPLERATE); m_sortColumnIdByColumnIndex.clear(); - for (int i = TrackModel::SortColumnId::SORTCOLUMN_ID_MIN; - i < TrackModel::SortColumnId::SORTCOLUMN_ID_MAX; + for (int i = static_cast(TrackModel::SortColumnId::sortColumnIdMin); + i < static_cast(TrackModel::SortColumnId::sortColumnIdMax); ++i) { TrackModel::SortColumnId sortColumn = static_cast(i); - m_sortColumnIdByColumnIndex.insert(m_columnIndexBySortColumnId[sortColumn], sortColumn); + m_sortColumnIdByColumnIndex.insert( + m_columnIndexBySortColumnId[static_cast(sortColumn)], + sortColumn); } } @@ -329,15 +379,15 @@ void BaseSqlTableModel::setTable(const QString& tableName, } int BaseSqlTableModel::columnIndexFromSortColumnId(TrackModel::SortColumnId column) { - if (column == TrackModel::SortColumnId::SORTCOLUMN_INVALID) { + if (column == TrackModel::SortColumnId::sortColumnInvalid) { return -1; } - return m_columnIndexBySortColumnId[column]; + return m_columnIndexBySortColumnId[static_cast(column)]; } TrackModel::SortColumnId BaseSqlTableModel::sortColumnIdFromColumnIndex(int index) { - return m_sortColumnIdByColumnIndex.value(index, TrackModel::SortColumnId::SORTCOLUMN_INVALID); + return m_sortColumnIdByColumnIndex.value(index, TrackModel::SortColumnId::sortColumnInvalid); } const QString BaseSqlTableModel::currentSearch() const { diff --git a/src/library/basesqltablemodel.h b/src/library/basesqltablemodel.h index 24a6ae8478..91cbd4d4dd 100644 --- a/src/library/basesqltablemodel.h +++ b/src/library/basesqltablemodel.h @@ -96,7 +96,7 @@ class BaseSqlTableModel : public BaseTrackTableModel { QSqlDatabase m_database; QString m_tableOrderBy; - int m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_ID_MAX]; + int m_columnIndexBySortColumnId[TrackModel::SortColumnId::sortColumnIdMax]; QMap m_sortColumnIdByColumnIndex; private slots: diff --git a/src/library/browse/browsetablemodel.cpp b/src/library/browse/browsetablemodel.cpp index 85d91a7754..9f6d0e4d27 100644 --- a/src/library/browse/browsetablemodel.cpp +++ b/src/library/browse/browsetablemodel.cpp @@ -68,38 +68,66 @@ BrowseTableModel::BrowseTableModel(QObject* parent, setDefaultSort(COLUMN_FILENAME, Qt::AscendingOrder); - for (int i = 0; i < TrackModel::SortColumnId::SORTCOLUMN_ID_MAX; ++i) { + for (int i = 0; i < static_cast(TrackModel::SortColumnId::sortColumnIdMax); ++i) { m_columnIndexBySortColumnId[i] = -1; } - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_FILENAME] = COLUMN_FILENAME; - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_ARTIST] = COLUMN_ARTIST; - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_TITLE] = COLUMN_TITLE; - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_ALBUM] = COLUMN_ALBUM; - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_ALBUMARTIST] = COLUMN_ALBUMARTIST; - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_YEAR] = COLUMN_YEAR; - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_GENRE] = COLUMN_GENRE; - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_COMPOSER] = COLUMN_COMPOSER; - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_GROUPING] = COLUMN_GROUPING; - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_TRACKNUMBER] = COLUMN_TRACK_NUMBER; - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_FILETYPE] = COLUMN_TYPE; - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_NATIVELOCATION] = COLUMN_NATIVELOCATION; - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_COMMENT] = COLUMN_COMMENT; - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_DURATION] = COLUMN_DURATION; - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_BITRATE] = COLUMN_BITRATE; - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_BPM] = COLUMN_BPM; - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_REPLAYGAIN] = COLUMN_REPLAYGAIN; - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_KEY] = COLUMN_KEY; - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_PREVIEW] = COLUMN_PREVIEW; - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_GROUPING] = COLUMN_GROUPING; - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_FILE_MODIFIED_TIME] = COLUMN_FILE_MODIFIED_TIME; - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_FILE_CREATION_TIME] = COLUMN_FILE_CREATION_TIME; + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnFilename)] = COLUMN_FILENAME; + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnArtist)] = COLUMN_ARTIST; + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnTitle)] = COLUMN_TITLE; + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnAlbum)] = COLUMN_ALBUM; + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnAlbumArtist)] = + COLUMN_ALBUMARTIST; + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnYear)] = COLUMN_YEAR; + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnGenre)] = COLUMN_GENRE; + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnComposer)] = COLUMN_COMPOSER; + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnGrouping)] = COLUMN_GROUPING; + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnTrackNumber)] = + COLUMN_TRACK_NUMBER; + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnFileType)] = COLUMN_TYPE; + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnNativeLocation)] = + COLUMN_NATIVELOCATION; + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnComment)] = COLUMN_COMMENT; + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnDuration)] = COLUMN_DURATION; + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnBitRate)] = COLUMN_BITRATE; + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnBpm)] = COLUMN_BPM; + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnReplayGain)] = + COLUMN_REPLAYGAIN; + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnKey)] = COLUMN_KEY; + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnPreview)] = COLUMN_PREVIEW; + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnGrouping)] = COLUMN_GROUPING; + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnFileModifiedTime)] = + COLUMN_FILE_MODIFIED_TIME; + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnFileCreationTime)] = + COLUMN_FILE_CREATION_TIME; m_sortColumnIdByColumnIndex.clear(); - for (int i = TrackModel::SortColumnId::SORTCOLUMN_ID_MIN; - i < TrackModel::SortColumnId::SORTCOLUMN_ID_MAX; + for (int i = static_cast(TrackModel::SortColumnId::sortColumnIdMin); + i < static_cast(TrackModel::SortColumnId::sortColumnIdMax); ++i) { TrackModel::SortColumnId sortColumn = static_cast(i); - int columnIndex = m_columnIndexBySortColumnId[sortColumn]; + int columnIndex = m_columnIndexBySortColumnId[static_cast(sortColumn)]; if (columnIndex >= 0) { m_sortColumnIdByColumnIndex.insert(columnIndex, sortColumn); } @@ -135,16 +163,16 @@ BrowseTableModel::~BrowseTableModel() { } int BrowseTableModel::columnIndexFromSortColumnId(TrackModel::SortColumnId column) { - if (column < TrackModel::SortColumnId::SORTCOLUMN_ID_MIN || - column >= TrackModel::SortColumnId::SORTCOLUMN_ID_MAX) { + if (column < TrackModel::SortColumnId::sortColumnIdMin || + column >= TrackModel::SortColumnId::sortColumnIdMax) { return -1; } - return m_columnIndexBySortColumnId[column]; + return m_columnIndexBySortColumnId[static_cast(column)]; } TrackModel::SortColumnId BrowseTableModel::sortColumnIdFromColumnIndex(int index) { - return m_sortColumnIdByColumnIndex.value(index, TrackModel::SortColumnId::SORTCOLUMN_INVALID); + return m_sortColumnIdByColumnIndex.value(index, TrackModel::SortColumnId::sortColumnInvalid); } const QList& BrowseTableModel::searchColumns() const { diff --git a/src/library/browse/browsetablemodel.h b/src/library/browse/browsetablemodel.h index 7a33b265a2..686527348c 100644 --- a/src/library/browse/browsetablemodel.h +++ b/src/library/browse/browsetablemodel.h @@ -88,7 +88,7 @@ class BrowseTableModel final : public QStandardItemModel, public virtual TrackMo RecordingManager* m_pRecordingManager; BrowseThreadPointer m_pBrowseThread; QString m_previewDeckGroup; - int m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_ID_MAX]; + int m_columnIndexBySortColumnId[TrackModel::SortColumnId::sortColumnIdMax]; QMap m_sortColumnIdByColumnIndex; }; diff --git a/src/library/librarycontrol.cpp b/src/library/librarycontrol.cpp index 7c7da463e7..b686591efb 100644 --- a/src/library/librarycontrol.cpp +++ b/src/library/librarycontrol.cpp @@ -655,12 +655,14 @@ void LibraryControl::slotSortColumn(double v) { void LibraryControl::slotSortColumnToggle(double v) { int sortColumnId = static_cast(v); - if (sortColumnId == TrackModel::SortColumnId::SORTCOLUMN_CURRENTINDEX) { + if (sortColumnId == static_cast(TrackModel::SortColumnId::sortColumnCurrentIndex)) { if (!m_pLibraryWidget) { return; } // Get the ID of the column with the cursor - sortColumnId = m_pLibraryWidget->getActiveView()->getColumnIdFromCurrentIndex(); + sortColumnId = + static_cast(m_pLibraryWidget->getActiveView() + ->getColumnIdFromCurrentIndex()); } if (static_cast(m_pSortColumn->get()) == sortColumnId) { diff --git a/src/library/libraryview.h b/src/library/libraryview.h index 514ac953b4..2e83944ba8 100644 --- a/src/library/libraryview.h +++ b/src/library/libraryview.h @@ -39,8 +39,8 @@ class LibraryView { /// 1, the view should move to the next selection in the list. virtual void moveSelection(int delta) {Q_UNUSED(delta);} - virtual int getColumnIdFromCurrentIndex() { - return TrackModel::SortColumnId::SORTCOLUMN_INVALID; + virtual TrackModel::SortColumnId getColumnIdFromCurrentIndex() { + return TrackModel::SortColumnId::sortColumnInvalid; }; /// If applicable, requests that the LibraryView changes the track color of /// the selected track. Does nothing otherwise. diff --git a/src/library/playlisttablemodel.cpp b/src/library/playlisttablemodel.cpp index 6ccfaba177..2732ba99b3 100644 --- a/src/library/playlisttablemodel.cpp +++ b/src/library/playlisttablemodel.cpp @@ -19,39 +19,87 @@ PlaylistTableModel::PlaylistTableModel(QObject* parent, void PlaylistTableModel::initSortColumnMapping() { // Add a bijective mapping between the SortColumnIds and column indices - for (int i = 0; i < TrackModel::SortColumnId::SORTCOLUMN_ID_MAX; ++i) { + for (int i = 0; i < static_cast(TrackModel::SortColumnId::sortColumnIdMax); ++i) { m_columnIndexBySortColumnId[i] = -1; } - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_ARTIST] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_ARTIST); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_TITLE] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_TITLE); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_ALBUM] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_ALBUM); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_ALBUMARTIST] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_ALBUMARTIST); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_YEAR] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_YEAR); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_GENRE] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_GENRE); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_COMPOSER] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_COMPOSER); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_GROUPING] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_GROUPING); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_TRACKNUMBER] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_TRACKNUMBER); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_FILETYPE] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_FILETYPE); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_NATIVELOCATION] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_NATIVELOCATION); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_COMMENT] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_COMMENT); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_DURATION] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_DURATION); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_BITRATE] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_BITRATE); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_BPM] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_BPM); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_REPLAYGAIN] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_REPLAYGAIN); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_DATETIMEADDED] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_DATETIMEADDED); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_TIMESPLAYED] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_TIMESPLAYED); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_RATING] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_RATING); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_KEY] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_KEY); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_PREVIEW] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_PREVIEW); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_COVERART] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_COVERART); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_POSITION] = fieldIndex(ColumnCache::COLUMN_PLAYLISTTRACKSTABLE_POSITION); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnArtist)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_ARTIST); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnTitle)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_TITLE); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnAlbum)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_ALBUM); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnAlbumArtist)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_ALBUMARTIST); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnYear)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_YEAR); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnGenre)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_GENRE); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnComposer)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_COMPOSER); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnGrouping)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_GROUPING); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnTrackNumber)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_TRACKNUMBER); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnFileType)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_FILETYPE); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnNativeLocation)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_NATIVELOCATION); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnComment)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_COMMENT); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnDuration)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_DURATION); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnBitRate)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_BITRATE); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnBpm)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_BPM); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnReplayGain)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_REPLAYGAIN); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnDateTimeAdded)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_DATETIMEADDED); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnTimesPlayed)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_TIMESPLAYED); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnRating)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_RATING); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnKey)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_KEY); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnPreview)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_PREVIEW); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnCoverArt)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_COVERART); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnPosition)] = + fieldIndex(ColumnCache::COLUMN_PLAYLISTTRACKSTABLE_POSITION); m_sortColumnIdByColumnIndex.clear(); - for (int i = TrackModel::SortColumnId::SORTCOLUMN_ID_MIN; - i < TrackModel::SortColumnId::SORTCOLUMN_ID_MAX; + for (int i = static_cast(TrackModel::SortColumnId::sortColumnIdMin); + i < static_cast(TrackModel::SortColumnId::sortColumnIdMax); ++i) { TrackModel::SortColumnId sortColumn = static_cast(i); - m_sortColumnIdByColumnIndex.insert(m_columnIndexBySortColumnId[sortColumn], sortColumn); + m_sortColumnIdByColumnIndex.insert( + m_columnIndexBySortColumnId[static_cast(sortColumn)], + sortColumn); } } diff --git a/src/library/rekordbox/rekordboxfeature.cpp b/src/library/rekordbox/rekordboxfeature.cpp index b7a0bf44ac..d9b279f4ef 100644 --- a/src/library/rekordbox/rekordboxfeature.cpp +++ b/src/library/rekordbox/rekordboxfeature.cpp @@ -1028,41 +1028,91 @@ RekordboxPlaylistModel::RekordboxPlaylistModel(QObject* parent, void RekordboxPlaylistModel::initSortColumnMapping() { // Add a bijective mapping between the SortColumnIds and column indices - for (int i = 0; i < TrackModel::SortColumnId::SORTCOLUMN_ID_MAX; ++i) { + for (int i = 0; i < static_cast(TrackModel::SortColumnId::sortColumnIdMax); ++i) { m_columnIndexBySortColumnId[i] = -1; } - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_ARTIST] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_ARTIST); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_TITLE] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_TITLE); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_ALBUM] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_ALBUM); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_ALBUMARTIST] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_ALBUMARTIST); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_YEAR] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_YEAR); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_GENRE] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_GENRE); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_COMPOSER] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_COMPOSER); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_GROUPING] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_GROUPING); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_TRACKNUMBER] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_TRACKNUMBER); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_FILETYPE] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_FILETYPE); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_NATIVELOCATION] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_NATIVELOCATION); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_COMMENT] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_COMMENT); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_DURATION] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_DURATION); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_BITRATE] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_BITRATE); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_BPM] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_BPM); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_REPLAYGAIN] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_REPLAYGAIN); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_DATETIMEADDED] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_DATETIMEADDED); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_TIMESPLAYED] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_TIMESPLAYED); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_RATING] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_RATING); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_KEY] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_KEY); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_PREVIEW] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_PREVIEW); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_COLOR] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_COLOR); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_COVERART] = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_COVERART); - m_columnIndexBySortColumnId[TrackModel::SortColumnId::SORTCOLUMN_POSITION] = fieldIndex(ColumnCache::COLUMN_PLAYLISTTRACKSTABLE_POSITION); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnArtist)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_ARTIST); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnTitle)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_TITLE); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnAlbum)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_ALBUM); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnAlbumArtist)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_ALBUMARTIST); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnYear)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_YEAR); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnGenre)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_GENRE); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnComposer)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_COMPOSER); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnGrouping)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_GROUPING); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnTrackNumber)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_TRACKNUMBER); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnFileType)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_FILETYPE); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnNativeLocation)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_NATIVELOCATION); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnComment)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_COMMENT); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnDuration)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_DURATION); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnBitRate)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_BITRATE); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnBpm)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_BPM); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnReplayGain)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_REPLAYGAIN); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnDateTimeAdded)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_DATETIMEADDED); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnTimesPlayed)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_TIMESPLAYED); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnRating)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_RATING); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnKey)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_KEY); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnPreview)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_PREVIEW); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnColor)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_COLOR); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnCoverArt)] = + fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_COVERART); + m_columnIndexBySortColumnId[static_cast( + TrackModel::SortColumnId::sortColumnPosition)] = + fieldIndex(ColumnCache::COLUMN_PLAYLISTTRACKSTABLE_POSITION); m_sortColumnIdByColumnIndex.clear(); - for (int i = TrackModel::SortColumnId::SORTCOLUMN_ID_MIN; - i < TrackModel::SortColumnId::SORTCOLUMN_ID_MAX; + for (int i = static_cast(TrackModel::SortColumnId::sortColumnIdMin); + i < static_cast(TrackModel::SortColumnId::sortColumnIdMax); ++i) { TrackModel::SortColumnId sortColumn = static_cast(i); - m_sortColumnIdByColumnIndex.insert(m_columnIndexBySortColumnId[sortColumn], sortColumn); + m_sortColumnIdByColumnIndex.insert( + m_columnIndexBySortColumnId[static_cast(sortColumn)], + sortColumn); } } diff --git a/src/library/serato/s