]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/search/dolphinsearchbox.cpp
Add search modes for the Search Panel
[dolphin.git] / src / search / dolphinsearchbox.cpp
index e3024b6e00b64309c2121a343f4da6ec50917a30..17a691e44c0ce12bdeecde33e3d944a3981c0055 100644 (file)
@@ -25,7 +25,7 @@
 #include <KIcon>
 #include <KLineEdit>
 #include <KLocale>
-#include <kseparator.h>
+#include <KSeparator>
 
 #include <QButtonGroup>
 #include <QDir>
@@ -42,9 +42,9 @@
 
 #include <config-nepomuk.h>
 #ifdef HAVE_NEPOMUK
-    #include <Nepomuk/Query/AndTerm>
     #include <Nepomuk/Query/FileQuery>
     #include <Nepomuk/Query/LiteralTerm>
+    #include <Nepomuk/Query/OrTerm>
     #include <Nepomuk/Query/Query>
     #include <Nepomuk/Query/QueryParser>
     #include <Nepomuk/Query/ResourceTypeTerm>
@@ -205,11 +205,7 @@ void DolphinSearchBox::slotConfigurationChanged()
 
 void DolphinSearchBox::slotSearchTextChanged(const QString& text)
 {
-    if (text.isEmpty()) {
-        m_startSearchTimer->stop();
-    } else {
-        m_startSearchTimer->start();
-    }
+    m_startSearchTimer->start();
     emit searchTextChanged(text);
 }
 
@@ -353,31 +349,31 @@ void DolphinSearchBox::init()
 KUrl DolphinSearchBox::nepomukUrlForSearching() const
 {
 #ifdef HAVE_NEPOMUK
-    Nepomuk::Query::AndTerm andTerm;
+    Nepomuk::Query::OrTerm orTerm;
 
-    // Add input from search filter
     const QString text = m_searchInput->text();
-    if (!text.isEmpty()) {
-        if (m_fileNameButton->isChecked()) {
-            QString regex = QRegExp::escape(text);
-            regex.replace("\\*", QLatin1String(".*"));
-            regex.replace("\\?", QLatin1String("."));
-            regex.replace("\\", "\\\\");
-            andTerm.addSubTerm(Nepomuk::Query::ComparisonTerm(
-                                    Nepomuk::Vocabulary::NFO::fileName(),
-                                    Nepomuk::Query::LiteralTerm(regex),
-                                    Nepomuk::Query::ComparisonTerm::Regexp));
-        } else {
-            const Nepomuk::Query::Query customQuery = Nepomuk::Query::QueryParser::parseQuery(text, Nepomuk::Query::QueryParser::DetectFilenamePattern);
-            if (customQuery.isValid()) {
-                andTerm.addSubTerm(customQuery.term());
-            }
+
+    // Search the text in the filename in any case
+    QString regex = QRegExp::escape(text);
+    regex.replace("\\*", QLatin1String(".*"));
+    regex.replace("\\?", QLatin1String("."));
+    regex.replace("\\", "\\\\");
+    orTerm.addSubTerm(Nepomuk::Query::ComparisonTerm(
+                            Nepomuk::Vocabulary::NFO::fileName(),
+                            Nepomuk::Query::LiteralTerm(regex),
+                            Nepomuk::Query::ComparisonTerm::Regexp));
+
+    if (m_contentButton->isChecked()) {
+        // Search the text also in the content of the files
+        const Nepomuk::Query::Query customQuery = Nepomuk::Query::QueryParser::parseQuery(text, Nepomuk::Query::QueryParser::DetectFilenamePattern);
+        if (customQuery.isValid()) {
+            orTerm.addSubTerm(customQuery.term());
         }
     }
 
     Nepomuk::Query::FileQuery fileQuery;
     fileQuery.setFileMode(Nepomuk::Query::FileQuery::QueryFilesAndFolders);
-    fileQuery.setTerm(andTerm);
+    fileQuery.setTerm(orTerm);
     if (m_fromHereButton->isChecked()) {
         const bool recursive = true;
         fileQuery.addIncludeFolder(m_searchPath, recursive);