mirror of
https://github.com/zealdocs/zeal.git
synced 2026-08-29 08:34:50 +08:00
registry: Create page URL on demand
This gives a significant performance boost for large docsets.
This commit is contained in:
@@ -288,9 +288,8 @@ QList<SearchResult> 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<Docset *>(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<Docset *>(this), m_db->value(4).toInt()});
|
||||
}
|
||||
|
||||
return results;
|
||||
@@ -328,9 +327,8 @@ QList<SearchResult> 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<Docset *>(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<Docset *>(this), 0});
|
||||
}
|
||||
|
||||
if (results.size() == 1)
|
||||
@@ -339,6 +337,11 @@ QList<SearchResult> 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);
|
||||
|
||||
@@ -69,6 +69,9 @@ public:
|
||||
QList<SearchResult> search(const QString &query, const CancellationToken &token) const;
|
||||
QList<SearchResult> 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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -37,9 +37,10 @@ struct SearchResult
|
||||
QString name;
|
||||
QString type;
|
||||
|
||||
Docset *docset;
|
||||
QString urlPath;
|
||||
QString urlFragment;
|
||||
|
||||
QUrl url;
|
||||
Docset *docset;
|
||||
|
||||
int score;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user