From 88a80f8fb94ad10a9162ff340e392e79a7103fa3 Mon Sep 17 00:00:00 2001 From: Arno Date: Fri, 2 May 2025 23:51:57 +0200 Subject: Add exclusion genre filters to ArchiveBrowser Don't show excluded genres in ArchiveBrowser. To make this work, revamp the filtering login in ArchiveBrowserModelProxy. --- archivebrowser.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'archivebrowser.cpp') diff --git a/archivebrowser.cpp b/archivebrowser.cpp index 281c2fa..9234dbb 100644 --- a/archivebrowser.cpp +++ b/archivebrowser.cpp @@ -56,6 +56,7 @@ ArchiveBrowser::ArchiveBrowser(QWidget *parent) : QWidget(parent), mSelectedSize mQualityFilter = new QComboBox; toolBar->addWidget(mQualityFilter); setupQualityFilter(); + toolBar->addSeparator(); QStringList genres = mModel->availableGenres(); std::sort(genres.begin(), genres.end()); QActionGroup *gDataAG = new QActionGroup(this); @@ -72,6 +73,20 @@ ArchiveBrowser::ArchiveBrowser(QWidget *parent) : QWidget(parent), mSelectedSize genreMenu->addActions(gDataAG->actions()); genreA->setMenu(genreMenu); toolBar->addAction(genreA); + QActionGroup *gDataExcludedAG = new QActionGroup(this); + gDataExcludedAG->setExclusive(false); + 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); }); + } + QIcon excludedGenreIcon = Helper::icon(Qt::transparent, qApp->palette().color(QPalette::Text), 'E', true, false); + QAction *excludedGenreA = new QAction(excludedGenreIcon, tr("Filter genres"), this); + QMenu *excludedGenreMenu = new QMenu; + excludedGenreMenu->addActions(gDataExcludedAG->actions()); + excludedGenreA->setMenu(excludedGenreMenu); + toolBar->addAction(excludedGenreA); toolBar->addSeparator(); mSizeFilter = new QCheckBox(tr("Filter by size")); connect(mSizeFilter, &QCheckBox::checkStateChanged, mProxy, &ArchiveBrowserModelProxy::setSizeFilter); -- cgit v1.2.3-70-g09d2