From: Sebastian Trueg Date: Wed, 17 Feb 2010 21:01:29 +0000 (+0000) Subject: Implemented search restriction to filenames. X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/52e1503052508d6423d4deba05ea93a075ad78fe?ds=inline Implemented search restriction to filenames. svn path=/trunk/KDE/kdebase/apps/; revision=1091902 --- diff --git a/src/search/dolphinsearchoptionsconfigurator.cpp b/src/search/dolphinsearchoptionsconfigurator.cpp index 93b7a589c..29df5f49d 100644 --- a/src/search/dolphinsearchoptionsconfigurator.cpp +++ b/src/search/dolphinsearchoptionsconfigurator.cpp @@ -28,7 +28,7 @@ #include #include #include -#include +#include #include "nfo.h" @@ -318,11 +318,7 @@ Nepomuk::Query::Query DolphinSearchOptionsConfigurator::nepomukQuery() const andTerm.addSubTerm(term); } - // add custom query term from the searchbar - const Nepomuk::Query::Query customQuery = Nepomuk::Query::QueryParser::parseQuery(m_customSearchQuery); - if (customQuery.isValid()) { - andTerm.addSubTerm(customQuery.term()); - } + bool addCustomQuery = true; // filter result by the "What" filter switch (m_whatBox->currentIndex()) { @@ -338,9 +334,27 @@ Nepomuk::Query::Query DolphinSearchOptionsConfigurator::nepomukQuery() const andTerm.addSubTerm(textDocument); break; } + case 3: { + // Filenames + // trueg: Restriction to filename differs a bit from restriction to a type of file since it does not add a condition + // on the query but influences the text edited in the search bar directly. + // This is a bit tricky as we need to use the search bar text as plain text value for filename searches + // We do it the ugly way assuming the user only entered a literal value. + Nepomuk::Query::ComparisonTerm filenameTerm(Nepomuk::Vocabulary::NFO::fileName(), Nepomuk::Query::LiteralTerm(m_customSearchQuery)); + andTerm.addSubTerm(filenameTerm); + addCustomQuery = false; + } default: break; } + if (addCustomQuery) { + // add custom query term from the searchbar + const Nepomuk::Query::Query customQuery = Nepomuk::Query::QueryParser::parseQuery(m_customSearchQuery); + if (customQuery.isValid()) { + andTerm.addSubTerm(customQuery.term()); + } + } + Nepomuk::Query::FileQuery fileQuery; if ((m_locationBox->currentIndex() == 1) && m_directory.isValid()) { // "From Here" is selected as location filter