diff options
| author | Sebastian Trueg <[email protected]> | 2010-02-17 21:01:29 +0000 |
|---|---|---|
| committer | Sebastian Trueg <[email protected]> | 2010-02-17 21:01:29 +0000 |
| commit | 52e1503052508d6423d4deba05ea93a075ad78fe (patch) | |
| tree | 4a0b88476faee8c24a8893d5f39d0f348d4bd7a1 /src/search | |
| parent | c7515e9e90c5fd81790759444b82cdc3f71fcbf6 (diff) | |
Implemented search restriction to filenames.
svn path=/trunk/KDE/kdebase/apps/; revision=1091902
Diffstat (limited to 'src/search')
| -rw-r--r-- | src/search/dolphinsearchoptionsconfigurator.cpp | 26 |
1 files changed, 20 insertions, 6 deletions
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 <nepomuk/orterm.h> #include <nepomuk/queryparser.h> #include <nepomuk/resourcetypeterm.h> -#include <nepomuk/term.h> +#include <nepomuk/literalterm.h> #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 |
