diff --git a/src/kioslaves/search/kio_search.cpp b/src/kioslaves/search/kio_search.cpp --- a/src/kioslaves/search/kio_search.cpp +++ b/src/kioslaves/search/kio_search.cpp @@ -70,50 +70,9 @@ { } -static QString jsonQueryForType(const QString &type) -{ - const QString jsonQuery(QStringLiteral("{\"dayFilter\": 0,\ - \"monthFilter\": 0, \ - \"yearFilter\": 0, \ - \"type\": [ \"%1\"]}")); - return jsonQuery.arg(type); -} - -static QString jsonQueryFromUrl(const QUrl &url) -{ - const QString path = url.path(); - - if (path == QLatin1String("/documents")) { - return jsonQueryForType(QStringLiteral("Document")); - } else if (path.endsWith(QLatin1String("/images"))) { - return jsonQueryForType(QStringLiteral("Image")); - } else if (path.endsWith(QLatin1String("/audio"))) { - return jsonQueryForType(QStringLiteral("Audio")); - } else if (path.endsWith(QLatin1String("/videos"))) { - return jsonQueryForType(QStringLiteral("Video")); - } - - return QString(); -} - void SearchProtocol::listDir(const QUrl& url) { - Query q; - - QUrlQuery urlQuery(url); - if (urlQuery.hasQueryItem(QStringLiteral("json"))) { - QString jsonString = urlQuery.queryItemValue(QStringLiteral("json"), QUrl::FullyDecoded); - q = Query::fromJSON(jsonString.toUtf8()); - } else if (urlQuery.hasQueryItem(QStringLiteral("query"))) { - QString queryString = urlQuery.queryItemValue(QStringLiteral("query"), QUrl::FullyDecoded); - - q.setSearchString(queryString); - } else { - const QString jsonString = jsonQueryFromUrl(url); - if (!jsonString.isEmpty()) { - q = Query::fromJSON(jsonString.toUtf8()); - } - } + Query q = Query::fromSearchUrl(url); q.setSortingOption(Query::SortNone); ResultIterator it = q.exec(); diff --git a/src/lib/query.cpp b/src/lib/query.cpp --- a/src/lib/query.cpp +++ b/src/lib/query.cpp @@ -312,14 +312,48 @@ return url; } +static QString jsonQueryFromUrl(const QUrl &url) +{ + const QString path = url.path(); + + if (path == QLatin1String("/documents")) { + return QStringLiteral("{\"type\":[\"Document\"]}"); + } else if (path.endsWith(QLatin1String("/images"))) { + return QStringLiteral("{\"type\":[\"Image\"]}"); + } else if (path.endsWith(QLatin1String("/audio"))) { + return QStringLiteral("{\"type\":[\"Audio\"]}"); + } else if (path.endsWith(QLatin1String("/videos"))) { + return QStringLiteral("{\"type\":[\"Video\"]}"); + } + + return QString(); +} + Query Query::fromSearchUrl(const QUrl& url) { if (url.scheme() != QLatin1String("baloosearch")) return Query(); QUrlQuery urlQuery(url); - QString jsonString = urlQuery.queryItemValue(QStringLiteral("json"), QUrl::FullyDecoded); - return Query::fromJSON(jsonString.toUtf8()); + + if (urlQuery.hasQueryItem(QStringLiteral("json"))) { + QString jsonString = urlQuery.queryItemValue(QStringLiteral("json"), QUrl::FullyDecoded); + return Query::fromJSON(jsonString.toUtf8()); + } + + if (urlQuery.hasQueryItem(QStringLiteral("query"))) { + QString queryString = urlQuery.queryItemValue(QStringLiteral("query"), QUrl::FullyDecoded); + Query q; + q.setSearchString(queryString); + return q; + } + + const QString jsonString = jsonQueryFromUrl(url); + if (!jsonString.isEmpty()) { + return Query::fromJSON(jsonString.toUtf8()); + } + + return Query(); } QString Query::titleFromQueryUrl(const QUrl& url)