diff options
Diffstat (limited to 'archivebrowser.cpp')
-rw-r--r-- | archivebrowser.cpp | 17 |
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); |