summaryrefslogtreecommitdiff
path: root/src/opensearch
diff options
context:
space:
mode:
Diffstat (limited to 'src/opensearch')
-rw-r--r--src/opensearch/opensearchengine.cpp314
-rw-r--r--src/opensearch/opensearchengine.h122
-rw-r--r--src/opensearch/opensearchmanager.cpp358
-rw-r--r--src/opensearch/opensearchmanager.h125
-rw-r--r--src/opensearch/opensearchreader.cpp194
-rw-r--r--src/opensearch/opensearchreader.h55
-rw-r--r--src/opensearch/opensearchwriter.cpp130
-rw-r--r--src/opensearch/opensearchwriter.h56
-rw-r--r--src/opensearch/searchengine.cpp157
-rw-r--r--src/opensearch/searchengine.h59
-rw-r--r--src/opensearch/suggestionparser.cpp147
-rw-r--r--src/opensearch/suggestionparser.h118
12 files changed, 0 insertions, 1835 deletions
diff --git a/src/opensearch/opensearchengine.cpp b/src/opensearch/opensearchengine.cpp
deleted file mode 100644
index 28027828..00000000
--- a/src/opensearch/opensearchengine.cpp
+++ /dev/null
@@ -1,314 +0,0 @@
-/* ============================================================
-*
-* This file is a part of the rekonq project
-*
-* Copyright (C) 2009 by Jakub Wieczorek <faw217@gmail.com>
-* Copyright (C) 2009 by Christian Franke <cfchris6@ts2server.com>
-* Copyright (C) 2009 by Fredy Yanardi <fyanardi@gmail.com>
-* Copyright (C) 2010-2011 by Lionel Chauvin <megabigbug@yahoo.fr>
-* Copyright (C) 2010-2011 by Andrea Diamantini <adjam7 at gmail dot com>
-*
-*
-* This program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU General Public License as
-* published by the Free Software Foundation; either version 2 of
-* the License or (at your option) version 3 or any later version
-* accepted by the membership of KDE e.V. (or its successor approved
-* by the membership of KDE e.V.), which shall act as a proxy
-* defined in Section 14 of version 3 of the license.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program. If not, see <http://www.gnu.org/licenses/>.
-*
-* ============================================================ */
-
-
-// Self Includes
-#include "opensearchengine.h"
-#include "opensearchengine.moc"
-
-// Qt Includes
-#include <QtCore/QRegExp>
-#include <QtCore/QFile>
-#include <QtCore/QFileInfo>
-#include <QtCore/QDateTime>
-
-// KDE Includes
-#include <KStandardDirs>
-
-
-OpenSearchEngine::OpenSearchEngine(QObject *parent)
- : QObject(parent)
- , m_parser(0)
-{
-}
-
-
-OpenSearchEngine::~OpenSearchEngine()
-{
- if (m_parser)
- {
- delete m_parser;
- }
-}
-
-
-QString OpenSearchEngine::parseTemplate(const QString &searchTerm, const QString &searchTemplate)
-{
- QString language = QLocale().name();
- // Simple conversion to RFC 3066.
- language = language.replace(QL1C('_'), QL1C('-'));
- QString country = language;
- country = (country.remove(0, country.indexOf(QL1C('-')) + 1)).toLower();
- const int firstDashPosition = country.indexOf(QL1C('-'));
- if (firstDashPosition >= 0)
- country = country.mid(firstDashPosition + 1);
-
- QString result = searchTemplate;
- result.replace(QL1S("{count}"), QL1S("20"));
- result.replace(QL1S("{startIndex}"), QL1S("0"));
- result.replace(QL1S("{startPage}"), QL1S("0"));
- result.replace(QL1S("{language}"), language);
- result.replace(QL1S("{country}"), country.toLower());
- result.replace(QL1S("{inputEncoding}"), QL1S("UTF-8"));
- result.replace(QL1S("{outputEncoding}"), QL1S("UTF-8"));
- result.replace(QL1S("{searchTerms}"), searchTerm);
-
- return result;
-}
-
-
-QString OpenSearchEngine::name() const
-{
- return m_name;
-}
-
-
-void OpenSearchEngine::setName(const QString &name)
-{
- m_name = name;
-}
-
-
-QString OpenSearchEngine::description() const
-{
- return m_description;
-}
-
-
-void OpenSearchEngine::setDescription(const QString &description)
-{
- m_description = description;
-}
-
-
-QString OpenSearchEngine::searchUrlTemplate() const
-{
- return m_searchUrlTemplate;
-}
-
-
-void OpenSearchEngine::setSearchUrlTemplate(const QString &searchUrlTemplate)
-{
- m_searchUrlTemplate = searchUrlTemplate;
-}
-
-
-KUrl OpenSearchEngine::searchUrl(const QString &searchTerm) const
-{
- if (m_searchUrlTemplate.isEmpty())
- {
- return KUrl();
- }
-
- KUrl retVal = KUrl::fromEncoded(parseTemplate(searchTerm, m_searchUrlTemplate).toUtf8());
-
- QList<Parameter>::const_iterator i;
- for (i = m_searchParameters.constBegin(); i != m_searchParameters.constEnd(); ++i)
- {
- retVal.addQueryItem(i->first, parseTemplate(searchTerm, i->second));
- }
-
- return retVal;
-}
-
-
-bool OpenSearchEngine::providesSuggestions() const
-{
- return !m_suggestionsUrlTemplate.isEmpty();
-}
-
-
-QString OpenSearchEngine::suggestionsUrlTemplate() const
-{
- return m_suggestionsUrlTemplate;
-}
-
-
-void OpenSearchEngine::setSuggestionsUrlTemplate(const QString &suggestionsUrlTemplate)
-{
- m_suggestionsUrlTemplate = suggestionsUrlTemplate;
-}
-
-
-KUrl OpenSearchEngine::suggestionsUrl(const QString &searchTerm) const
-{
- if (m_suggestionsUrlTemplate.isEmpty())
- {
- return KUrl();
- }
-
- KUrl retVal = KUrl::fromEncoded(parseTemplate(searchTerm, m_suggestionsUrlTemplate).toUtf8());
-
- QList<Parameter>::const_iterator i;
- for (i = m_suggestionsParameters.constBegin(); i != m_suggestionsParameters.constEnd(); ++i)
- {
- retVal.addQueryItem(i->first, parseTemplate(searchTerm, i->second));
- }
- return retVal;
-}
-
-
-QList<OpenSearchEngine::Parameter> OpenSearchEngine::searchParameters() const
-{
- return m_searchParameters;
-}
-
-
-void OpenSearchEngine::setSearchParameters(const QList<Parameter> &searchParameters)
-{
- m_searchParameters = searchParameters;
-}
-
-
-QList<OpenSearchEngine::Parameter> OpenSearchEngine::suggestionsParameters() const
-{
- return m_suggestionsParameters;
-}
-
-
-void OpenSearchEngine::setSuggestionsParameters(const QList<Parameter> &suggestionsParameters)
-{
- m_suggestionsParameters = suggestionsParameters;
-}
-
-
-void OpenSearchEngine::setSuggestionParser(SuggestionParser *parser)
-{
- m_parser = parser;
-}
-
-
-QString OpenSearchEngine::imageUrl() const
-{
- return m_imageUrl;
-}
-
-
-void OpenSearchEngine::setImageUrl(const QString &imageUrl)
-{
- m_imageUrl = imageUrl;
-}
-
-
-QImage OpenSearchEngine::image() const
-{
- return m_image;
-}
-
-
-void OpenSearchEngine::setImage(const QImage &image)
-{
- m_image = image;
-}
-
-
-bool OpenSearchEngine::isValid() const
-{
- return (!m_name.isEmpty() && !m_searchUrlTemplate.isEmpty());
-}
-
-
-bool OpenSearchEngine::operator==(const OpenSearchEngine &other) const
-{
- return (m_name == other.m_name
- && m_description == other.m_description
- && m_imageUrl == other.m_imageUrl
- && m_searchUrlTemplate == other.m_searchUrlTemplate
- && m_suggestionsUrlTemplate == other.m_suggestionsUrlTemplate
- && m_searchParameters == other.m_searchParameters
- && m_suggestionsParameters == other.m_suggestionsParameters);
-}
-
-
-bool OpenSearchEngine::operator<(const OpenSearchEngine &other) const
-{
- return (m_name < other.m_name);
-}
-
-
-ResponseList OpenSearchEngine::parseSuggestion(const QString &searchTerm, const QByteArray &resp)
-{
- if (!searchTerm.isEmpty() && !resp.isEmpty())
- {
- 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)
- return ResponseList();
-
- if (resp.isEmpty())
- return ResponseList();
-
- return m_parser->parse(resp);
-}
-
-
-QString OpenSearchEngine::type()
-{
- return m_parser->type();
-}
-
-
-QString OpenSearchEngine::suggestionPathFor(const QString &searchTerm)
-{
- return KStandardDirs::locateLocal("cache", QL1S("opensearch/") + m_name + QL1S("/") + searchTerm, true);
-}
-
-
-bool OpenSearchEngine::hasCachedSuggestionsFor(const QString &searchTerm)
-{
- QFileInfo info(suggestionPathFor(searchTerm));
- return info.exists() && info.lastModified().daysTo(QDateTime::currentDateTime()) < 7;
-}
-
-
-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);
-}
diff --git a/src/opensearch/opensearchengine.h b/src/opensearch/opensearchengine.h
deleted file mode 100644
index cc826aec..00000000
--- a/src/opensearch/opensearchengine.h
+++ /dev/null
@@ -1,122 +0,0 @@
-/* ============================================================
-*
-* This file is a part of the rekonq project
-*
-* Copyright (C) 2009 by Jakub Wieczorek <faw217@gmail.com>
-* Copyright (C) 2009 by Christian Franke <cfchris6@ts2server.com>
-* Copyright (C) 2010-2011 by Lionel Chauvin <megabigbug@yahoo.fr>
-* Copyright (C) 2010-2011 by Andrea Diamantini <adjam7 at gmail dot com>
-*
-*
-* This program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU General Public License as
-* published by the Free Software Foundation; either version 2 of
-* the License or (at your option) version 3 or any later version
-* accepted by the membership of KDE e.V. (or its successor approved
-* by the membership of KDE e.V.), which shall act as a proxy
-* defined in Section 14 of version 3 of the license.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program. If not, see <http://www.gnu.org/licenses/>.
-*
-* ============================================================ */
-
-
-#ifndef OPENSEARCHENGINE_H
-#define OPENSEARCHENGINE_H
-
-
-// Rekonq Includes
-#include "rekonq_defines.h"
-
-// Local Includes
-#include "suggestionparser.h"
-
-// KDE Includes
-#include <KUrl>
-
-// Qt Includes
-#include <QtCore/QPair>
-#include <QtGui/QImage>
-
-
-class OpenSearchEngine : public QObject
-{
- Q_OBJECT
-
-public:
- typedef QPair<QString, QString> Parameter;
-
- OpenSearchEngine(QObject *parent = 0);
- ~OpenSearchEngine();
-
- QString name() const;
- void setName(const QString &name);
-
- QString description() const;
- void setDescription(const QString &description);
-
- QString searchUrlTemplate() const;
- void setSearchUrlTemplate(const QString &searchUrl);
- KUrl searchUrl(const QString &searchTerm) const;
-
- bool providesSuggestions() const;
-
- QString suggestionsUrlTemplate() const;
- void setSuggestionsUrlTemplate(const QString &suggestionsUrl);
- KUrl suggestionsUrl(const QString &searchTerm) const;
-
- QList<Parameter> searchParameters() const;
- void setSearchParameters(const QList<Parameter> &searchParameters);
-
- QList<Parameter> suggestionsParameters() const;
- void setSuggestionsParameters(const QList<Parameter> &suggestionsParameters);
-
- void setSuggestionParser(SuggestionParser *parser);
-
- QString imageUrl() const;
- void setImageUrl(const QString &url);
-
- QImage image() const;
- void setImage(const QImage &image);
-
- bool isValid() const;
-
- bool operator==(const OpenSearchEngine &other) const;
- bool operator<(const OpenSearchEngine &other) const;
-
- ResponseList parseSuggestion(const QString &searchTerm, const QByteArray &response);
-
- static QString parseTemplate(const QString &searchTerm, const QString &searchTemplate);
-
- QString type();
-
- bool hasCachedSuggestionsFor(const QString &searchTerm);
-
- ResponseList cachedSuggestionsFor(const QString &searchTerm);
-
-private:
- QString m_name;
- QString m_description;
-
- QString m_imageUrl;
- QImage m_image;
-
- QString m_searchUrlTemplate;
- QString m_suggestionsUrlTemplate;
- QList<Parameter> m_searchParameters;
- QList<Parameter> m_suggestionsParameters;
-
- SuggestionParser *m_parser;
-
- QString suggestionPathFor(const QString &searchTerm);
-
- ResponseList parseSuggestion(const QByteArray &resp);
-};
-
-#endif // OPENSEARCHENGINE_H
diff --git a/src/opensearch/opensearchmanager.cpp b/src/opensearch/opensearchmanager.cpp
deleted file mode 100644
index 5fad35ac..00000000
--- a/src/opensearch/opensearchmanager.cpp
+++ /dev/null
@@ -1,358 +0,0 @@
-/* ============================================================
-*
-* This file is a part of the rekonq project
-*
-* Copyright (C) 2009 by Fredy Yanardi <fyanardi@gmail.com>
-* Copyright (C) 2010-2011 by Lionel Chauvin <megabigbug@yahoo.fr>
-* Copyright (C) 2010-2012 by Andrea Diamantini <adjam7 at gmail dot com>
-*
-*
-* This program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU General Public License as
-* published by the Free Software Foundation; either version 2 of
-* the License or (at your option) version 3 or any later version
-* accepted by the membership of KDE e.V. (or its successor approved
-* by the membership of KDE e.V.), which shall act as a proxy
-* defined in Section 14 of version 3 of the license.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program. If not, see <http://www.gnu.org/licenses/>.
-*
-* ============================================================ */
-
-
-// Self Includes
-#include "opensearchmanager.h"
-#include "opensearchmanager.moc"
-
-// Local Includes
-#include "application.h"
-#include "opensearchengine.h"
-#include "opensearchreader.h"
-#include "opensearchwriter.h"
-
-// KDE Includes
-#include <KGlobal>
-#include <KStandardDirs>
-#include <KUrl>
-#include <kio/scheduler.h>
-#include <KService>
-#include <KDE/KMessageBox>
-#include <KUriFilterData>
-#include <KConfigGroup>
-
-// Qt Includes
-#include <QFile>
-#include <QFileInfo>
-#include <QDBusMessage>
-#include <QDBusConnection>
-
-
-OpenSearchManager::OpenSearchManager(QObject *parent)
- : QObject(parent)
- , m_activeEngine(0)
- , m_currentJob(0)
-{
- m_state = IDLE;
- loadEngines();
-}
-
-
-OpenSearchManager::~OpenSearchManager()
-{
- qDeleteAll(m_engineCache);
- m_engineCache.clear();
- m_engines.clear();
-}
-
-
-void OpenSearchManager::setSearchProvider(const QString &searchProvider)
-{
- m_activeEngine = 0;
-
- if (!m_engineCache.contains(searchProvider))
- {
- const QString fileName = KGlobal::dirs()->findResource("data", "rekonq/opensearch/" + trimmedEngineName(searchProvider) + ".xml");
- kDebug() << searchProvider << " trimmed name: " << trimmedEngineName(searchProvider) << " file name path: " << fileName;
- if (fileName.isEmpty())
- {
- return;
- }
- QFile file(fileName);
-
- if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
- {
- return;
- }
-
- OpenSearchReader reader;
- OpenSearchEngine *engine = reader.read(&file);
-
- if (engine)
- {
- m_engineCache.insert(searchProvider, engine);
- }
- else
- {
- return;
- }
- }
-
- m_activeEngine = m_engineCache.value(searchProvider);
-}
-
-
-bool OpenSearchManager::isSuggestionAvailable()
-{
- return m_activeEngine != 0;
-}
-
-
-void OpenSearchManager::addOpenSearchEngine(const KUrl &url, const QString &title, const QString &shortcut)
-{
- m_shortcut = shortcut;
- m_title = trimmedEngineName(title);
-
- if (m_state != IDLE)
- {
- idleJob();
- }
-
- m_currentJob = KIO::get(url, KIO::NoReload, KIO::HideProgressInfo);
- m_jobUrl = url;
- m_state = REQ_DESCRIPTION;
- connect(m_currentJob, SIGNAL(data(KIO::Job*, QByteArray)), this, SLOT(dataReceived(KIO::Job*, QByteArray)));
- connect(m_currentJob, SIGNAL(result(KJob*)), this, SLOT(jobFinished(KJob*)));
-}
-
-
-void OpenSearchManager::requestSuggestion(const QString &searchText)
-{
- if (!m_activeEngine)
- return;
-
- if (m_state != IDLE)
- {
- // NOTE:
- // changing OpenSearchManager behavior
- // using idleJob here lets opensearchmanager to start another search, while
- // if we want in any case lets it finish its previous job we can just return here.
- idleJob();
- }
-
- if (m_activeEngine->hasCachedSuggestionsFor(searchText))
- {
- emit suggestionsReceived(searchText, m_activeEngine->cachedSuggestionsFor(searchText));
- }
- else
- {
- KUrl url = m_activeEngine->suggestionsUrl(searchText);
- _typedText = searchText;
- m_currentJob = KIO::get(url, KIO::NoReload, KIO::HideProgressInfo);
- m_state = REQ_SUGGESTION;
- connect(m_currentJob, SIGNAL(data(KIO::Job*, QByteArray)), this, SLOT(dataReceived(KIO::Job*, QByteArray)));
- connect(m_currentJob, SIGNAL(result(KJob*)), this, SLOT(jobFinished(KJob*)));
- }
-}
-
-
-void OpenSearchManager::dataReceived(KIO::Job *job, const QByteArray &data)
-{
- Q_UNUSED(job);
- m_jobData.append(data);
-}
-
-
-void OpenSearchManager::jobFinished(KJob *job)
-{
- if (!job->error() && m_state == REQ_DESCRIPTION)
- {
- OpenSearchReader reader;
- OpenSearchEngine *engine = reader.read(m_jobData);
- if (engine)
- {
- m_engineCache.insert(m_title, engine);
- m_engines.insert(m_jobUrl, m_shortcut);
- saveEngines();
-
- QString path;
- if (engine->providesSuggestions())
- {
- // save opensearch description only if it provides suggestions
- OpenSearchWriter writer;
- path = KGlobal::dirs()->findResource("data", "rekonq/opensearch/");
- QFile file(path + trimmedEngineName(engine->name()) + ".xml");
- writer.write(&file, engine);
-
- // save desktop file here
- QString searchUrl = OpenSearchEngine::parseTemplate("\\{@}", engine->searchUrlTemplate());
- m_currentJob = NULL;
-
- path = KGlobal::mainComponent().dirs()->saveLocation("services", "searchproviders/");
- KConfig _service(path + m_title + ".desktop", KConfig::SimpleConfig);
- KConfigGroup service(&_service, "Desktop Entry");
- service.writeEntry("Type", "Service");
- service.writeEntry("ServiceTypes", "SearchProvider");
- service.writeEntry("Name", m_title);
- service.writeEntry("Query", searchUrl);
- service.writeEntry("Keys", m_shortcut);
- // TODO charset
- service.writeEntry("Charset", "" /* provider->charset() */);
- // we might be overwriting a hidden entry
- service.writeEntry("Hidden", false);
- service.sync();
-
- // Update filters in running applications...
- QDBusMessage msg = QDBusMessage::createSignal("/", "org.kde.KUriFilterPlugin", "configure");
- QDBusConnection::sessionBus().send(msg);
-
- emit openSearchEngineAdded(engine->name());
- }
- }
- else
- {
- kFatal() << "Error while adding new open search engine";
- }
-
- idleJob();
- return;
- }
-
- // Do NOT parse if job had same errors or the typed string is empty
- if (job->error() || _typedText.isEmpty())
- {
- emit suggestionsReceived(_typedText, ResponseList());
- m_state = IDLE;
- return; // just silently return
- }
-
- if (m_state == REQ_SUGGESTION)
- {
- ResponseList suggestionsList;
- if (isSuggestionAvailable())
- {
- suggestionsList = m_activeEngine->parseSuggestion(_typedText, m_jobData);
- }
- emit suggestionsReceived(_typedText, suggestionsList);
- idleJob();
- return;
- }
-}
-
-
-void OpenSearchManager::loadEngines()
-{
- QFile file(KStandardDirs::locate("appdata", "opensearch/db_opensearch.json"));
- if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
- {
- return;
- }
-
- QString fileContent = QString::fromUtf8(file.readAll());
- QScriptEngine reader;
- if (!reader.canEvaluate(fileContent))
- {
- return;
- }
-
- QScriptValue responseParts = reader.evaluate(fileContent);
- QVariantList list;
- qScriptValueToSequence(responseParts, list);
- QStringList l;
- Q_FOREACH(const QVariant & e, list)
- {
- l = e.toStringList();
- m_engines.insert(KUrl(l.first()), l.last());
- }
- file.close();
-}
-
-
-void OpenSearchManager::saveEngines()
-{
- QFile file(KStandardDirs::locateLocal("appdata", "opensearch/db_opensearch.json"));
- if (!file.open(QIODevice::WriteOnly))
- {
- return;
- }
- QTextStream out(&file);
- out << "[";
- int i = 0;
- QList<KUrl> urls = m_engines.keys();
- Q_FOREACH(const KUrl & url, urls)
- {
- out << "[\"" << url.url() << "\",\"" << m_engines.value(url) << "\"]";
- i++;
- if (i != urls.size())
- {
- out << ",\n";
- }
- }
- out << "]\n";
- file.close();
-}
-
-
-void OpenSearchManager::removeDeletedEngines()
-{
- KService::Ptr service;
- Q_FOREACH(const KUrl & url, m_engines.keys())
- {
- service = KService::serviceByDesktopPath(QString("searchproviders/%1.desktop").arg(m_engines.value(url)));
- if (!service)
- {
- QString path = KStandardDirs::locateLocal("appdata", "opensearch/" + trimmedEngineName(m_engines.value(url)) + ".xml");
- QFile::remove(path + trimmedEngineName(m_engines.value(url)) + ".xml");
- m_engines.remove(url);
- }
- }
- saveEngines();
-}
-
-
-bool OpenSearchManager::engineExists(const KUrl &url)
-{
- return m_engines.contains(url);
-}
-
-
-QString OpenSearchManager::trimmedEngineName(const QString &engineName) const
-{
- QString trimmed;
- QString::ConstIterator constIter = engineName.constBegin();
- while (constIter != engineName.constEnd())
- {
- if (constIter->isSpace())
- {
- trimmed.append('_');
- }
- else
- {
- if (*constIter != '.')
- {
- trimmed.append(constIter->toLower());
- }
- }
- constIter++;
- }
-
- return trimmed;
-}
-
-
-void OpenSearchManager::idleJob()
-{
- if (m_currentJob)
- {
- disconnect(m_currentJob);
- m_currentJob->kill();
- }
-
- m_jobData.clear();
- m_state = IDLE;
-}
diff --git a/src/opensearch/opensearchmanager.h b/src/opensearch/opensearchmanager.h
deleted file mode 100644
index 3f99a06e..00000000
--- a/src/opensearch/opensearchmanager.h
+++ /dev/null
@@ -1,125 +0,0 @@
-/* ============================================================
-*
-* This file is a part of the rekonq project
-*
-* Copyright (C) 2009 by Fredy Yanardi <fyanardi@gmail.com>
-* Copyright (C) 2010-2011 by Lionel Chauvin <megabigbug@yahoo.fr>
-* Copyright (C) 2010-2012 by Andrea Diamantini <adjam7 at gmail dot com>
-*
-*
-* This program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU General Public License as
-* published by the Free Software Foundation; either version 2 of
-* the License or (at your option) version 3 or any later version
-* accepted by the membership of KDE e.V. (or its successor approved
-* by the membership of KDE e.V.), which shall act as a proxy
-* defined in Section 14 of version 3 of the license.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program. If not, see <http://www.gnu.org/licenses/>.
-*
-* ============================================================ */
-
-
-#ifndef OPENSEARCHMANAGER_H
-#define OPENSEARCHMANAGER_H
-
-
-// Rekonq Includes
-#include "rekonq_defines.h"
-
-// Local Includes
-#include "suggestionparser.h"
-
-// KDE Includes
-#include <kio/jobclasses.h>
-
-// Qt Includes
-#include <QObject>
-
-// Forward Declarations
-class OpenSearchEngine;
-
-
-/**
- * This class acts as a proxy between the SearchBar plugin
- * and the individual suggestion engine.
- * This class has a map of all available engines,
- * and route the suggestion request to the correct engine.
- */
-class OpenSearchManager : public QObject
-{
- Q_OBJECT
-
- enum STATE
- {
- REQ_SUGGESTION,
- REQ_DESCRIPTION,
- IDLE
- };
-
-public:
- /**
- * Constructor
- */
- explicit OpenSearchManager(QObject *parent = 0);
-
- virtual ~OpenSearchManager();
-
- void setSearchProvider(const QString &searchProvider);
-
- /**
- * Check whether a search suggestion engine is available for the given search provider
- * @param searchProvider the queried search provider
- */
- bool isSuggestionAvailable();
-
- bool engineExists(const KUrl &url);
-
-public Q_SLOTS:
- /**
- * Ask the specific suggestion engine to request for suggestion for the search text
- *
- * @param searchText the text to be queried to the suggestion service
- */
- void requestSuggestion(const QString &searchText);
- void addOpenSearchEngine(const KUrl &url, const QString &title, const QString &shortcut);
- void removeDeletedEngines();
-
-private Q_SLOTS:
- void dataReceived(KIO::Job *job, const QByteArray &data);
- void jobFinished(KJob *job);
-
-Q_SIGNALS:
- void suggestionsReceived(const QString &text, const ResponseList &suggestion);
- void openSearchEngineAdded(const QString &name);
-
-private:
- QString trimmedEngineName(const QString &engineName) const;
- void loadEngines();
- void saveEngines();
- void idleJob();
-
- // QString substitutueSearchText(const QString &searchText, const QString &requestURL) const;
- QByteArray m_jobData;
- QMap<QString, OpenSearchEngine*> m_engineCache;
- QMap<KUrl, QString> m_engines;
-
- OpenSearchEngine *m_activeEngine;
- STATE m_state;
-
- KIO::TransferJob *m_currentJob;
- KUrl m_jobUrl;
-
- QString _typedText;
-
- QString m_shortcut;
- QString m_title;
-};
-
-#endif // OPENSEARCHMANAGER_H
diff --git a/src/opensearch/opensearchreader.cpp b/src/opensearch/opensearchreader.cpp
deleted file mode 100644
index a4f43b7a..00000000
--- a/src/opensearch/opensearchreader.cpp
+++ /dev/null
@@ -1,194 +0,0 @@
-/* ============================================================
-*
-* This file is a part of the rekonq project
-*
-* Copyright (C) 2009 by Jakub Wieczorek <faw217@gmail.com>
-* Copyright (C) 2009 by Fredy Yanardi <fyanardi@gmail.com>
-* Copyright (C) 2010-2011 by Lionel Chauvin <megabigbug@yahoo.fr>
-* Copyright (C) 2010-2011 by Andrea Diamantini <adjam7 at gmail dot com>
-*
-*
-* This program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU General Public License as
-* published by the Free Software Foundation; either version 2 of
-* the License or (at your option) version 3 or any later version
-* accepted by the membership of KDE e.V. (or its successor approved
-* by the membership of KDE e.V.), which shall act as a proxy
-* defined in Section 14 of version 3 of the license.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program. If not, see <http://www.gnu.org/licenses/>.
-*
-* ============================================================ */
-
-
-// Self Includes
-#include "opensearchreader.h"
-
-// Local Includes
-#include "opensearchengine.h"
-#include "suggestionparser.h"
-
-// KDE Includes
-#include <KLocalizedString>
-
-// Qt Includes
-#include <QIODevice>
-
-
-OpenSearchReader::OpenSearchReader()
- : QXmlStreamReader()
-{
-}
-
-
-OpenSearchEngine *OpenSearchReader::read(const QByteArray &data)
-{
- clear();
- addData(data);
-
- return read();
-}
-
-
-OpenSearchEngine *OpenSearchReader::read(QIODevice *device)
-{
- clear();
-
- if (!device->isOpen())
- {
- device->open(QIODevice::ReadOnly);
- }
-
- setDevice(device);
- return read();
-}
-
-
-OpenSearchEngine *OpenSearchReader::read()
-{
- OpenSearchEngine *engine = new OpenSearchEngine();
-
- while (!isStartElement() && !atEnd())
- {
- readNext();
- }
-
- if (name() != QL1S("OpenSearchDescription")
- || namespaceUri() != QL1S("http://a9.com/-/spec/opensearch/1.1/")
- )
- {
- kDebug() << "The file is not an OpenSearch 1.1 file: " << name();
- raiseError(i18n("The file is not an OpenSearch 1.1 file."));
- return engine;
- }
-
- while (!(isEndElement() && name() == QL1S("OpenSearchDescription")) && !atEnd())
- {
- readNext();
-
- if (!isStartElement())
- continue;
-
- // ShortName
- if (name() == QL1S("ShortName"))
- {
- engine->setName(readElementText());
- continue;
- }
-
- // Description
- if (name() == QL1S("Description"))
- {
- engine->setDescription(readElementText());
- continue;
- }
-
- // Url
- if (name() == QL1S("Url"))
- {
- QString type = attributes().value(QL1S("type")).toString();
- QString url = attributes().value(QL1S("template")).toString();
-
- if (url.isEmpty())
- continue;
-
- QList<OpenSearchEngine::Parameter> parameters;
-
- readNext();
-
- while (!(isEndElement() && name() == QL1S("Url")))
- {
- if (!isStartElement()
- || (name() != QL1S("Param")
- && name() != QL1S("Parameter")))
- {
- readNext();
- continue;
- }
-
- QString key = attributes().value(QL1S("name")).toString();
- QString value = attributes().value(QL1S("value")).toString();
-
- if (!key.isEmpty() && !value.isEmpty())
- {
- parameters.append(OpenSearchEngine::Parameter(key, value));
- }
-
- while (!isEndElement())
- {
- readNext();
- }
- }
-
- if (type == QL1S("text/html"))
- {
- engine->setSearchUrlTemplate(url);
- engine->setSearchParameters(parameters);
- }
- else
- {
- if (engine->suggestionsUrlTemplate().isEmpty()
- && type == QL1S("application/x-suggestions+json")) //note: xml is preferred
- {
- engine->setSuggestionsUrlTemplate(url);
- engine->setSuggestionsParameters(parameters);
- engine->setSuggestionParser(new JSONParser());
- }
- else if (type == QL1S("application/x-suggestions+xml"))
- {
- engine->setSuggestionsUrlTemplate(url);
- engine->setSuggestionsParameters(parameters);
- engine->setSuggestionParser(new XMLParser());
- }
- }
-
- continue;
- }
-
- // Image
- if (name() == QL1S("Image"))
- {
- engine->setImageUrl(readElementText());
- continue;
- }
-
- // Engine check
- if (!engine->name().isEmpty()
- && !engine->description().isEmpty()
- && !engine->suggestionsUrlTemplate().isEmpty()
- && !engine->searchUrlTemplate().isEmpty()
- && !engine->imageUrl().isEmpty()
- )
- {
- break;
- }
- }
-
- return engine;
-}
diff --git a/src/opensearch/opensearchreader.h b/src/opensearch/opensearchreader.h
deleted file mode 100644
index d1c644ae..00000000
--- a/src/opensearch/opensearchreader.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/* ============================================================
-*
-* This file is a part of the rekonq project
-*
-* Copyright (C) 2009 by Jakub Wieczorek <faw217@gmail.com>
-* Copyright (C) 2010-2011 by Lionel Chauvin <megabigbug@yahoo.fr>
-* Copyright (C) 2010-2011 by Andrea Diamantini <adjam7 at gmail dot com>
-*
-*
-* This program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU General Public License as
-* published by the Free Software Foundation; either version 2 of
-* the License or (at your option) version 3 or any later version
-* accepted by the membership of KDE e.V. (or its successor approved
-* by the membership of KDE e.V.), which shall act as a proxy
-* defined in Section 14 of version 3 of the license.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program. If not, see <http://www.gnu.org/licenses/>.
-*
-* ============================================================ */
-
-
-#ifndef OPENSEARCHREADER_H
-#define OPENSEARCHREADER_H
-
-
-// Rekonq Includes
-#include "rekonq_defines.h"
-
-// Qt Includes
-#include <QXmlStreamReader>
-
-// Forward Declarations
-class OpenSearchEngine;
-
-
-class OpenSearchReader : public QXmlStreamReader
-{
-public:
- OpenSearchReader();
-
- OpenSearchEngine *read(const QByteArray &data);
- OpenSearchEngine *read(QIODevice *device);
-
-private:
- OpenSearchEngine *read();
-};
-
-#endif // OPENSEARCHREADER_H
diff --git a/src/opensearch/opensearchwriter.cpp b/src/opensearch/opensearchwriter.cpp
deleted file mode 100644
index 0b50ca6a..00000000
--- a/src/opensearch/opensearchwriter.cpp
+++ /dev/null
@@ -1,130 +0,0 @@
-/* ============================================================
-*
-* This file is a part of the rekonq project
-*
-* Copyright (C) 2009 by Jakub Wieczorek <faw217@gmail.com>
-* Copyright (C) 2010-2011 by Lionel Chauvin <megabigbug@yahoo.fr>
-* Copyright (C) 2010-2011 by Andrea Diamantini <adjam7 at gmail dot com>
-*
-*
-* This program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU General Public License as
-* published by the Free Software Foundation; either version 2 of
-* the License or (at your option) version 3 or any later version
-* accepted by the membership of KDE e.V. (or its successor approved
-* by the membership of KDE e.V.), which shall act as a proxy
-* defined in Section 14 of version 3 of the license.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program. If not, see <http://www.gnu.org/licenses/>.
-*
-* ============================================================ */
-
-
-// Self Includes
-#include "opensearchwriter.h"
-
-// Local Includes
-#include "opensearchengine.h"
-
-// Qt Includes
-#include <QtCore/QIODevice>
-
-
-OpenSearchWriter::OpenSearchWriter()
- : QXmlStreamWriter()
-{
- setAutoFormatting(true);
-}
-
-
-bool OpenSearchWriter::write(QIODevice *device, OpenSearchEngine *engine)
-{
- if (!engine)
- return false;
-
- if (!device->isOpen())
- device->open(QIODevice::WriteOnly);
-
- setDevice(device);
- write(engine);
- return true;
-}
-
-
-void OpenSearchWriter::write(OpenSearchEngine *engine)
-{
- writeStartDocument();
- writeStartElement(QL1S("OpenSearchDescription"));
- writeDefaultNamespace(QL1S("http://a9.com/-/spec/opensearch/1.1/"));
-
- if (!engine->name().isEmpty())
- {
- writeTextElement(QL1S("ShortName"), engine->name());
- }
-
- if (!engine->description().isEmpty())
- {
- writeTextElement(QL1S("Description"), engine->description());
- }
-
- if (!engine->searchUrlTemplate().isEmpty())
- {
- writeStartElement(QL1S("Url"));
- writeAttribute(QL1S("method"), QL1S("get"));
- writeAttribute(QL1S("template"), engine->searchUrlTemplate());
-
- if (!engine->searchParameters().empty())
- {
- writeNamespace(QL1S("http://a9.com/-/spec/opensearch/extensions/parameters/1.0/"), QL1S("p"));
-
- QList<OpenSearchEngine::Parameter>::const_iterator end = engine->searchParameters().constEnd();
- QList<OpenSearchEngine::Parameter>::const_iterator i = engine->searchParameters().constBegin();
- for (; i != end; ++i)
- {
- writeStartElement(QL1S("p:Parameter"));
- writeAttribute(QL1S("name"), i->first);
- writeAttribute(QL1S("value"), i->second);
- writeEndElement();
- }
- }
-
- writeEndElement();
- }
-
- if (!engine->suggestionsUrlTemplate().isEmpty())
- {
- writeStartElement(QL1S("Url"));
- writeAttribute(QL1S("method"), QL1S("get"));
- writeAttribute(QL1S("type"), engine->type());
- writeAttribute(QL1S("template"), engine->suggestionsUrlTemplate());
-
- if (!engine->suggestionsParameters().empty())
- {
- writeNamespace(QL1S("http://a9.com/-/spec/opensearch/extensions/parameters/1.0/"), QL1S("p"));
-
- QList<OpenSearchEngine::Parameter>::const_iterator end = engine->suggestionsParameters().constEnd();
- QList<OpenSearchEngine::Parameter>::const_iterator i = engine->suggestionsParameters().constBegin();
- for (; i != end; ++i)
- {
- writeStartElement(QL1S("p:Parameter"));
- writeAttribute(QL1S("name"), i->first);
- writeAttribute(QL1S("value"), i->second);
- writeEndElement();
- }
- }
-
- writeEndElement();
- }
-
- if (!engine->imageUrl().isEmpty())
- writeTextElement(QL1S("Image"), engine->imageUrl());
-
- writeEndElement();
- writeEndDocument();
-}
diff --git a/src/opensearch/opensearchwriter.h b/src/opensearch/opensearchwriter.h
deleted file mode 100644
index 525044b9..00000000
--- a/src/opensearch/opensearchwriter.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* ============================================================
-*
-* This file is a part of the rekonq project
-*
-* Copyright (C) 2009 by Jakub Wieczorek <faw217@gmail.com>
-* Copyright (C) 2010-2011 by Lionel Chauvin <megabigbug@yahoo.fr>
-* Copyright (C) 2010-2011 by Andrea Diamantini <adjam7 at gmail dot com>
-*
-*
-* This program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU General Public License as
-* published by the Free Software Foundation; either version 2 of
-* the License or (at your option) version 3 or any later version
-* accepted by the membership of KDE e.V. (or its successor approved
-* by the membership of KDE e.V.), which shall act as a proxy
-* defined in Section 14 of version 3 of the license.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program. If not, see <http://www.gnu.org/licenses/>.
-*
-* ============================================================ */
-
-
-#ifndef OPENSEARCHWRITER_H
-#define OPENSEARCHWRITER_H
-
-
-// Rekonq Includes
-#include "rekonq_defines.h"
-
-// Qt Includes
-#include <QtCore/QXmlStreamWriter>
-
-// Forward Declarations
-class QIODevice;
-class OpenSearchEngine;
-
-
-class OpenSearchWriter : public QXmlStreamWriter
-{
-public:
- OpenSearchWriter();
-
- bool write(QIODevice *device, OpenSearchEngine *engine);
-
-private:
- void write(OpenSearchEngine *engine);
-};
-
-#endif
-
diff --git a/src/opensearch/searchengine.cpp b/src/opensearch/searchengine.cpp
deleted file mode 100644
index 2614b603..00000000
--- a/src/opensearch/searchengine.cpp
+++ /dev/null
@@ -1,157 +0,0 @@
-/* ============================================================
-*
-* This file is a part of the rekonq project
-*
-* Copyright (C) 2008-2012 by Andrea Diamantini <adjam7 at gmail dot com>
-* Copyright (C) 2009-2011 by Lionel Chauvin <megabigbug@yahoo.fr>
-*
-*
-* This program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU General Public License as
-* published by the Free Software Foundation; either version 2 of
-* the License or (at your option) version 3 or any later version
-* accepted by the membership of KDE e.V. (or its successor approved
-* by the membership of KDE e.V.), which shall act as a proxy
-* defined in Section 14 of version 3 of the license.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program. If not, see <http://www.gnu.org/licenses/>.
-*
-* ============================================================ */
-
-
-//local includes
-#include "searchengine.h"
-#include "application.h"
-#include "iconmanager.h"
-
-// Auto Includes
-#include "rekonq.h"
-
-//KDE includes
-#include <KConfigGroup>
-#include <KServiceTypeTrader>
-
-
-struct SearchEnginePrivate
-{
- SearchEnginePrivate() : isLoaded(false) {}
- bool isLoaded;
- QString delimiter;
- KService::List favorites;
- KService::Ptr defaultEngine;
-};
-
-
-K_GLOBAL_STATIC(SearchEnginePrivate, d)
-
-
-void SearchEngine::reload()
-{
- KConfig config("kuriikwsfilterrc");
- KConfigGroup cg = config.group("General");
-
- // load delimiter
- d->delimiter = cg.readEntry("KeywordDelimiter", ":");
-
- // load favorite engines
- QStringList favoriteEngines;
-#if KDE_IS_VERSION(4,9,0)
- favoriteEngines = cg.readEntry("PreferredWebShortcuts", favoriteEngines);
-#else
- favoriteEngines = cg.readEntry("FavoriteSearchEngines", favoriteEngines);
-#endif
-
- KService::List favorites;
- KService::Ptr service;
- Q_FOREACH(const QString & engine, favoriteEngines)
- {
- service = KService::serviceByDesktopPath(QString("searchproviders/%1.desktop").arg(engine));
- if (service)
- {
- QUrl url = service->property("Query").toUrl();
- rApp->iconManager()->downloadIconFromUrl(url);
-
- favorites << service;
- }
- }
- d->favorites = favorites;
-
- // load default engine
- QString dse;
-#if KDE_IS_VERSION(4,9,0)
- dse = cg.readEntry("DefaultWebShortcut");
-#else
- dse = cg.readEntry("DefaultSearchEngine");
-#endif
- d->defaultEngine = KService::serviceByDesktopPath(QString("searchproviders/%1.desktop").arg(dse));
-
- d->isLoaded = true;
-}
-
-
-QString SearchEngine::delimiter()
-{
- if (!d->isLoaded)
- reload();
-
- return d->delimiter;
-}
-
-
-KService::List SearchEngine::favorites()
-{
- if (!d->isLoaded)
- reload();
-
- return d->favorites;
-}
-
-
-KService::Ptr SearchEngine::defaultEngine()
-{
- if (!d->isLoaded)
- reload();
-
- return d->defaultEngine;
-}
-
-
-KService::Ptr SearchEngine::fromString(const QString &text)
-{
- KService::List providers = KServiceTypeTrader::self()->query("SearchProvider");
- int i = 0;
- bool found = false;
- KService::Ptr service;
- while (!found && i < providers.size())
- {
- QStringList list = providers.at(i)->property("Keys").toStringList();
- Q_FOREACH(const QString & key, list)
- {
- const QString searchPrefix = key + delimiter();
- if (text.startsWith(searchPrefix))
- {
- service = providers.at(i);
- found = true;
- }
- }
- i++;
- }
-
- return service;
-}
-
-
-QString SearchEngine::buildQuery(KService::Ptr engine, const QString &text)
-{
- if (!engine)
- return QString();
- QString query = engine->property("Query").toString();
- query = query.replace("\\{@}", KUrl::toPercentEncoding(text));
- return query;
-}
diff --git a/src/opensearch/searchengine.h b/src/opensearch/searchengine.h
deleted file mode 100644
index 21678e9d..00000000
--- a/src/opensearch/searchengine.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* ============================================================
-*
-* This file is a part of the rekonq project
-*
-* Copyright (C) 2008-2012 by Andrea Diamantini <adjam7 at gmail dot com>
-* Copyright (C) 2009-2011 by Lionel Chauvin <megabigbug@yahoo.fr>
-*
-*
-* This program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU General Public License as
-* published by the Free Software Foundation; either version 2 of
-* the License or (at your option) version 3 or any later version
-* accepted by the membership of KDE e.V. (or its successor approved
-* by the membership of KDE e.V.), which shall act as a proxy
-* defined in Section 14 of version 3 of the license.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program. If not, see <http://www.gnu.org/licenses/>.
-*
-* ============================================================ */
-
-
-#ifndef SEARCHENGINE_H
-#define SEARCHENGINE_H
-
-
-// Rekonq Includes
-#include "rekonq_defines.h"
-
-// KDE Includes
-#include <KService>
-
-//Qt Includes
-#include <QString>
-
-
-namespace SearchEngine
-{
-void reload();
-
-QString delimiter();
-
-KService::Ptr defaultEngine();
-
-KService::List favorites();
-
-KService::Ptr fromString(const QString &text);
-
-QString buildQuery(KService::Ptr engine, const QString &text);
-
-QString extractQuery(const QString &text);
-}
-
-#endif
diff --git a/src/opensearch/suggestionparser.cpp b/src/opensearch/suggestionparser.cpp
deleted file mode 100644
index 3c5350bf..00000000
--- a/src/opensearch/suggestionparser.cpp
+++ /dev/null
@@ -1,147 +0,0 @@
-/* ============================================================
- *
- * This file is a part of the rekonq project
- *
- * Copyright (C) 2010-2011 by Lionel Chauvin <megabigbug@yahoo.fr>
- * Copyright (C) 2010-2011 by Andrea Diamantini <adjam7 at gmail dot com>
- *
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License or (at your option) version 3 or any later version
- * accepted by the membership of KDE e.V. (or its successor approved
- * by the membership of KDE e.V.), which shall act as a proxy
- * defined in Section 14 of version 3 of the license.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * ============================================================ */
-
-
-// Self Includes
-#include "suggestionparser.h"
-
-// Qt Includes
-#include<QByteArray>
-#include<QStringList>
-
-
-ResponseList SuggestionParser::parse(const QByteArray &)
-{
- return ResponseList();
-}
-
-
-SuggestionParser::~SuggestionParser()
-{
-}
-
-
-ResponseList XMLParser::parse(const QByteArray &resp)
-{
- ResponseList rlist;
-
- m_reader.clear();
- m_reader.addData(resp);
-
- while (!m_reader.atEnd() && !m_reader.hasError())
- {
- m_reader.readNext();
-
- if (m_reader.isStartDocument())
- continue;
-
- if (m_reader.isStartElement() && m_reader.name() == QL1S("Item"))
- {
- QString title;
- QString description;
- QString url;
- QString image;
- int image_width = 0;
- int image_height = 0;
-
- m_reader.readNext();
-
- while (!(m_reader.isEndElement() && m_reader.name() == QL1S("Item")))
- {
- if (m_reader.isStartElement())
- {
-
- if (m_reader.name() == QL1S("Text"))
- title = m_reader.readElementText();
- if (m_reader.name() == QL1S("Url"))
- url = m_reader.readElementText();
-
- if (m_reader.name() == QL1S("Image"))
- {
- image = m_reader.attributes().value("source").toString();
- image_width = m_reader.attributes().value("width").toString().toInt();
- image_height = m_reader.attributes().value("height").toString().toInt();
- }
-
- if (m_reader.name() == QL1S("Description"))
- description = m_reader.readElementText();
- }
-
- m_reader.readNext();
- }
- rlist << Response(title, description, url, image, image_width, image_height);
- }
- }
-
- return rlist;
-}
-
-
-ResponseList JSONParser::parse(const QByteArray &resp)
-{
- QString response = QString::fromLocal8Bit(resp);
- response = response.trimmed();
-
- if (response.isEmpty())
- {
- // RESPONSE IS EMPTY
- return ResponseList();
- }
-
- if (!response.startsWith(QL1C('['))
- || !response.endsWith(QL1C(']'))
- )
- {
- // RESPONSE is NOT well FORMED
- return ResponseList();
- }
-
- // Evaluate the JSON response using QtScript.
- if (!m_reader.canEvaluate(response))
- {
- // m_reader cannot evaluate the response
- return ResponseList();
- }
-
- QScriptValue responseParts = m_reader.evaluate(response);
-
- if (!responseParts.property(1).isArray())
- {
- // RESPONSE is not an array
- return ResponseList();
- }
-
- ResponseList rlist;
- QStringList responsePartsList;
- qScriptValueToSequence(responseParts.property(1), responsePartsList);
-
- Q_FOREACH(const QString & s, responsePartsList)
- {
- rlist << Response(s);
- }
-
- return rlist;
-}
diff --git a/src/opensearch/suggestionparser.h b/src/opensearch/suggestionparser.h
deleted file mode 100644
index 01ec7c98..00000000
--- a/src/opensearch/suggestionparser.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/* ============================================================
- *
- * This file is a part of the rekonq project
- *
- * Copyright (C) 2010-2011 by Lionel Chauvin <megabigbug@yahoo.fr>
- * Copyright (C) 2010-2011 by Andrea Diamantini <adjam7 at gmail dot com>
- *
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License or (at your option) version 3 or any later version
- * accepted by the membership of KDE e.V. (or its successor approved
- * by the membership of KDE e.V.), which shall act as a proxy
- * defined in Section 14 of version 3 of the license.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * ============================================================ */
-
-
-#ifndef SUGGESTIONPARSER_H
-#define SUGGESTIONPARSER_H
-
-
-// Rekonq Includes
-#include "rekonq_defines.h"
-
-// Qt Includes
-#include <QtCore/QList>
-#include <QtCore/QXmlStreamReader>
-
-#include <QtScript/QScriptEngine>
-
-
-class Response
-{
-public:
- QString title;
- QString description;
- QString url;
- QString image;
- int image_width;
- int image_height;
-
- Response(const Response &item) : title(item.title),
- description(item.description),
- url(item.url),
- image(item.image),
- image_width(item.image_width),
- image_height(item.image_height)
-
- {};
-
- explicit Response(const QString &_title = QString(),
- const QString &_description = QString(),
- const QString &_url = QString(),
- const QString &_image = QString(),
- const int &_image_width = 0,
- const int &_image_height = 0) : title(_title),
- description(_description),
- url(_url),
- image(_image),
- image_width(_image_width),
- image_height(_image_height)
- {};
-};
-
-
-// -----------------------------------------------------------------
-
-
-typedef QList <Response> ResponseList;
-
-
-class SuggestionParser
-{
-public:
- virtual ~SuggestionParser();
- virtual ResponseList parse(const QByteArray &resp);
- virtual QString type() = 0;
-};
-
-
-class XMLParser : public SuggestionParser
-{
-protected:
- QXmlStreamReader m_reader;
-
-public:
- ResponseList parse(const QByteArray &resp);
- inline QString type()
- {
- return QL1S("application/x-suggestions+xml");
- }
-};
-
-
-class JSONParser : public SuggestionParser
-{
-private:
- QScriptEngine m_reader;
-
-public:
- ResponseList parse(const QByteArray &resp);
- inline QString type()
- {
- return QL1S("application/x-suggestions+json");
- }
-};
-
-#endif //SUGGESTIONPARSER_H