]> cloud.milkyroute.net Git - dolphin.git/commitdiff
search: Add action to clear tag selection
authorIsmael Asensio <isma.af@gmail.com>
Thu, 7 Nov 2019 23:48:47 +0000 (00:48 +0100)
committerIsmael Asensio <isma.af@gmail.com>
Mon, 3 May 2021 14:22:21 +0000 (16:22 +0200)
BUG: 432719

src/search/dolphinfacetswidget.cpp
src/search/dolphinfacetswidget.h

index d4079f1eb2258d451b7ff0011e75285047a7d9c9..d52d146a8d76aa7f3bb6b1d35e6a98c4ff1d1906 100644 (file)
@@ -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();
 }
index 83345b34444fcd36b7988e40068be03521fb5045..3e3b0f264411cd63d5c4dac0adf18b89eda7cb5c 100644 (file)
@@ -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