diff options
author | Jarek Kobus <jaroslaw.kobus@qt.io> | 2020-08-31 10:33:58 +0200 |
---|---|---|
committer | Jarek Kobus <jaroslaw.kobus@qt.io> | 2020-09-11 15:35:06 +0200 |
commit | dbe178044b591490cb98c071da8b91342129e030 (patch) | |
tree | 26acb80b35eb473ed8f2047b020c3a90729fe6b5 | |
parent | 14024df36e7a26b79aa2b0edf82c9b29d9eb0185 (diff) |
QtHelp: Fix documentsFor() when not using filter engine
Fixes: QTBUG-84727
Pick-to: 5.15
Change-Id: Id66cc071a24cc761dc63d044b7f74d0e1959cd22
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
-rw-r--r-- | src/assistant/help/qhelpcollectionhandler.cpp | 92 | ||||
-rw-r--r-- | src/assistant/help/qhelpcollectionhandler_p.h | 10 | ||||
-rw-r--r-- | src/assistant/help/qhelpenginecore.cpp | 14 |
3 files changed, 83 insertions, 33 deletions
diff --git a/src/assistant/help/qhelpcollectionhandler.cpp b/src/assistant/help/qhelpcollectionhandler.cpp index b59975808..57ab8e329 100644 --- a/src/assistant/help/qhelpcollectionhandler.cpp +++ b/src/assistant/help/qhelpcollectionhandler.cpp @@ -2301,28 +2301,56 @@ static QUrl buildQUrl(const QString &ns, const QString &folder, return url; } -QMultiMap<QString, QUrl> -QHelpCollectionHandler::linksForIdentifier(const QString &id, - const QStringList &filterAttributes) const +QMultiMap<QString, QUrl> QHelpCollectionHandler::linksForIdentifier( + const QString &id, + const QStringList &filterAttributes) const { return linksForField(QLatin1String("Identifier"), id, filterAttributes); } -QMultiMap<QString, QUrl> -QHelpCollectionHandler::linksForKeyword(const QString &keyword, - const QStringList &filterAttributes) const +QMultiMap<QString, QUrl> QHelpCollectionHandler::linksForKeyword( + const QString &keyword, + const QStringList &filterAttributes) const { return linksForField(QLatin1String("Name"), keyword, filterAttributes); } -QMultiMap<QString, QUrl> -QHelpCollectionHandler::linksForField(const QString &fieldName, const QString &fieldValue, - const QStringList &filterAttributes) const +QList<QHelpLink> QHelpCollectionHandler::documentsForIdentifier( + const QString &id, + const QStringList &filterAttributes) const +{ + return documentsForField(QLatin1String("Identifier"), id, filterAttributes); +} + +QList<QHelpLink> QHelpCollectionHandler::documentsForKeyword( + const QString &keyword, + const QStringList &filterAttributes) const +{ + return documentsForField(QLatin1String("Name"), keyword, filterAttributes); +} + +QMultiMap<QString, QUrl> QHelpCollectionHandler::linksForField( + const QString &fieldName, + const QString &fieldValue, + const QStringList &filterAttributes) const { QMultiMap<QString, QUrl> linkMap; + const auto documents = documentsForField(fieldName, fieldValue, filterAttributes); + for (const auto &document : documents) + linkMap.insert(document.title, document.url); + + return linkMap; +} + +QList<QHelpLink> QHelpCollectionHandler::documentsForField( + const QString &fieldName, + const QString &fieldValue, + const QStringList &filterAttributes) const +{ + QList<QHelpLink> docList; if (!isDBOpened()) - return linkMap; + return docList; const QString filterlessQuery = QString::fromLatin1( "SELECT " @@ -2359,40 +2387,47 @@ QHelpCollectionHandler::linksForField(const QString &fieldName, const QString &f if (title.isEmpty()) // generate a title + corresponding path title = fieldValue + QLatin1String(" : ") + m_query->value(3).toString(); - linkMap.insert(title, - buildQUrl(m_query->value(1).toString(), m_query->value(2).toString(), - m_query->value(3).toString(), m_query->value(4).toString())); + const QUrl url = buildQUrl(m_query->value(1).toString(), + m_query->value(2).toString(), + m_query->value(3).toString(), + m_query->value(4).toString()); + docList.append(QHelpLink {url, title}); } - return linkMap; + return docList; } -QMultiMap<QString, QUrl> QHelpCollectionHandler::linksForIdentifier(const QString &id, - const QString &filterName) const +QMultiMap<QString, QUrl> QHelpCollectionHandler::linksForIdentifier( + const QString &id, + const QString &filterName) const { return linksForField(QLatin1String("Identifier"), id, filterName); } -QMultiMap<QString, QUrl> QHelpCollectionHandler::linksForKeyword(const QString &keyword, - const QString &filterName) const +QMultiMap<QString, QUrl> QHelpCollectionHandler::linksForKeyword( + const QString &keyword, + const QString &filterName) const { return linksForField(QLatin1String("Name"), keyword, filterName); } -QList<QHelpLink> QHelpCollectionHandler::documentsForIdentifier(const QString &id, - const QString &filterName) const +QList<QHelpLink> QHelpCollectionHandler::documentsForIdentifier( + const QString &id, + const QString &filterName) const { return documentsForField(QLatin1String("Identifier"), id, filterName); } -QList<QHelpLink> QHelpCollectionHandler::documentsForKeyword(const QString &keyword, - const QString &filterName) const +QList<QHelpLink> QHelpCollectionHandler::documentsForKeyword( + const QString &keyword, + const QString &filterName) const { return documentsForField(QLatin1String("Name"), keyword, filterName); } -QMultiMap<QString, QUrl> QHelpCollectionHandler::linksForField(const QString &fieldName, - const QString &fieldValue, - const QString &filterName) const +QMultiMap<QString, QUrl> QHelpCollectionHandler::linksForField( + const QString &fieldName, + const QString &fieldValue, + const QString &filterName) const { QMultiMap<QString, QUrl> linkMap; const auto documents = documentsForField(fieldName, fieldValue, filterName); @@ -2402,9 +2437,10 @@ QMultiMap<QString, QUrl> QHelpCollectionHandler::linksForField(const QString &fi return linkMap; } -QList<QHelpLink> QHelpCollectionHandler::documentsForField(const QString &fieldName, - const QString &fieldValue, - const QString &filterName) const +QList<QHelpLink> QHelpCollectionHandler::documentsForField( + const QString &fieldName, + const QString &fieldValue, + const QString &filterName) const { QList<QHelpLink> docList; diff --git a/src/assistant/help/qhelpcollectionhandler_p.h b/src/assistant/help/qhelpcollectionhandler_p.h index d00699366..9a8cb1e9c 100644 --- a/src/assistant/help/qhelpcollectionhandler_p.h +++ b/src/assistant/help/qhelpcollectionhandler_p.h @@ -207,6 +207,10 @@ public: const QString &filterName) const; QList<QHelpLink> documentsForKeyword(const QString &keyword, const QString &filterName) const; + QList<QHelpLink> documentsForIdentifier(const QString &id, + const QStringList &filterAttributes) const; + QList<QHelpLink> documentsForKeyword(const QString &keyword, + const QStringList &filterAttributes) const; QStringList namespacesForFilter(const QString &filterName) const; @@ -217,8 +221,12 @@ signals: private: // legacy stuff - QMultiMap<QString, QUrl> linksForField(const QString &fieldName, const QString &fieldValue, + QMultiMap<QString, QUrl> linksForField(const QString &fieldName, + const QString &fieldValue, const QStringList &filterAttributes) const; + QList<QHelpLink> documentsForField(const QString &fieldName, + const QString &fieldValue, + const QStringList &filterAttributes) const; QString namespaceVersion(const QString &namespaceName) const; QMultiMap<QString, QUrl> linksForField(const QString &fieldName, const QString &fieldValue, diff --git a/src/assistant/help/qhelpenginecore.cpp b/src/assistant/help/qhelpenginecore.cpp index 81e224b37..56137d124 100644 --- a/src/assistant/help/qhelpenginecore.cpp +++ b/src/assistant/help/qhelpenginecore.cpp @@ -635,10 +635,13 @@ QList<QHelpLink> QHelpEngineCore::documentsForIdentifier(const QString &id) cons */ QList<QHelpLink> QHelpEngineCore::documentsForIdentifier(const QString &id, const QString &filterName) const { - if (!d->setup() || !d->usesFilterEngine) + if (!d->setup()) return QList<QHelpLink>(); - return d->collectionHandler->documentsForIdentifier(id, filterName); + if (d->usesFilterEngine) + return d->collectionHandler->documentsForIdentifier(id, filterName); + + return d->collectionHandler->documentsForIdentifier(id, filterAttributes(filterName)); } /*! @@ -665,10 +668,13 @@ QList<QHelpLink> QHelpEngineCore::documentsForKeyword(const QString &keyword) co */ QList<QHelpLink> QHelpEngineCore::documentsForKeyword(const QString &keyword, const QString &filterName) const { - if (!d->setup() || !d->usesFilterEngine) + if (!d->setup()) return QList<QHelpLink>(); - return d->collectionHandler->documentsForKeyword(keyword, filterName); + if (d->usesFilterEngine) + return d->collectionHandler->documentsForKeyword(keyword, filterName); + + return d->collectionHandler->documentsForKeyword(keyword, filterAttributes(filterName)); } /*! |