]> cloud.milkyroute.net Git - dolphin.git/commitdiff
allow to restrict the search results by the current folder (including all sub folders)
authorPeter Penz <peter.penz19@gmail.com>
Sat, 12 Dec 2009 12:23:05 +0000 (12:23 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Sat, 12 Dec 2009 12:23:05 +0000 (12:23 +0000)
svn path=/trunk/KDE/kdebase/apps/; revision=1061589

src/dolphinmainwindow.cpp
src/search/dolphinsearchoptionsconfigurator.cpp
src/search/dolphinsearchoptionsconfigurator.h

index 7291a1117ddb38acf5b8ed7defdd847127badb9d..5e08a9e2e5d292c922dac15b64ca2fed6d5f8f81 100644 (file)
@@ -1074,6 +1074,7 @@ void DolphinMainWindow::init()
     m_searchOptionsConfigurator->hide();
     connect(m_searchOptionsConfigurator, SIGNAL(searchOptionsChanged()),
             this, SLOT(searchItems()));
+    connect(this, SIGNAL(urlChanged(KUrl)), m_searchOptionsConfigurator, SLOT(setDirectory(KUrl)));
 #endif
 
     m_tabBar = new KTabBar(this);
index 9fd07f6cb73672220622eb5420f7f884aa782139..b24c36b8eb7553b0d735321c09e41d4d96863e34 100644 (file)
@@ -24,6 +24,7 @@
 
 #define DISABLE_NEPOMUK_LEGACY
 #include <nepomuk/andterm.h>
+#include <nepomuk/filequery.h>
 #include <nepomuk/orterm.h>
 #include <nepomuk/queryparser.h>
 #include <nepomuk/resourcetypeterm.h>
@@ -88,6 +89,7 @@ static const CriterionItem g_criterionItems[] = {
 DolphinSearchOptionsConfigurator::DolphinSearchOptionsConfigurator(QWidget* parent) :
     QWidget(parent),
     m_initialized(false),
+    m_directory(),
     m_locationBox(0),
     m_whatBox(0),
     m_addSelectorButton(0),
@@ -184,6 +186,17 @@ DolphinSearchOptionsConfigurator::~DolphinSearchOptionsConfigurator()
     SearchSettings::self()->writeConfig();
 }
 
+QString DolphinSearchOptionsConfigurator::customSearchQuery() const
+{
+    return m_customSearchQuery;
+}
+
+
+KUrl DolphinSearchOptionsConfigurator::directory() const
+{
+    return m_directory;
+}
+
 KUrl DolphinSearchOptionsConfigurator::nepomukSearchUrl() const
 {
     const Nepomuk::Query::Query query = nepomukQuery();
@@ -196,6 +209,13 @@ void DolphinSearchOptionsConfigurator::setCustomSearchQuery(const QString& searc
     updateButtons();
 }
 
+void DolphinSearchOptionsConfigurator::setDirectory(const KUrl& dir)
+{
+    if (dir.protocol() != QString::fromLatin1("nepomuksearch")) {
+        m_directory = dir;
+    }
+}
+
 void DolphinSearchOptionsConfigurator::showEvent(QShowEvent* event)
 {
     if (!event->spontaneous() && !m_initialized) {
@@ -342,9 +362,13 @@ Nepomuk::Query::Query DolphinSearchOptionsConfigurator::nepomukQuery() const
     default: break;
     }
 
-    Nepomuk::Query::Query query;
-    query.setTerm(andTerm);
-    return query;
+    Nepomuk::Query::FileQuery fileQuery;
+    if ((m_locationBox->currentIndex() == 1) && m_directory.isValid()) {
+        // "From Here" is selected as location filter
+        fileQuery.addIncludeFolder(m_directory);
+    }
+    fileQuery.setTerm(andTerm);
+    return fileQuery;
 }
 
 #include "dolphinsearchoptionsconfigurator.moc"
index 90adea7367abf9d48dc4b9b0b4a4dd9c5175b23e..e4f7718e266bcab65fa265388345d7cd2bd5b2ca 100644 (file)
@@ -43,6 +43,9 @@ public:
     DolphinSearchOptionsConfigurator(QWidget* parent = 0);
     virtual ~DolphinSearchOptionsConfigurator();
 
+    QString customSearchQuery() const;
+    KUrl directory() const;
+
     /**
      * Returns the sum of the configured options and the
      * custom search query as Nepomuk conform search URL. If the
@@ -60,6 +63,13 @@ public slots:
      */
     void setCustomSearchQuery(const QString& searchQuery);
 
+    /**
+     * Sets the directory that is used when the
+     * "From Here"-location-filter is used. URLs that represent
+     * already a Nepomuk search URL will be ignored.
+     */
+    void setDirectory(const KUrl& dir);
+
 signals:
     void searchOptionsChanged();
 
@@ -97,6 +107,7 @@ private:
 
 private:
     bool m_initialized;
+    KUrl m_directory;
     KComboBox* m_locationBox;
     KComboBox* m_whatBox;
     QPushButton* m_addSelectorButton;