diff --git a/src/libs/registry/docset.cpp b/src/libs/registry/docset.cpp index 123b9f8d..7323f1c8 100644 --- a/src/libs/registry/docset.cpp +++ b/src/libs/registry/docset.cpp @@ -288,9 +288,8 @@ QList Docset::search(const QString &query, const CancellationToken while (m_db->next() && !token.isCanceled()) { results.append({m_db->value(0).toString(), parseSymbolType(m_db->value(1).toString()), - const_cast(this), - createPageUrl(m_db->value(2).toString(), m_db->value(3).toString()), - m_db->value(4).toInt()}); + m_db->value(2).toString(), m_db->value(3).toString(), + const_cast(this), m_db->value(4).toInt()}); } return results; @@ -328,9 +327,8 @@ QList Docset::relatedLinks(const QUrl &url) const while (m_db->next()) { results.append({m_db->value(0).toString(), parseSymbolType(m_db->value(1).toString()), - const_cast(this), - createPageUrl(m_db->value(2).toString(), m_db->value(3).toString()), - 0}); + m_db->value(2).toString(), m_db->value(3).toString(), + const_cast(this), 0}); } if (results.size() == 1) @@ -339,6 +337,11 @@ QList Docset::relatedLinks(const QUrl &url) const return results; } +QUrl Docset::searchResultUrl(const SearchResult &result) const +{ + return createPageUrl(result.urlPath, result.urlFragment); +} + void Docset::loadMetadata() { const QDir dir(m_path); diff --git a/src/libs/registry/docset.h b/src/libs/registry/docset.h index b4eda1f7..54930125 100644 --- a/src/libs/registry/docset.h +++ b/src/libs/registry/docset.h @@ -69,6 +69,9 @@ public: QList search(const QString &query, const CancellationToken &token) const; QList relatedLinks(const QUrl &url) const; + // FIXME: This a temporary solution to create URL on demand. + QUrl searchResultUrl(const SearchResult &result) const; + // FIXME: This is an ugly workaround before we have a proper docset sources implementation bool hasUpdate = false; @@ -84,6 +87,7 @@ private: void loadSymbols(const QString &symbolType) const; void loadSymbols(const QString &symbolType, const QString &symbolString) const; void createIndex(); + void createView(); QUrl createPageUrl(const QString &path, const QString &fragment = QString()) const; static QString parseSymbolType(const QString &str); diff --git a/src/libs/registry/searchmodel.cpp b/src/libs/registry/searchmodel.cpp index 84c74bd5..3f70b32c 100644 --- a/src/libs/registry/searchmodel.cpp +++ b/src/libs/registry/searchmodel.cpp @@ -62,7 +62,7 @@ QVariant SearchModel::data(const QModelIndex &index, int role) const return item->docset->icon(); case ItemDataRole::UrlRole: - return item->url; + return item->docset->searchResultUrl(*item); default: return QVariant(); diff --git a/src/libs/registry/searchresult.h b/src/libs/registry/searchresult.h index 815cfce1..f6e9a2fc 100644 --- a/src/libs/registry/searchresult.h +++ b/src/libs/registry/searchresult.h @@ -37,9 +37,10 @@ struct SearchResult QString name; QString type; - Docset *docset; + QString urlPath; + QString urlFragment; - QUrl url; + Docset *docset; int score;