summaryrefslogtreecommitdiff
path: root/src/opensearch/opensearchmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/opensearch/opensearchmanager.cpp')
-rw-r--r--src/opensearch/opensearchmanager.cpp100
1 files changed, 49 insertions, 51 deletions
diff --git a/src/opensearch/opensearchmanager.cpp b/src/opensearch/opensearchmanager.cpp
index 120957fa..480e9a26 100644
--- a/src/opensearch/opensearchmanager.cpp
+++ b/src/opensearch/opensearchmanager.cpp
@@ -115,8 +115,9 @@ bool OpenSearchManager::isSuggestionAvailable()
void OpenSearchManager::addOpenSearchEngine(const KUrl &url, const QString &title, const QString &shortcut)
{
+ Q_UNUSED(title);
+
m_shortcut = shortcut;
- m_title = trimmedEngineName(title);
if (m_state != IDLE)
{
@@ -169,49 +170,67 @@ void OpenSearchManager::dataReceived(KIO::Job *job, const QByteArray &data)
void OpenSearchManager::jobFinished(KJob *job)
{
- if (!job->error() && m_state == REQ_DESCRIPTION)
+ // 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;
+ }
+
+ if (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);
+ m_engineCache.insert(engine->name(), engine);
+ m_engines.insert(m_jobUrl, trimmedEngineName(engine->name()));
saveEngines();
QString path;
- if (engine->providesSuggestions())
+ if (engine->providesSuggestions()) //save opensearch description only if it provides suggestions
{
- // 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());
}
+
+ QString searchUrl = OpenSearchEngine::parseTemplate("\\{@}", engine->searchUrlTemplate());
+ m_currentJob = NULL;
+
+ path = KGlobal::mainComponent().dirs()->saveLocation("services", "searchproviders/");
+ KConfig _service(path + trimmedEngineName(engine->name()) + ".desktop", KConfig::SimpleConfig);
+ KConfigGroup service(&_service, "Desktop Entry");
+ service.writeEntry("Type", "Service");
+ service.writeEntry("ServiceTypes", "SearchProvider");
+ service.writeEntry("Name", engine->name());
+ 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(), searchUrl, m_shortcut);
}
else
{
@@ -219,27 +238,6 @@ void OpenSearchManager::jobFinished(KJob *job)
}
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;
}
}