From a45737e852c207d02f1dd06227de7916baa290c1 Mon Sep 17 00:00:00 2001 From: Arno Date: Thu, 1 May 2025 20:12:24 +0200 Subject: 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. --- archivebrowser.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'archivebrowser.cpp') 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); -- cgit v1.2.3-70-g09d2