From d9e378211a2b4526e0fc89ccd5c1cbdf7450289a Mon Sep 17 00:00:00 2001 From: Jonas Kvinge Date: Wed, 14 Jul 2021 11:22:09 +0200 Subject: [PATCH] Fix sorting of radios --- src/core/mainwindow.cpp | 2 +- src/radios/radioservices.cpp | 8 ++++++++ src/radios/radioservices.h | 4 ++++ src/radios/radioview.cpp | 6 ------ src/radios/radioview.h | 1 - 5 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/core/mainwindow.cpp b/src/core/mainwindow.cpp index d5cdc4304..387b78ff5 100644 --- a/src/core/mainwindow.cpp +++ b/src/core/mainwindow.cpp @@ -405,7 +405,7 @@ MainWindow::MainWindow(Application *app, std::shared_ptr tray_ic organize_dialog_->SetDestinationModel(app_->collection()->model()->directory_model()); - radio_view_->view()->SetModel(app_->radio_services()->radio_model()); + radio_view_->view()->setModel(app_->radio_services()->sort_model()); // Icons qLog(Debug) << "Creating UI"; diff --git a/src/radios/radioservices.cpp b/src/radios/radioservices.cpp index f38ab2a5b..5fd22db74 100644 --- a/src/radios/radioservices.cpp +++ b/src/radios/radioservices.cpp @@ -18,6 +18,7 @@ */ #include +#include #include "core/logging.h" #include "core/application.h" @@ -36,6 +37,7 @@ RadioServices::RadioServices(Application *app, QObject *parent) network_(new NetworkAccessManager(this)), backend_(nullptr), model_(new RadioModel(app, this)), + sort_model_(new QSortFilterProxyModel(this)), channels_refresh_(false) { backend_ = new RadioBackend(app->database()); @@ -43,6 +45,12 @@ RadioServices::RadioServices(Application *app, QObject *parent) QObject::connect(backend_, &RadioBackend::NewChannels, this, &RadioServices::GotChannelsFromBackend); + sort_model_->setSourceModel(model_); + sort_model_->setSortRole(RadioModel::Role_SortText); + sort_model_->setDynamicSortFilter(true); + sort_model_->setSortLocaleAware(true); + sort_model_->sort(0); + AddService(new SomaFMService(app, network_, this)); AddService(new RadioParadiseService(app, network_, this)); diff --git a/src/radios/radioservices.h b/src/radios/radioservices.h index 571a8593a..db4632fc5 100644 --- a/src/radios/radioservices.h +++ b/src/radios/radioservices.h @@ -26,6 +26,8 @@ #include "core/song.h" #include "radiochannel.h" +class QSortFilterProxyModel; + class Application; class NetworkAccessManager; class RadioBackend; @@ -53,6 +55,7 @@ class RadioServices : public QObject { RadioBackend *radio_backend() const { return backend_; } RadioModel *radio_model() const { return model_; } + QSortFilterProxyModel *sort_model() const { return sort_model_; } private slots: void ServiceDeleted(); @@ -67,6 +70,7 @@ class RadioServices : public QObject { NetworkAccessManager *network_; RadioBackend *backend_; RadioModel *model_; + QSortFilterProxyModel *sort_model_; QMap services_; bool channels_refresh_; }; diff --git a/src/radios/radioview.cpp b/src/radios/radioview.cpp index 506c95223..d22b0e079 100644 --- a/src/radios/radioview.cpp +++ b/src/radios/radioview.cpp @@ -54,12 +54,6 @@ RadioView::RadioView(QWidget *parent) RadioView::~RadioView() { delete menu_; } -void RadioView::SetModel(RadioModel *model) { - - AutoExpandingTreeView::setModel(model); - -} - void RadioView::showEvent(QShowEvent*) { if (!initialized_) { diff --git a/src/radios/radioview.h b/src/radios/radioview.h index 0b323bf8f..50c0ee16d 100644 --- a/src/radios/radioview.h +++ b/src/radios/radioview.h @@ -39,7 +39,6 @@ class RadioView : public AutoExpandingTreeView { explicit RadioView(QWidget *parent = nullptr); ~RadioView(); - void SetModel(RadioModel *model); void showEvent(QShowEvent *e) override; void contextMenuEvent(QContextMenuEvent *e) override;