diff options
author | Arno <arno@disconnect.de> | 2025-05-09 21:07:31 +0200 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2025-05-09 21:07:31 +0200 |
commit | 5a42f64b471f52f57ff795145fd38189affbd57c (patch) | |
tree | 11e98f3c5cf973b966e78852e5475144d79095f3 | |
parent | a8d7b22cb88a2d435fdd064fab71c3037c275b8d (diff) | |
download | SheMov-5a42f64b471f52f57ff795145fd38189affbd57c.tar.gz SheMov-5a42f64b471f52f57ff795145fd38189affbd57c.tar.bz2 SheMov-5a42f64b471f52f57ff795145fd38189affbd57c.zip |
Preserve included and excluded genres.
-rw-r--r-- | archivebrowser.cpp | 11 | ||||
-rw-r--r-- | archivebrowsermodel.cpp | 13 | ||||
-rw-r--r-- | archivebrowsermodel.h | 5 |
3 files changed, 28 insertions, 1 deletions
diff --git a/archivebrowser.cpp b/archivebrowser.cpp index e648ec7..45f3618 100644 --- a/archivebrowser.cpp +++ b/archivebrowser.cpp @@ -38,6 +38,7 @@ ArchiveBrowser::ArchiveBrowser(QWidget *parent) : QWidget(parent), mSelectedSize mModel = static_cast<ArchiveBrowserModel*>(SmGlobals::instance()->model("BrowserModel")); mProxy = new ArchiveBrowserModelProxy; mProxy->setSourceModel(mModel); + mProxy->readSettings(); mTree = new SmTreeView("ui/archivebrowserheaders"); mTree->setModel(mProxy); mTree->setColumnHidden(ArchiveBrowserModel::GenericId, true); @@ -61,11 +62,15 @@ ArchiveBrowser::ArchiveBrowser(QWidget *parent) : QWidget(parent), mSelectedSize std::sort(genres.begin(), genres.end()); QActionGroup *gDataAG = new QActionGroup(this); gDataAG->setExclusive(false); + const QStringList &includedGenres = mProxy->genreFilters(); for(const QString &g : std::as_const(genres)){ QAction *a = new QAction(g, this); a->setCheckable(true); gDataAG->addAction(a); connect(a, &QAction::triggered, a, [=] { mProxy->toggleGenre(a); }); + if(includedGenres.indexOf(g) != -1){ + a->setChecked(true); + } } QIcon genreIcon = Helper::icon(Qt::transparent, qApp->palette().color(QPalette::Text), 'G', true, false); QAction *genreA = new QAction(genreIcon, tr("Filter genres"), this); @@ -75,11 +80,15 @@ ArchiveBrowser::ArchiveBrowser(QWidget *parent) : QWidget(parent), mSelectedSize toolBar->addAction(genreA); QActionGroup *gDataExcludedAG = new QActionGroup(this); gDataExcludedAG->setExclusive(false); + const QStringList &excludedGenres = mProxy->exclucedGenreFilters(); for(const QString &g : std::as_const(genres)){ QAction *a = new QAction(g, this); a->setCheckable(true); gDataExcludedAG->addAction(a); connect(a, &QAction::triggered, a, [=] { mProxy->toggleExcludedGenre(a); }); + if(excludedGenres.indexOf(g) != -1){ + a->setChecked(true); + } } QIcon excludedGenreIcon = Helper::icon(Qt::transparent, qApp->palette().color(QPalette::Text), 'E', true, false); QAction *excludedGenreA = new QAction(excludedGenreIcon, tr("Filter genres"), this); @@ -197,10 +206,12 @@ void ArchiveBrowser::readConfig(){ QSettings s; QString qualFilter = s.value("ui/browserquality", tr("(none)")).toString(); mQualityFilter->setCurrentText(qualFilter); + mProxy->readSettings(); } void ArchiveBrowser::writeSettings(){ mTree->writeHeaderConfig(); + mProxy->writeSettings(); QSettings s; s.setValue("ui/browserquality", mQualityFilter->currentText()); } diff --git a/archivebrowsermodel.cpp b/archivebrowsermodel.cpp index e572a41..2c17fd2 100644 --- a/archivebrowsermodel.cpp +++ b/archivebrowsermodel.cpp @@ -8,6 +8,7 @@ #include <QSqlDatabase> #include <QSqlQuery> #include <QAction> +#include <QSettings> #include "archivebrowsermodel.h" #include "smtreeitem.h" @@ -233,6 +234,18 @@ void ArchiveBrowserModelProxy::setQualityFilter(QString quality){ invalidateFilter(); } +void ArchiveBrowserModelProxy::readSettings(){ + QSettings s; + mGenreFilters = s.value("archivebrowser/includedgenres").toStringList(); + mExcludedGenreFilters = s.value("archivebrowser/archivebrowser/excludedgenres").toStringList(); +} + +void ArchiveBrowserModelProxy::writeSettings(){ + QSettings s; + s.setValue("archivebrowser/includedgenres", mGenreFilters); + s.setValue("archivebrowser/archivebrowser/excludedgenres", mExcludedGenreFilters); +} + void ArchiveBrowserModelProxy::toggleGenre(QAction *a){ QString text = a->text(); if(a->isChecked()){ diff --git a/archivebrowsermodel.h b/archivebrowsermodel.h index 7074af4..b40258c 100644 --- a/archivebrowsermodel.h +++ b/archivebrowsermodel.h @@ -51,7 +51,10 @@ class ArchiveBrowserModelProxy : public QSortFilterProxyModel { Q_OBJECT public: explicit ArchiveBrowserModelProxy(QObject *parent = nullptr); - QStringList &genreFilters() { return mGenreFilters; } + const QStringList &genreFilters() const { return mGenreFilters; }; + const QStringList &exclucedGenreFilters() const { return mExcludedGenreFilters; }; + void readSettings(); + void writeSettings(); public slots: void setQualityFilter(QString quality); |