diff --git a/src/library/basesqltablemodel.cpp b/src/library/basesqltablemodel.cpp index 14f06a42fedb..351fcab07652 100644 --- a/src/library/basesqltablemodel.cpp +++ b/src/library/basesqltablemodel.cpp @@ -163,6 +163,9 @@ QVariant BaseSqlTableModel::headerData(int section, Qt::Orientation orientation, return widthValue; } else if (role == TrackModel::kHeaderNameRole && orientation == Qt::Horizontal) { return m_headerInfo.value(section).value(role); + } else if (role == Qt::ToolTipRole && orientation == Qt::Horizontal) { + QVariant tooltip = m_headerInfo.value(section).value(role); + if (tooltip.isValid()) return tooltip; } return QAbstractTableModel::headerData(section, orientation, role); } diff --git a/src/library/basesqltablemodel.h b/src/library/basesqltablemodel.h index bf8656bd551a..d872b75becf1 100644 --- a/src/library/basesqltablemodel.h +++ b/src/library/basesqltablemodel.h @@ -51,7 +51,7 @@ class BaseSqlTableModel : public QAbstractTableModel, public TrackModel { void search(const QString& searchText, const QString& extraFilter = QString()); void setSearch(const QString& searchText, const QString& extraFilter = QString()); const QString currentSearch() const; - void setSort(int column, Qt::SortOrder order); + virtual void setSort(int column, Qt::SortOrder order); void hideTracks(const QModelIndexList& indices); int fieldIndex(ColumnCache::Column column) const; @@ -95,6 +95,7 @@ class BaseSqlTableModel : public QAbstractTableModel, public TrackModel { QString m_previewDeckGroup; TrackId m_previewDeckTrackId; + QString m_tableOrderBy; private slots: virtual void tracksChanged(QSet trackIds); @@ -157,7 +158,6 @@ class BaseSqlTableModel : public QAbstractTableModel, public TrackModel { QString m_currentSearchFilter; QVector > m_headerInfo; QString m_trackSourceOrderBy; - QString m_tableOrderBy; int m_trackSourceSortColumn; Qt::SortOrder m_trackSourceSortOrder; diff --git a/src/library/librarytablemodel.cpp b/src/library/librarytablemodel.cpp index a47db4f6ecf8..1a6ec1a97dd4 100644 --- a/src/library/librarytablemodel.cpp +++ b/src/library/librarytablemodel.cpp @@ -46,6 +46,10 @@ void LibraryTableModel::setTableModel(int id) { m_pTrackCollection->getTrackSource()); setSearch(""); setDefaultSort(fieldIndex("artist"), Qt::AscendingOrder); + + // Set tooltip for random sorting + int fi = fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_PREVIEW); + setHeaderData(fi, Qt::Horizontal, tr("Sort items randomly"), Qt::ToolTipRole); } @@ -101,3 +105,12 @@ TrackModel::CapabilitiesFlags LibraryTableModel::getCapabilities() const { | TRACKMODELCAPS_CLEAR_BEATS | TRACKMODELCAPS_RESETPLAYED; } + +void LibraryTableModel::setSort(int column, Qt::SortOrder order) { + BaseSqlTableModel::setSort(column, order); + + // Random sort easter egg, only in library view + if (column == fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_PREVIEW)) { + m_tableOrderBy = "ORDER BY RANDOM()"; + } +} diff --git a/src/library/librarytablemodel.h b/src/library/librarytablemodel.h index 30da130b8351..4f3ce5df438f 100644 --- a/src/library/librarytablemodel.h +++ b/src/library/librarytablemodel.h @@ -16,6 +16,8 @@ class LibraryTableModel : public BaseSqlTableModel { int addTracks(const QModelIndex& index, const QList& locations); TrackModel::CapabilitiesFlags getCapabilities() const; static const QString DEFAULT_LIBRARYFILTER; + + void setSort(int column, Qt::SortOrder order) override; }; #endif