summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2025-05-09 21:07:31 +0200
committerArno <arno@disconnect.de>2025-05-09 21:07:31 +0200
commit5a42f64b471f52f57ff795145fd38189affbd57c (patch)
tree11e98f3c5cf973b966e78852e5475144d79095f3
parenta8d7b22cb88a2d435fdd064fab71c3037c275b8d (diff)
downloadSheMov-5a42f64b471f52f57ff795145fd38189affbd57c.tar.gz
SheMov-5a42f64b471f52f57ff795145fd38189affbd57c.tar.bz2
SheMov-5a42f64b471f52f57ff795145fd38189affbd57c.zip
Read and write ArchiveBrowser settingsHEADtreemodel
Preserve included and excluded genres.
-rw-r--r--archivebrowser.cpp11
-rw-r--r--archivebrowsermodel.cpp13
-rw-r--r--archivebrowsermodel.h5
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);