From 98bc2dd70847735d852b644da3fa5cc0f1fd1623 Mon Sep 17 00:00:00 2001 From: Arno Date: Sat, 17 Feb 2018 11:22:40 +0100 Subject: Fix sorting in CollectionWidgets Sort everything ascending, except CollectionDatesView. --- collectionalbumsview.cpp | 3 +++ collectionartistsview.cpp | 2 ++ collectiondatesview.cpp | 2 ++ collectionfavoritesview.cpp | 2 ++ collectionfoldersview.cpp | 2 ++ collectionwebradioview.cpp | 2 ++ collectionwidget.cpp | 6 +++++- collectionwidget.h | 4 +++- 8 files changed, 21 insertions(+), 2 deletions(-) diff --git a/collectionalbumsview.cpp b/collectionalbumsview.cpp index af71166..1f44c10 100644 --- a/collectionalbumsview.cpp +++ b/collectionalbumsview.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include "collectionalbumsview.h" @@ -8,6 +9,7 @@ CollectionAlbumsView::CollectionAlbumsView(QWidget *parent) : CollectionWidget(p } void CollectionAlbumsView::populate(){ + disableSorting(); model()->clear(); model()->setHorizontalHeaderLabels(headers()); QSqlDatabase db = QSqlDatabase::database("beetplayerdb"); @@ -55,4 +57,5 @@ void CollectionAlbumsView::populate(){ } curAlbum->setText(albumText); } + enableSorting(); } diff --git a/collectionartistsview.cpp b/collectionartistsview.cpp index 13b98b1..464ca14 100644 --- a/collectionartistsview.cpp +++ b/collectionartistsview.cpp @@ -8,6 +8,7 @@ CollectionArtistsView::CollectionArtistsView(QWidget *parent) : CollectionWidget } void CollectionArtistsView::populate(){ + disableSorting(); model()->clear(); model()->setHorizontalHeaderLabels(headers()); QSqlDatabase db = QSqlDatabase::database("beetplayerdb"); @@ -66,4 +67,5 @@ void CollectionArtistsView::populate(){ } } } + enableSorting(); } diff --git a/collectiondatesview.cpp b/collectiondatesview.cpp index 3589c18..f93685b 100644 --- a/collectiondatesview.cpp +++ b/collectiondatesview.cpp @@ -9,6 +9,7 @@ CollectionDatesView::CollectionDatesView(QWidget *parent) : CollectionWidget(par } void CollectionDatesView::populate(){ + disableSorting(); model()->clear(); model()->setHorizontalHeaderLabels(headers()); QSqlDatabase db = QSqlDatabase::database("beetplayerdb"); @@ -71,4 +72,5 @@ void CollectionDatesView::populate(){ albumItem->appendRow(curSong); } } + enableSorting(Qt::DescendingOrder); } diff --git a/collectionfavoritesview.cpp b/collectionfavoritesview.cpp index d57d0d2..a202fcb 100644 --- a/collectionfavoritesview.cpp +++ b/collectionfavoritesview.cpp @@ -8,6 +8,7 @@ CollectionFavoritesView::CollectionFavoritesView(QWidget *parent) : CollectionWi } void CollectionFavoritesView::populate(){ + disableSorting(); model()->clear(); model()->setHorizontalHeaderLabels(headers()); QSqlDatabase db = QSqlDatabase::database("beetplayerdb"); @@ -40,4 +41,5 @@ void CollectionFavoritesView::populate(){ curSong->setData(favQ2.value(5), LengthRole); root->appendRow(QList() << curSong); } + enableSorting(); } diff --git a/collectionfoldersview.cpp b/collectionfoldersview.cpp index 4f1ad84..cd8765f 100644 --- a/collectionfoldersview.cpp +++ b/collectionfoldersview.cpp @@ -12,6 +12,7 @@ CollectionFoldersView::CollectionFoldersView(QWidget *parent) : CollectionWidget } void CollectionFoldersView::populate(){ + disableSorting(); model()->clear(); model()->setHorizontalHeaderLabels(headers()); QStandardItem *root = model()->invisibleRootItem(); @@ -51,6 +52,7 @@ void CollectionFoldersView::populate(){ cur->setData(fi.absoluteFilePath(), FullPathRole); root->appendRow(cur); } + enableSorting(); } void CollectionFoldersView::readSettings(){ diff --git a/collectionwebradioview.cpp b/collectionwebradioview.cpp index 53d7cbd..94012f1 100644 --- a/collectionwebradioview.cpp +++ b/collectionwebradioview.cpp @@ -8,6 +8,7 @@ CollectionWebradioView::CollectionWebradioView(QWidget *parent) : CollectionWidg } void CollectionWebradioView::populate(){ + disableSorting(); model()->clear(); model()->setHorizontalHeaderLabels(headers()); QSqlDatabase db = QSqlDatabase::database("beetplayerdb"); @@ -23,4 +24,5 @@ void CollectionWebradioView::populate(){ curWr->setData(wrQ.value(1), UrlRole); root->appendRow(curWr); } + enableSorting(); } diff --git a/collectionwidget.cpp b/collectionwidget.cpp index d665706..cbc6dbf 100644 --- a/collectionwidget.cpp +++ b/collectionwidget.cpp @@ -1,4 +1,3 @@ -#include #include #include #include @@ -17,3 +16,8 @@ CollectionWidget::CollectionWidget(QWidget *parent) : QWidget(parent){ mainLayout->addWidget(mView); setLayout(mainLayout); } + +void CollectionWidget::enableSorting(int column, Qt::SortOrder sortOrder){ + view()->setSortingEnabled(true); + view()->sortByColumn(column, sortOrder); +} diff --git a/collectionwidget.h b/collectionwidget.h index 86135bb..c76582c 100644 --- a/collectionwidget.h +++ b/collectionwidget.h @@ -2,8 +2,8 @@ #define COLLECTIONWIDGET_H #include +#include -class QTreeView; class QStandardItemModel; class QSortFilterProxyModel; @@ -18,6 +18,8 @@ class CollectionWidget : public QWidget { QSortFilterProxyModel *proxy() { return mProxy; } void setHeaders(const QStringList headers) { mHeaders = headers; } const QStringList headers() const { return mHeaders; } + void disableSorting() { mView->setSortingEnabled(false); } + void enableSorting(int column = 0, Qt::SortOrder sortOrder = Qt::AscendingOrder); signals: -- cgit v1.2.3-70-g09d2