diff --git a/src/plugins/help/helpmanager.cpp b/src/plugins/help/helpmanager.cpp index f971f825689..5aaa98651e1 100644 --- a/src/plugins/help/helpmanager.cpp +++ b/src/plugins/help/helpmanager.cpp @@ -94,6 +94,39 @@ QString HelpManager::collectionFilePath() return ICore::userResourcePath("helpcollection.qhc").toString(); } +static void registerDocumentationNow(QPromise &promise, const QString &collectionFilePath, + const QStringList &files) +{ + QMutexLocker locker(&d->m_helpengineMutex); + + promise.setProgressRange(0, files.count()); + promise.setProgressValue(0); + + QHelpEngineCore helpEngine(collectionFilePath); + helpEngine.setReadOnly(false); + helpEngine.setupData(); + bool docsChanged = false; + QStringList nameSpaces = helpEngine.registeredDocumentations(); + for (const QString &file : files) { + if (promise.isCanceled()) + break; + promise.setProgressValue(promise.future().progressValue() + 1); + const QString &nameSpace = QHelpEngineCore::namespaceName(file); + if (nameSpace.isEmpty()) + continue; + if (!nameSpaces.contains(nameSpace)) { + if (helpEngine.registerDocumentation(file)) { + nameSpaces.append(nameSpace); + docsChanged = true; + } else { + qWarning() << "Error registering namespace '" << nameSpace + << "' from file '" << file << "':" << helpEngine.error(); + } + } + } + promise.addResult(docsChanged); +} + void HelpManager::registerDocumentation(const QStringList &files) { if (d->m_needsSetup) { @@ -102,7 +135,7 @@ void HelpManager::registerDocumentation(const QStringList &files) return; } - QFuture future = Utils::asyncRun(&HelpManager::registerDocumentationNow, files); + QFuture future = Utils::asyncRun(registerDocumentationNow, collectionFilePath(), files); Utils::onResultReady(future, this, [](bool docsChanged){ if (docsChanged) { d->m_helpEngine->setupData(); @@ -125,38 +158,6 @@ void HelpManager::unregisterDocumentation(const QStringList &fileNames) unregisterNamespaces(getNamespaces(fileNames)); } -void HelpManager::registerDocumentationNow(QPromise &promise, const QStringList &files) -{ - QMutexLocker locker(&d->m_helpengineMutex); - - promise.setProgressRange(0, files.count()); - promise.setProgressValue(0); - - QHelpEngineCore helpEngine(collectionFilePath()); - helpEngine.setReadOnly(false); - helpEngine.setupData(); - bool docsChanged = false; - QStringList nameSpaces = helpEngine.registeredDocumentations(); - for (const QString &file : files) { - if (promise.isCanceled()) - break; - promise.setProgressValue(promise.future().progressValue() + 1); - const QString &nameSpace = QHelpEngineCore::namespaceName(file); - if (nameSpace.isEmpty()) - continue; - if (!nameSpaces.contains(nameSpace)) { - if (helpEngine.registerDocumentation(file)) { - nameSpaces.append(nameSpace); - docsChanged = true; - } else { - qWarning() << "Error registering namespace '" << nameSpace - << "' from file '" << file << "':" << helpEngine.error(); - } - } - } - promise.addResult(docsChanged); -} - void HelpManager::unregisterNamespaces(const QStringList &nameSpaces) { if (d->m_needsSetup) { diff --git a/src/plugins/help/helpmanager.h b/src/plugins/help/helpmanager.h index 739d5a68767..0e2d1fbd5a1 100644 --- a/src/plugins/help/helpmanager.h +++ b/src/plugins/help/helpmanager.h @@ -59,7 +59,6 @@ public: Core::HelpManager::HelpViewerLocation location = Core::HelpManager::HelpModeAlways) override; static void setupHelpManager(); - static void registerDocumentationNow(QPromise &promise, const QStringList &fileNames); signals: void collectionFileChanged();