From: Peter Penz Date: Sat, 12 Dec 2009 12:23:05 +0000 (+0000) Subject: allow to restrict the search results by the current folder (including all sub folders) X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/5e25098037571c8a43fd8c407c1758065e1a1548?ds=inline allow to restrict the search results by the current folder (including all sub folders) svn path=/trunk/KDE/kdebase/apps/; revision=1061589 --- diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index 7291a1117..5e08a9e2e 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -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); diff --git a/src/search/dolphinsearchoptionsconfigurator.cpp b/src/search/dolphinsearchoptionsconfigurator.cpp index 9fd07f6cb..b24c36b8e 100644 --- a/src/search/dolphinsearchoptionsconfigurator.cpp +++ b/src/search/dolphinsearchoptionsconfigurator.cpp @@ -24,6 +24,7 @@ #define DISABLE_NEPOMUK_LEGACY #include +#include #include #include #include @@ -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" diff --git a/src/search/dolphinsearchoptionsconfigurator.h b/src/search/dolphinsearchoptionsconfigurator.h index 90adea736..e4f7718e2 100644 --- a/src/search/dolphinsearchoptionsconfigurator.h +++ b/src/search/dolphinsearchoptionsconfigurator.h @@ -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;