]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Hide search extra options when not available
authorIsmael Asensio <isma.af@mgmail.com>
Sun, 13 Oct 2019 15:21:11 +0000 (17:21 +0200)
committerElvis Angelaccio <elvis.angelaccio@kde.org>
Sun, 13 Oct 2019 15:22:28 +0000 (17:22 +0200)
Summary:
Hide the search extra options when they are not available, because the current location is not indexed or Baloo is not enabled.
The button is disabled and shows a tooltip to provide feedback of why it's not available.
Depends on D24478

{F7531893}

CCBUG: 396898
FEATURE: 318580
FEATURE: 408680
FIXED-IN: 19.11.80

Test Plan:
 - `Ctrl-F` on a non-indexed location
 - `balooctl disable` and `Ctrl-F` on an indexed location

On both cases the extra options are not shown, the button is disabled and the reason is shown in the tooltip
The user selection is remembered between indexed locations.

Reviewers: #dolphin, elvisangelaccio, meven, ngraham

Reviewed By: meven

Subscribers: kfm-devel

Tags: #dolphin

Differential Revision: https://phabricator.kde.org/D24446

src/search/dolphinsearchbox.cpp
src/search/dolphinsearchbox.h

index 1c1accd26961f00b7876a4e2d25933024635ae1d..838a8b38cd21669c1caa39bea692efe837bdb42f 100644 (file)
@@ -107,7 +107,7 @@ void DolphinSearchBox::setSearchPath(const QUrl& url)
     m_fromHereButton->setText(i18nc("action:button", "From Here (%1)", elidedLocation));
     m_fromHereButton->setToolTip(i18nc("action:button", "Limit search to '%1' and its subfolders", cleanedUrl.toString(QUrl::PreferLocalFile)));
 
-    m_facetsWidget->setEnabled(isIndexingEnabled());
+    setFacetsVisible(SearchSettings::showFacetsWidget());
 }
 
 QUrl DolphinSearchBox::searchPath() const
@@ -194,6 +194,7 @@ void DolphinSearchBox::showEvent(QShowEvent* event)
         m_searchInput->setFocus();
         m_startedSearching = false;
     }
+    updateFacetsToggleButton();
 }
 
 void DolphinSearchBox::hideEvent(QHideEvent* event)
@@ -282,9 +283,7 @@ void DolphinSearchBox::slotReturnPressed()
 
 void DolphinSearchBox::slotFacetsButtonToggled()
 {
-    const bool facetsIsVisible = !m_facetsWidget->isVisible();
-    m_facetsWidget->setVisible(facetsIsVisible);
-    updateFacetsToggleButton();
+    setFacetsVisible(m_facetsToggleButton->isChecked());
 }
 
 void DolphinSearchBox::slotFacetChanged()
@@ -329,14 +328,16 @@ void DolphinSearchBox::loadSettings()
         m_fileNameButton->setChecked(true);
     }
 
-    m_facetsWidget->setVisible(SearchSettings::showFacetsWidget());
+    setFacetsVisible(SearchSettings::showFacetsWidget());
 }
 
 void DolphinSearchBox::saveSettings()
 {
     SearchSettings::setLocation(m_fromHereButton->isChecked() ? QStringLiteral("FromHere") : QStringLiteral("Everywhere"));
     SearchSettings::setWhat(m_fileNameButton->isChecked() ? QStringLiteral("FileName") : QStringLiteral("Content"));
-    SearchSettings::setShowFacetsWidget(m_facetsToggleButton->isChecked());
+    if (isIndexingEnabled()) {
+        SearchSettings::setShowFacetsWidget(m_facetsToggleButton->isChecked());
+    }
     SearchSettings::self()->save();
 }
 
@@ -472,8 +473,6 @@ void DolphinSearchBox::init()
     m_startSearchTimer->setSingleShot(true);
     m_startSearchTimer->setInterval(1000);
     connect(m_startSearchTimer, &QTimer::timeout, this, &DolphinSearchBox::emitSearchRequest);
-
-    updateFacetsToggleButton();
 }
 
 QUrl DolphinSearchBox::balooUrlForSearching() const
@@ -549,12 +548,44 @@ void DolphinSearchBox::fromBalooSearchUrl(const QUrl& url)
 #endif
 }
 
+void DolphinSearchBox::setFacetsVisible(bool visible)
+{
+    const bool indexingEnabled = isIndexingEnabled();
+    m_facetsWidget->setEnabled(indexingEnabled);
+    m_facetsWidget->setVisible(indexingEnabled && visible);
+    updateFacetsToggleButton();
+}
+
 void DolphinSearchBox::updateFacetsToggleButton()
 {
-    const bool facetsIsVisible = SearchSettings::showFacetsWidget();
-    m_facetsToggleButton->setChecked(facetsIsVisible ? true : false);
-    m_facetsToggleButton->setIcon(QIcon::fromTheme(facetsIsVisible ? QStringLiteral("arrow-up-double") : QStringLiteral("arrow-down-double")));
-    m_facetsToggleButton->setText(facetsIsVisible ? i18nc("action:button", "Fewer Options") : i18nc("action:button", "More Options"));
+    const bool facetsEnabled = m_facetsWidget->isEnabled();
+    const bool facetsVisible = m_facetsWidget->isVisible();
+
+    m_facetsToggleButton->setEnabled(facetsEnabled);
+    m_facetsToggleButton->setChecked(facetsVisible);
+
+    m_facetsToggleButton->setIcon(QIcon::fromTheme(
+           facetsVisible ? QStringLiteral("arrow-up-double") :
+                           QStringLiteral("arrow-down-double")));
+
+    m_facetsToggleButton->setText(
+           facetsVisible ? i18nc("@action:button", "Fewer Options") :
+                           i18nc("@action:button", "More Options"));
+
+    if (facetsEnabled) {
+        m_facetsToggleButton->setToolTip(QString());
+    } else {
+#ifdef HAVE_BALOO
+        const Baloo::IndexerConfig searchInfo;
+        if (!searchInfo.fileIndexingEnabled()) {
+            m_facetsToggleButton->setToolTip(i18nc("@info:tooltip", "Advanced search options are not available because the file indexing service is disabled."));
+        } else {
+            m_facetsToggleButton->setToolTip(i18nc("@info:tooltip", "Advanced search options are not available because this location is not indexed."));
+        }
+#else
+        m_facetsToggleButton->setToolTip(i18nc("@info:tooltip", "Advanced search options are not available because this version of Dolphin does not support the Baloo file indexer."));
+#endif
+    }
 }
 
 bool DolphinSearchBox::isIndexingEnabled() const
index 9ccd50b834538412f854ae6e961f6bd4a07b287f..e70317450707f7b01cf4a49075bbb96db4b7a0a3 100644 (file)
@@ -158,6 +158,7 @@ private:
      */
     void fromBalooSearchUrl(const QUrl& url);
 
+    void setFacetsVisible(bool visible);
     void updateFacetsToggleButton();
 
     bool isIndexingEnabled() const;