From: Ismael Asensio Date: Thu, 7 Nov 2019 23:48:47 +0000 (+0100) Subject: search: Add action to clear tag selection X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/65b283a909d098687cbb9df52822439f5f5560b5 search: Add action to clear tag selection BUG: 432719 --- diff --git a/src/search/dolphinfacetswidget.cpp b/src/search/dolphinfacetswidget.cpp index d4079f1eb..d52d146a8 100644 --- a/src/search/dolphinfacetswidget.cpp +++ b/src/search/dolphinfacetswidget.cpp @@ -53,6 +53,12 @@ DolphinFacetsWidget::DolphinFacetsWidget(QWidget* parent) : m_ratingSelector->addItem(QIcon::fromTheme(QStringLiteral("starred-symbolic")), i18nc("@item:inlistbox", "Highest Rating"), 5); initComboBox(m_ratingSelector); + m_clearTagsAction = new QAction(QIcon::fromTheme(QStringLiteral("edit-clear-all")), i18nc("@action:inmenu", "Clear Selection"), this); + connect(m_clearTagsAction, &QAction::triggered, this, [this]() { + resetSearchTags(); + Q_EMIT facetChanged(); + }); + m_tagsSelector = new QToolButton(this); m_tagsSelector->setIcon(QIcon::fromTheme(QStringLiteral("tag"))); m_tagsSelector->setMenu(new QMenu(this)); @@ -97,9 +103,7 @@ void DolphinFacetsWidget::resetSearchTerms() m_dateSelector->setCurrentIndex(0); m_ratingSelector->setCurrentIndex(0); - m_searchTags = QStringList(); - updateTagsSelector(); - updateTagsMenu(); + resetSearchTags(); } QStringList DolphinFacetsWidget::searchTerms() const @@ -218,6 +222,13 @@ void DolphinFacetsWidget::removeSearchTag(const QString& tag) updateTagsSelector(); } +void DolphinFacetsWidget::resetSearchTags() +{ + m_searchTags = QStringList(); + updateTagsSelector(); + updateTagsMenu(); +} + void DolphinFacetsWidget::initComboBox(QComboBox* combo) { combo->setFrame(false); @@ -240,6 +251,7 @@ void DolphinFacetsWidget::updateTagsSelector() } m_tagsSelector->setEnabled(isEnabled() && (hasListedTags || hasSelectedTags)); + m_clearTagsAction->setEnabled(hasSelectedTags); } void DolphinFacetsWidget::updateTagsMenu() @@ -250,7 +262,8 @@ void DolphinFacetsWidget::updateTagsMenu() void DolphinFacetsWidget::updateTagsMenuItems(const QUrl&, const KFileItemList& items) { - m_tagsSelector->menu()->clear(); + QMenu *tagsMenu = m_tagsSelector->menu(); + tagsMenu->clear(); QStringList allTags = QStringList(m_searchTags); for (const KFileItem &item: items) { @@ -262,7 +275,7 @@ void DolphinFacetsWidget::updateTagsMenuItems(const QUrl&, const KFileItemList& const bool onlyOneTag = allTags.count() == 1; for (const QString& tagName : qAsConst(allTags)) { - QAction* action = m_tagsSelector->menu()->addAction(QIcon::fromTheme(QStringLiteral("tag")), tagName); + QAction *action = tagsMenu->addAction(QIcon::fromTheme(QStringLiteral("tag")), tagName); action->setCheckable(true); action->setChecked(m_searchTags.contains(tagName)); @@ -280,5 +293,10 @@ void DolphinFacetsWidget::updateTagsMenuItems(const QUrl&, const KFileItemList& }); } + if (allTags.count() > 1) { + tagsMenu->addSeparator(); + tagsMenu->addAction(m_clearTagsAction); + } + updateTagsSelector(); } diff --git a/src/search/dolphinfacetswidget.h b/src/search/dolphinfacetswidget.h index 83345b344..3e3b0f264 100644 --- a/src/search/dolphinfacetswidget.h +++ b/src/search/dolphinfacetswidget.h @@ -63,6 +63,7 @@ private: void setTimespan(const QDate& date); void addSearchTag(const QString& tag); void removeSearchTag(const QString& tag); + void resetSearchTags(); void initComboBox(QComboBox* combo); void updateTagsSelector(); @@ -75,6 +76,7 @@ private: QStringList m_searchTags; KCoreDirLister m_tagsLister; + QAction *m_clearTagsAction; }; #endif