diff --git a/src/library/autodj/dlgautodj.cpp b/src/library/autodj/dlgautodj.cpp index f6bbadba5d2d..f085dea59342 100644 --- a/src/library/autodj/dlgautodj.cpp +++ b/src/library/autodj/dlgautodj.cpp @@ -31,8 +31,7 @@ DlgAutoDJ::DlgAutoDJ(WLibrary* parent, m_pTrackTableView(new WTrackTableView(this, m_pConfig, pLibrary, - parent->getTrackTableBackgroundColorOpacity(), - /*no sorting*/ false)), + parent->getTrackTableBackgroundColorOpacity())), m_bShowButtonText(parent->getShowButtonText()), m_pAutoDJTableModel(nullptr) { setupUi(this); diff --git a/src/library/baseexternalplaylistmodel.cpp b/src/library/baseexternalplaylistmodel.cpp index 01169cd9a377..8d57a3de54e7 100644 --- a/src/library/baseexternalplaylistmodel.cpp +++ b/src/library/baseexternalplaylistmodel.cpp @@ -185,7 +185,8 @@ TrackModel::Capabilities BaseExternalPlaylistModel::getCapabilities() const { Capability::AddToAutoDJ | Capability::LoadToDeck | Capability::LoadToPreviewDeck | - Capability::LoadToSampler; + Capability::LoadToSampler | + Capability::Sorting; } QString BaseExternalPlaylistModel::modelKey(bool noSearch) const { diff --git a/src/library/baseexternaltrackmodel.cpp b/src/library/baseexternaltrackmodel.cpp index 45f986a5121d..17d2f02fed28 100644 --- a/src/library/baseexternaltrackmodel.cpp +++ b/src/library/baseexternaltrackmodel.cpp @@ -123,5 +123,6 @@ TrackModel::Capabilities BaseExternalTrackModel::getCapabilities() const { Capability::AddToAutoDJ | Capability::LoadToDeck | Capability::LoadToPreviewDeck | - Capability::LoadToSampler; + Capability::LoadToSampler | + Capability::Sorting; } diff --git a/src/library/browse/browsetablemodel.cpp b/src/library/browse/browsetablemodel.cpp index 5a6189861294..47e2bd59425e 100644 --- a/src/library/browse/browsetablemodel.cpp +++ b/src/library/browse/browsetablemodel.cpp @@ -385,7 +385,8 @@ TrackModel::Capabilities BrowseTableModel::getCapabilities() const { Capability::LoadToDeck | Capability::LoadToPreviewDeck | Capability::LoadToSampler | - Capability::RemoveFromDisk; + Capability::RemoveFromDisk | + Capability::Sorting; } QString BrowseTableModel::modelKey(bool noSearch) const { diff --git a/src/library/library.cpp b/src/library/library.cpp index cea568428502..3a17c062256c 100644 --- a/src/library/library.cpp +++ b/src/library/library.cpp @@ -386,8 +386,7 @@ void Library::bindLibraryWidget( WTrackTableView* pTrackTableView = new WTrackTableView(m_pLibraryWidget, m_pConfig, this, - m_pLibraryWidget->getTrackTableBackgroundColorOpacity(), - true); + m_pLibraryWidget->getTrackTableBackgroundColorOpacity()); pTrackTableView->installEventFilter(pKeyboard); connect(this, &Library::showTrackModel, diff --git a/src/library/librarytablemodel.cpp b/src/library/librarytablemodel.cpp index aec9a8777d68..6145f5c52d3f 100644 --- a/src/library/librarytablemodel.cpp +++ b/src/library/librarytablemodel.cpp @@ -99,5 +99,6 @@ TrackModel::Capabilities LibraryTableModel::getCapabilities() const { Capability::ResetPlayed | Capability::RemoveFromDisk | Capability::Analyze | - Capability::Properties; + Capability::Properties | + Capability::Sorting; } diff --git a/src/library/missing_hidden/dlghidden.cpp b/src/library/missing_hidden/dlghidden.cpp index 0943a182eb32..415841789bc9 100644 --- a/src/library/missing_hidden/dlghidden.cpp +++ b/src/library/missing_hidden/dlghidden.cpp @@ -22,8 +22,7 @@ DlgHidden::DlgHidden( this, pConfig, pLibrary, - parent->getTrackTableBackgroundColorOpacity(), - true)) { + parent->getTrackTableBackgroundColorOpacity())) { setupUi(this); m_pTrackTableView->installEventFilter(pKeyboard); diff --git a/src/library/missing_hidden/dlgmissing.cpp b/src/library/missing_hidden/dlgmissing.cpp index 736fb4842cdc..0770f48101de 100644 --- a/src/library/missing_hidden/dlgmissing.cpp +++ b/src/library/missing_hidden/dlgmissing.cpp @@ -22,8 +22,7 @@ DlgMissing::DlgMissing( this, pConfig, pLibrary, - parent->getTrackTableBackgroundColorOpacity(), - true)) { + parent->getTrackTableBackgroundColorOpacity())) { setupUi(this); m_pTrackTableView->installEventFilter(pKeyboard); diff --git a/src/library/missing_hidden/hiddentablemodel.cpp b/src/library/missing_hidden/hiddentablemodel.cpp index 49e27764100a..5d147907ebef 100644 --- a/src/library/missing_hidden/hiddentablemodel.cpp +++ b/src/library/missing_hidden/hiddentablemodel.cpp @@ -105,7 +105,8 @@ TrackModel::Capabilities HiddenTableModel::getCapabilities() const { Capability::LoadToPreviewDeck | Capability::ResetPlayed | Capability::Analyze | - Capability::Properties; + Capability::Properties | + Capability::Sorting; } QString HiddenTableModel::modelKey(bool noSearch) const { diff --git a/src/library/missing_hidden/missingtablemodel.cpp b/src/library/missing_hidden/missingtablemodel.cpp index 400f3fc4d274..73b541679726 100644 --- a/src/library/missing_hidden/missingtablemodel.cpp +++ b/src/library/missing_hidden/missingtablemodel.cpp @@ -88,7 +88,9 @@ Qt::ItemFlags MissingTableModel::flags(const QModelIndex &index) const { } TrackModel::Capabilities MissingTableModel::getCapabilities() const { - return Capability::Purge | Capability::Properties; + return Capability::Purge | + Capability::Properties | + Capability::Sorting; } QString MissingTableModel::modelKey(bool noSearch) const { diff --git a/src/library/playlisttablemodel.cpp b/src/library/playlisttablemodel.cpp index 90ae39fbd984..fb9e0f0b77b8 100644 --- a/src/library/playlisttablemodel.cpp +++ b/src/library/playlisttablemodel.cpp @@ -401,8 +401,9 @@ TrackModel::Capabilities PlaylistTableModel::getCapabilities() const { m_pTrackCollectionManager->internalCollection() ->getPlaylistDAO() .getPlaylistIdFromName(AUTODJ_TABLE)) { - // Only allow Add to AutoDJ if we aren't currently showing the AutoDJ queue. - caps |= Capability::AddToAutoDJ | Capability::RemovePlaylist; + // Only allow Add to AutoDJ and sorting if we aren't currently showing + // the AutoDJ queue. + caps |= Capability::AddToAutoDJ | Capability::RemovePlaylist | Capability::Sorting; } else { caps |= Capability::Remove; } diff --git a/src/library/recording/dlgrecording.cpp b/src/library/recording/dlgrecording.cpp index a68360974657..279f737c26fa 100644 --- a/src/library/recording/dlgrecording.cpp +++ b/src/library/recording/dlgrecording.cpp @@ -21,8 +21,7 @@ DlgRecording::DlgRecording( this, pConfig, pLibrary, - parent->getTrackTableBackgroundColorOpacity(), - true)), + parent->getTrackTableBackgroundColorOpacity())), m_browseModel(this, pLibrary->trackCollectionManager(), pRecordingManager), m_proxyModel(&m_browseModel, true), m_bytesRecordedStr("--"), diff --git a/src/library/trackmodel.h b/src/library/trackmodel.h index 3ef3c67d4058..ff448127cad5 100644 --- a/src/library/trackmodel.h +++ b/src/library/trackmodel.h @@ -52,6 +52,7 @@ class TrackModel { RemoveFromDisk = 1u << 16u, Analyze = 1u << 17u, Properties = 1u << 18u, + Sorting = 1u << 19u, }; Q_DECLARE_FLAGS(Capabilities, Capability) diff --git a/src/library/trackset/crate/cratetablemodel.cpp b/src/library/trackset/crate/cratetablemodel.cpp index 076c54488162..79a9ccf8534d 100644 --- a/src/library/trackset/crate/cratetablemodel.cpp +++ b/src/library/trackset/crate/cratetablemodel.cpp @@ -134,7 +134,8 @@ TrackModel::Capabilities CrateTableModel::getCapabilities() const { Capability::Hide | Capability::RemoveFromDisk | Capability::Analyze | - Capability::Properties; + Capability::Properties | + Capability::Sorting; if (m_selectedCrate.isValid()) { Crate crate; diff --git a/src/widget/wanalysislibrarytableview.cpp b/src/widget/wanalysislibrarytableview.cpp index 13832666137e..fbdb9be8b7e4 100644 --- a/src/widget/wanalysislibrarytableview.cpp +++ b/src/widget/wanalysislibrarytableview.cpp @@ -10,8 +10,7 @@ WAnalysisLibraryTableView::WAnalysisLibraryTableView( : WTrackTableView(parent, pConfig, pLibrary, - trackTableBackgroundColorOpacity, - true) { + trackTableBackgroundColorOpacity) { setDragDropMode(QAbstractItemView::DragOnly); setDragEnabled(true); //Always enable drag for now (until we have a model that doesn't support this.) } diff --git a/src/widget/wtracktableview.cpp b/src/widget/wtracktableview.cpp index 52b4466c5165..4bcc38865735 100644 --- a/src/widget/wtracktableview.cpp +++ b/src/widget/wtracktableview.cpp @@ -40,12 +40,11 @@ const ConfigKey kVScrollBarPosConfigKey{ } // anonymous namespace -WTrackTableView::WTrackTableView(QWidget* parent, +WTrackTableView::WTrackTableView(QWidget* pParent, UserSettingsPointer pConfig, Library* pLibrary, - double backgroundColorOpacity, - bool sorting) - : WLibraryTableView(parent, pConfig), + double backgroundColorOpacity) + : WLibraryTableView(pParent, pConfig), m_pConfig(pConfig), m_pLibrary(pLibrary), m_backgroundColorOpacity(backgroundColorOpacity), @@ -53,7 +52,7 @@ WTrackTableView::WTrackTableView(QWidget* parent, m_focusBorderColor(Qt::white), m_trackPlayedColor(QColor(kDefaultTrackPlayedColor)), m_trackMissingColor(QColor(kDefaultTrackMissingColor)), - m_sorting(sorting), + m_sorting(false), m_selectionChangedSinceLastGuiTick(true), m_loadCachedOnly(false) { // Connect slots and signals to make the world go 'round. @@ -175,6 +174,8 @@ void WTrackTableView::loadTrackModel(QAbstractItemModel* model, bool restoreStat return; } + m_sorting = pTrackModel->hasCapabilities(TrackModel::Capability::Sorting); + // If the model has not changed there's no need to exchange the headers // which would cause a small GUI freeze if (getTrackModel() == pTrackModel) { diff --git a/src/widget/wtracktableview.h b/src/widget/wtracktableview.h index 164f0b1a083d..a44597aa5c7f 100644 --- a/src/widget/wtracktableview.h +++ b/src/widget/wtracktableview.h @@ -23,11 +23,10 @@ class WTrackTableView : public WLibraryTableView { Q_OBJECT public: WTrackTableView( - QWidget* parent, + QWidget* pParent, UserSettingsPointer pConfig, Library* pLibrary, - double backgroundColorOpacity, - bool sorting); + double backgroundColorOpacity); ~WTrackTableView() override; void contextMenuEvent(QContextMenuEvent * event) override; QString columnNameOfIndex(const QModelIndex& index) const;