X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/7949aee2d2528fb3adfc83d43799f1566e835466..405dd624fb:/src/search/dolphinsearchbox.cpp diff --git a/src/search/dolphinsearchbox.cpp b/src/search/dolphinsearchbox.cpp index 20f767cbc..23f520de1 100644 --- a/src/search/dolphinsearchbox.cpp +++ b/src/search/dolphinsearchbox.cpp @@ -22,6 +22,7 @@ #include "dolphin_searchsettings.h" #include "dolphinfacetswidget.h" +#include "dolphinquery.h" #include "panels/places/placesitemmodel.h" #include @@ -38,9 +39,11 @@ #include #include #include +#include #include #include #include +#include #include #include #include @@ -143,7 +146,8 @@ QUrl DolphinSearchBox::urlForSearching() const void DolphinSearchBox::fromSearchUrl(const QUrl& url) { if (url.scheme() == QLatin1String("baloosearch")) { - fromBalooSearchUrl(url); + const DolphinQuery query = DolphinQuery::fromBalooSearchUrl(url); + updateFromQuery(query); } else if (url.scheme() == QLatin1String("filenamesearch")) { const QUrlQuery query(url); setText(query.queryItemValue(QStringLiteral("search"))); @@ -200,7 +204,7 @@ void DolphinSearchBox::showEvent(QShowEvent* event) void DolphinSearchBox::hideEvent(QHideEvent* event) { - Q_UNUSED(event); + Q_UNUSED(event) m_startedSearching = false; m_startSearchTimer->stop(); } @@ -473,11 +477,7 @@ QUrl DolphinSearchBox::balooUrlForSearching() const Baloo::Query query; query.addType(m_facetsWidget->facetType()); - QStringList queryStrings; - QString ratingQuery = m_facetsWidget->ratingTerm(); - if (!ratingQuery.isEmpty()) { - queryStrings << ratingQuery; - } + QStringList queryStrings = m_facetsWidget->searchTerms(); if (m_contentButton->isChecked()) { queryStrings << text; @@ -498,11 +498,8 @@ QUrl DolphinSearchBox::balooUrlForSearching() const #endif } -void DolphinSearchBox::fromBalooSearchUrl(const QUrl& url) +void DolphinSearchBox::updateFromQuery(const DolphinQuery& query) { -#ifdef HAVE_BALOO - const Baloo::Query query = Baloo::Query::fromSearchUrl(url); - // Block all signals to avoid unnecessary "searchRequest" signals // while we adjust the search text and the facet widget. blockSignals(true); @@ -514,30 +511,23 @@ void DolphinSearchBox::fromBalooSearchUrl(const QUrl& url) setSearchPath(QUrl::fromLocalFile(QDir::homePath())); } - m_facetsWidget->resetOptions(); + setText(query.text()); - setText(query.searchString()); - - QStringList types = query.types(); - if (!types.isEmpty()) { - m_facetsWidget->setFacetType(types.first()); + if (query.hasContentSearch()) { + m_contentButton->setChecked(true); + } else if (query.hasFileName()) { + m_fileNameButton->setChecked(true); } - const QStringList subTerms = query.searchString().split(' ', QString::SkipEmptyParts); - foreach (const QString& subTerm, subTerms) { - if (subTerm.startsWith(QLatin1String("filename:"))) { - const QString value = subTerm.mid(9); - setText(value); - } else if (m_facetsWidget->isRatingTerm(subTerm)) { - m_facetsWidget->setRatingTerm(subTerm); - } + m_facetsWidget->resetSearchTerms(); + m_facetsWidget->setFacetType(query.type()); + const QStringList searchTerms = query.searchTerms(); + for (const QString& searchTerm : searchTerms) { + m_facetsWidget->setSearchTerm(searchTerm); } m_startSearchTimer->stop(); blockSignals(false); -#else - Q_UNUSED(url); -#endif } void DolphinSearchBox::updateFacetsVisible()