diff options
Diffstat (limited to 'src/opensearch')
| -rw-r--r-- | src/opensearch/opensearchmanager.cpp | 100 | ||||
| -rw-r--r-- | src/opensearch/opensearchmanager.h | 4 | ||||
| -rw-r--r-- | src/opensearch/opensearchreader.cpp | 1 | 
3 files changed, 55 insertions, 50 deletions
| diff --git a/src/opensearch/opensearchmanager.cpp b/src/opensearch/opensearchmanager.cpp index 12b93ec2..fa225264 100644 --- a/src/opensearch/opensearchmanager.cpp +++ b/src/opensearch/opensearchmanager.cpp @@ -115,9 +115,8 @@ 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)      { @@ -170,67 +169,49 @@ void OpenSearchManager::dataReceived(KIO::Job *job, const QByteArray &data)  void OpenSearchManager::jobFinished(KJob *job)  { -    // 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) +    if (!job->error() && m_state == REQ_DESCRIPTION)      {          OpenSearchReader reader;          OpenSearchEngine *engine = reader.read(m_jobData);          if (engine)          { -            m_engineCache.insert(engine->name(), engine); -            m_engines.insert(m_jobUrl, trimmedEngineName(engine->name())); +            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 +            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); -            } -            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); +                // 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          { @@ -238,6 +219,27 @@ 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;      }  } diff --git a/src/opensearch/opensearchmanager.h b/src/opensearch/opensearchmanager.h index 84272f26..49e905c8 100644 --- a/src/opensearch/opensearchmanager.h +++ b/src/opensearch/opensearchmanager.h @@ -97,7 +97,7 @@ private Q_SLOTS:  Q_SIGNALS:      void suggestionsReceived(const QString &text, const ResponseList &suggestion); -    void openSearchEngineAdded(const QString &name, const QString &searchUrl, const QString &fileName); +    void openSearchEngineAdded(const QString &name);  private:      QString trimmedEngineName(const QString &engineName) const; @@ -117,7 +117,9 @@ private:      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 index c2bf0f09..0a93d104 100644 --- a/src/opensearch/opensearchreader.cpp +++ b/src/opensearch/opensearchreader.cpp @@ -83,6 +83,7 @@ OpenSearchEngine *OpenSearchReader::read()              || 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;      } | 
