summaryrefslogtreecommitdiffstats
path: root/archivebrowser.cpp
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2025-05-01 20:12:24 +0200
committerArno <arno@disconnect.de>2025-05-01 20:12:24 +0200
commita45737e852c207d02f1dd06227de7916baa290c1 (patch)
treec1b90eeaad70bf0f249ef9a3b842d182d237d63a /archivebrowser.cpp
parenta3b79646fe6984b0f2203ed9819ba03b0a4db978 (diff)
downloadSheMov-a45737e852c207d02f1dd06227de7916baa290c1.tar.gz
SheMov-a45737e852c207d02f1dd06227de7916baa290c1.tar.bz2
SheMov-a45737e852c207d02f1dd06227de7916baa290c1.zip
Make the genre filter work
It works basically, but it could use a few improvements, like filtering out genres which we don't want to archive, and maybe make the size filter work in addition to it.
Diffstat (limited to 'archivebrowser.cpp')
-rw-r--r--archivebrowser.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/archivebrowser.cpp b/archivebrowser.cpp
index 9bf7cb7..281c2fa 100644
--- a/archivebrowser.cpp
+++ b/archivebrowser.cpp
@@ -56,7 +56,22 @@ ArchiveBrowser::ArchiveBrowser(QWidget *parent) : QWidget(parent), mSelectedSize
mQualityFilter = new QComboBox;
toolBar->addWidget(mQualityFilter);
setupQualityFilter();
- connect(mQualityFilter, &QComboBox::currentTextChanged, mProxy, &ArchiveBrowserModelProxy::setQualityFilter);
+ QStringList genres = mModel->availableGenres();
+ std::sort(genres.begin(), genres.end());
+ QActionGroup *gDataAG = new QActionGroup(this);
+ gDataAG->setExclusive(false);
+ 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); });
+ }
+ QIcon genreIcon = Helper::icon(Qt::transparent, qApp->palette().color(QPalette::Text), 'G', true, false);
+ QAction *genreA = new QAction(genreIcon, tr("Filter genres"), this);
+ QMenu *genreMenu = new QMenu;
+ genreMenu->addActions(gDataAG->actions());
+ genreA->setMenu(genreMenu);
+ toolBar->addAction(genreA);
toolBar->addSeparator();
mSizeFilter = new QCheckBox(tr("Filter by size"));
connect(mSizeFilter, &QCheckBox::checkStateChanged, mProxy, &ArchiveBrowserModelProxy::setSizeFilter);