From 7e291fdc453a74e76b803057cc99e821ed517e66 Mon Sep 17 00:00:00 2001 From: Lionel Chauvin Date: Sat, 22 Jan 2011 10:34:48 +0100 Subject: Keep downloaded suggestions in memory. This prevents from downloading it again, letting the completion list be more reactive. --- src/opensearch/opensearchengine.cpp | 44 +++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'src/opensearch/opensearchengine.cpp') diff --git a/src/opensearch/opensearchengine.cpp b/src/opensearch/opensearchengine.cpp index ef0f3f74..15228455 100644 --- a/src/opensearch/opensearchengine.cpp +++ b/src/opensearch/opensearchengine.cpp @@ -34,6 +34,10 @@ // Qt Includes #include +#include + +// KDE Includes +#include OpenSearchEngine::OpenSearchEngine(QObject *parent) @@ -246,6 +250,19 @@ bool OpenSearchEngine::operator<(const OpenSearchEngine &other) const } +ResponseList OpenSearchEngine::parseSuggestion(const QString &searchTerm, const QByteArray &resp) +{ + QFile file(suggestionPathFor(searchTerm)); + if (file.open(QIODevice::WriteOnly | QIODevice::Text)) + { + file.write(resp, resp.size()); + file.close(); + } + + return parseSuggestion(resp); +} + + ResponseList OpenSearchEngine::parseSuggestion(const QByteArray &resp) { if (!m_parser) @@ -259,3 +276,30 @@ QString OpenSearchEngine::type() { return m_parser->type(); } + + +QString OpenSearchEngine::suggestionPathFor(const QString &searchTerm) +{ + return KStandardDirs::locateLocal("cache", QString("opensearch/") + m_name + QString("/") + searchTerm, true); +} + + +bool OpenSearchEngine::hasCachedSuggestionsFor(const QString &searchTerm) +{ + return QFile::exists(suggestionPathFor(searchTerm)); +} + + +ResponseList OpenSearchEngine::cachedSuggestionsFor(const QString &searchTerm) +{ + QFile file(suggestionPathFor(searchTerm)); + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) + return ResponseList(); + + QByteArray resp; + while (!file.atEnd()) + { + resp += file.readLine(); + } + return parseSuggestion(resp); +} -- cgit v1.2.1