summaryrefslogtreecommitdiff
path: root/src/search/opensearchengine.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/search/opensearchengine.cpp')
-rw-r--r--src/search/opensearchengine.cpp133
1 files changed, 89 insertions, 44 deletions
diff --git a/src/search/opensearchengine.cpp b/src/search/opensearchengine.cpp
index a7bcf11e..ab12d2ad 100644
--- a/src/search/opensearchengine.cpp
+++ b/src/search/opensearchengine.cpp
@@ -1,182 +1,219 @@
-/*
- * Copyright 2009 Jakub Wieczorek <faw217@gmail.com>
- * Copyright 2009 Christian Franke <cfchris6@ts2server.com>
- * Copyright 2009 Fredy Yanardi <fyanardi@gmail.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) any later version.
- *
- * 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, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301 USA
- */
-
+/* ============================================================
+*
+* 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 by Lionel Chauvin <megabigbug@yahoo.fr>
+* Copyright (C) 2010 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"
+// Qt Includes
#include <QtCore/QRegExp>
#include <QtCore/QStringList>
#include <QtScript/QScriptEngine>
#include <QtScript/QScriptValue>
+
OpenSearchEngine::OpenSearchEngine(QObject *)
: m_scriptEngine(0)
{
}
+
OpenSearchEngine::~OpenSearchEngine()
{
- if (m_scriptEngine) {
+ if (m_scriptEngine)
+ {
delete m_scriptEngine;
}
}
+
QString OpenSearchEngine::parseTemplate(const QString &searchTerm, const QString &searchTemplate)
{
QString result = searchTemplate;
- result.replace(QLatin1String("{count}"), QLatin1String("20"));
- result.replace(QLatin1String("{startIndex}"), QLatin1String("0"));
- result.replace(QLatin1String("{startPage}"), QLatin1String("0"));
+ result.replace(QL1S("{count}"), QL1S("20"));
+ result.replace(QL1S("{startIndex}"), QL1S("0"));
+ result.replace(QL1S("{startPage}"), QL1S("0"));
// TODO - get setting from KDE
- result.replace(QLatin1String("{language}"), QLatin1String("en-US"));
- result.replace(QLatin1String("{inputEncoding}"), QLatin1String("UTF-8"));
- result.replace(QLatin1String("{outputEncoding}"), QLatin1String("UTF-8"));
- result.replace(QLatin1String("{searchTerms}"), searchTerm);
+ result.replace(QL1S("{language}"), QL1S("en-US"));
+ 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()) {
+ if (m_searchUrlTemplate.isEmpty())
+ {
return KUrl();
}
KUrl retVal = KUrl::fromEncoded(parseTemplate(searchTerm, m_searchUrlTemplate).toUtf8());
- QList<Parameter>::const_iterator end = m_searchParameters.constEnd();
- QList<Parameter>::const_iterator i = m_searchParameters.constBegin();
- for (; i != end; ++i) {
+ 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()) {
+ if (m_suggestionsUrlTemplate.isEmpty())
+ {
return KUrl();
}
KUrl retVal = KUrl::fromEncoded(parseTemplate(searchTerm, m_suggestionsUrlTemplate).toUtf8());
- QList<Parameter>::const_iterator end = m_suggestionsParameters.constEnd();
- QList<Parameter>::const_iterator i = m_suggestionsParameters.constBegin();
- for (; i != end; ++i) {
+ 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;
}
+
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
@@ -188,36 +225,45 @@ bool OpenSearchEngine::operator==(const OpenSearchEngine &other) const
&& m_suggestionsParameters == other.m_suggestionsParameters);
}
+
bool OpenSearchEngine::operator<(const OpenSearchEngine &other) const
{
return (m_name < other.m_name);
}
+
QStringList OpenSearchEngine::parseSuggestion(const QByteArray &resp)
{
QString response(resp);
response = response.trimmed();
- if (response.isEmpty()) {
+ if (response.isEmpty())
+ {
return QStringList();
}
- if (!response.startsWith(QLatin1Char('[')) || !response.endsWith(QLatin1Char(']'))) {
+ if ( !response.startsWith(QL1C('['))
+ || !response.endsWith(QL1C(']'))
+ )
+ {
return QStringList();
}
- if (!m_scriptEngine) {
+ if (!m_scriptEngine)
+ {
m_scriptEngine = new QScriptEngine();
}
// Evaluate the JSON response using QtScript.
- if (!m_scriptEngine->canEvaluate(response)) {
+ if (!m_scriptEngine->canEvaluate(response))
+ {
return QStringList();
}
QScriptValue responseParts = m_scriptEngine->evaluate(response);
- if (!responseParts.property(1).isArray()) {
+ if (!responseParts.property(1).isArray())
+ {
return QStringList();
}
@@ -226,4 +272,3 @@ QStringList OpenSearchEngine::parseSuggestion(const QByteArray &resp)
return suggestionsList;
}
-