summaryrefslogtreecommitdiff
path: root/src/assistant/help/qhelpcollectionhandler.cpp
diff options
context:
space:
mode:
authorJarek Kobus <jaroslaw.kobus@qt.io>2018-06-20 11:04:39 +0200
committerJarek Kobus <jaroslaw.kobus@qt.io>2018-07-09 12:15:30 +0000
commitcffe60fdb87d39494c92500aa6f99204d20fb90a (patch)
tree2ded8c7b3351588b82abf85dd46b2fd598322258 /src/assistant/help/qhelpcollectionhandler.cpp
parentb3a591884528bc2793172ad9950be60844b1ecc2 (diff)
downloadqttools-cffe60fdb87d39494c92500aa6f99204d20fb90a.tar.gz
Order contents items alphabetically by title
If many different doc versions are installed order them by version number in the reverse order (the bigger version in front) Task-number: QTBUG-21357 Task-number: QTBUG-59364 Task-number: QTCREATORBUG-10004 Task-number: QTCREATORBUG-17949 Change-Id: I8429c3d63fedf9811ea41ca13f754b677ff55a1e Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Diffstat (limited to 'src/assistant/help/qhelpcollectionhandler.cpp')
-rw-r--r--src/assistant/help/qhelpcollectionhandler.cpp52
1 files changed, 45 insertions, 7 deletions
diff --git a/src/assistant/help/qhelpcollectionhandler.cpp b/src/assistant/help/qhelpcollectionhandler.cpp
index 677b2b4fc..b1a09d126 100644
--- a/src/assistant/help/qhelpcollectionhandler.cpp
+++ b/src/assistant/help/qhelpcollectionhandler.cpp
@@ -41,12 +41,14 @@
#include "qhelp_global.h"
#include "qhelpdbreader_p.h"
+#include <QtCore/QDataStream>
#include <QtCore/QDateTime>
#include <QtCore/QDir>
#include <QtCore/QFile>
#include <QtCore/QFileInfo>
#include <QtCore/QTimer>
#include <QtCore/QVector>
+#include <QtCore/QVersionNumber>
#include <QtSql/QSqlError>
#include <QtSql/QSqlDriver>
@@ -1028,6 +1030,23 @@ QStringList QHelpCollectionHandler::indicesForFilter(const QStringList &filterAt
return indices;
}
+static QString getTitle(const QByteArray &contents)
+{
+ if (!contents.size())
+ return QString();
+
+ int depth = 0;
+ QString link;
+ QString title;
+
+ QDataStream s(contents);
+ s >> depth;
+ s >> link;
+ s >> title;
+
+ return title;
+}
+
QList<QHelpCollectionHandler::ContentsData> QHelpCollectionHandler::contentsForFilter(
const QStringList &filterAttributes) const
{
@@ -1038,14 +1057,17 @@ QList<QHelpCollectionHandler::ContentsData> QHelpCollectionHandler::contentsForF
"SELECT DISTINCT "
"NamespaceTable.Name, "
"FolderTable.Name, "
- "ContentsTable.Data "
+ "ContentsTable.Data, "
+ "VersionTable.Version "
"FROM "
"FolderTable, "
"NamespaceTable, "
- "ContentsTable "
+ "ContentsTable, "
+ "VersionTable "
"WHERE ContentsTable.NamespaceId = NamespaceTable.Id "
"AND NamespaceTable.Id = FolderTable.NamespaceId "
- "AND ContentsTable.NamespaceId = NamespaceTable.Id");
+ "AND ContentsTable.NamespaceId = NamespaceTable.Id "
+ "AND VersionTable.NamespaceId = NamespaceTable.Id");
const QString filterQuery = filterlessQuery
+ prepareFilterQuery(filterAttributes.count(),
@@ -1059,18 +1081,34 @@ QList<QHelpCollectionHandler::ContentsData> QHelpCollectionHandler::contentsForF
m_query->exec();
- QMap<QString, ContentsData> contentsMap;
+ QMap<QString, QMap<QVersionNumber, ContentsData>> contentsMap;
while (m_query->next()) {
const QString namespaceName = m_query->value(0).toString();
+ const QByteArray contents = m_query->value(2).toByteArray();
+ const QString versionString = m_query->value(3).toString();
+
+ const QString title = getTitle(contents);
+ const QVersionNumber version = QVersionNumber::fromString(versionString);
// get existing or insert a new one otherwise
- ContentsData &contentsData = contentsMap[namespaceName];
+ ContentsData &contentsData = contentsMap[title][version];
contentsData.namespaceName = namespaceName;
contentsData.folderName = m_query->value(1).toString();
- contentsData.contentsList.append(m_query->value(2).toByteArray());
+ contentsData.contentsList.append(contents);
+ }
+
+ QList<QHelpCollectionHandler::ContentsData> result;
+ for (const auto &versionContents : qAsConst(contentsMap)) {
+ // insert items in the reverse order of version number
+ const auto itBegin = versionContents.constBegin();
+ auto it = versionContents.constEnd();
+ while (it != itBegin) {
+ --it;
+ result.append(it.value());
+ }
}
- return contentsMap.values();
+ return result;
}
bool QHelpCollectionHandler::removeCustomValue(const QString &key)