QtSupport: collect all documentationFiles in parallel

Change-Id: Ica6e2021f2bd0c2f8a68e370f79ee4438e478b4a
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
David Schulz
2024-11-01 14:16:05 +01:00
parent 5c35645eba
commit bf111451cd

View File

@@ -21,8 +21,8 @@
#include <utils/filesystemwatcher.h> #include <utils/filesystemwatcher.h>
#include <utils/hostosinfo.h> #include <utils/hostosinfo.h>
#include <utils/persistentsettings.h> #include <utils/persistentsettings.h>
#include <utils/qtcprocess.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/qtcprocess.h>
#include <nanotrace/nanotrace.h> #include <nanotrace/nanotrace.h>
@@ -33,6 +33,7 @@
#include <QStringList> #include <QStringList>
#include <QTextStream> #include <QTextStream>
#include <QTimer> #include <QTimer>
#include <QtConcurrentMap>
using namespace ProjectExplorer; using namespace ProjectExplorer;
using namespace Utils; using namespace Utils;
@@ -514,11 +515,10 @@ using DocumentationFile = std::pair<Path, FileName>;
using DocumentationFiles = QList<DocumentationFile>; using DocumentationFiles = QList<DocumentationFile>;
using AllDocumentationFiles = QHash<QtVersion *, DocumentationFiles>; using AllDocumentationFiles = QHash<QtVersion *, DocumentationFiles>;
static DocumentationFiles allDocumentationFiles(QtVersion *v) static DocumentationFiles allDocumentationFiles(const QString &docsPath)
{ {
DocumentationFiles files; DocumentationFiles files;
const QStringList docPaths = QStringList( const QStringList docPaths{docsPath + QChar('/'), docsPath + "/qch/"};
{v->docsPath().toString() + QChar('/'), v->docsPath().toString() + "/qch/"});
for (const QString &docPath : docPaths) { for (const QString &docPath : docPaths) {
const QDir versionHelpDir(docPath); const QDir versionHelpDir(docPath);
for (const QString &helpFile : versionHelpDir.entryList(QStringList("q*.qch"), QDir::Files)) for (const QString &helpFile : versionHelpDir.entryList(QStringList("q*.qch"), QDir::Files))
@@ -529,10 +529,18 @@ static DocumentationFiles allDocumentationFiles(QtVersion *v)
static AllDocumentationFiles allDocumentationFiles(const QtVersions &versions) static AllDocumentationFiles allDocumentationFiles(const QtVersions &versions)
{ {
AllDocumentationFiles result; QList<QPair<QtVersion *, QString>> versionsWithDocPath;
for (QtVersion *v : versions) for (QtVersion *v : versions) {
result.insert(v, allDocumentationFiles(v)); if (v->hasDocs() && !v->docsPath().needsDevice())
return result; versionsWithDocPath << qMakePair(v, v->docsPath().path());
}
QFuture<QPair<QtVersion *, DocumentationFiles>> future = QtConcurrent::mapped(
versionsWithDocPath, [](const QPair<QtVersion *, QString> &versionWithDoc) {
return qMakePair(versionWithDoc.first, allDocumentationFiles(versionWithDoc.second));
});
future.waitForFinished();
return Utils::transform<AllDocumentationFiles>(
future.results(), [](const QPair<QtVersion *, DocumentationFiles> &r) { return r; });
} }
static QStringList documentationFiles(const QtVersions &vs, static QStringList documentationFiles(const QtVersions &vs,