summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJarek Kobus <jaroslaw.kobus@qt.io>2020-08-31 10:33:58 +0200
committerJarek Kobus <jaroslaw.kobus@qt.io>2020-09-11 15:35:06 +0200
commitdbe178044b591490cb98c071da8b91342129e030 (patch)
tree26acb80b35eb473ed8f2047b020c3a90729fe6b5
parent14024df36e7a26b79aa2b0edf82c9b29d9eb0185 (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.cpp92
-rw-r--r--src/assistant/help/qhelpcollectionhandler_p.h10
-rw-r--r--src/assistant/help/qhelpenginecore.cpp14
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));
}
/*!