diff --git a/src/plugins/coreplugin/helpmanager.cpp b/src/plugins/coreplugin/helpmanager.cpp index 6cc402da709..4c286263f34 100644 --- a/src/plugins/coreplugin/helpmanager.cpp +++ b/src/plugins/coreplugin/helpmanager.cpp @@ -56,6 +56,8 @@ struct HelpManagerPrivate m_needsSetup(true), m_helpEngine(0), m_collectionWatcher(0) {} + QStringList documentationFromInstaller(); + bool m_needsSetup; QHelpEngineCore *m_helpEngine; Utils::FileSystemWatcher *m_collectionWatcher; @@ -408,13 +410,7 @@ void HelpManager::setupHelpManager() d->m_nameSpacesToUnregister.clear(); } - // this might come from the installer - const QLatin1String key("AddedDocs"); - const QString addedDocs = d->m_helpEngine->customValue(key).toString(); - if (!addedDocs.isEmpty()) { - d->m_helpEngine->removeCustomValue(key); - d->m_filesToRegister += addedDocs.split(QLatin1Char(';')); - } + d->m_filesToRegister << d->documentationFromInstaller(); if (!d->m_filesToRegister.isEmpty()) { registerDocumentation(d->m_filesToRegister); @@ -425,25 +421,9 @@ void HelpManager::setupHelpManager() for (it = d->m_customValues.constBegin(); it != d->m_customValues.constEnd(); ++it) setCustomValue(it.key(), it.value()); - d->m_collectionWatcher = new Utils::FileSystemWatcher(this); - d->m_collectionWatcher->setObjectName(QLatin1String("HelpCollectionWatcher")); - d->m_collectionWatcher->addFile(collectionFilePath(), Utils::FileSystemWatcher::WatchAllChanges); - connect(d->m_collectionWatcher, SIGNAL(fileChanged(QString)), this, - SLOT(collectionFileModified())); - emit setupFinished(); } -void HelpManager::collectionFileModified() -{ - const QLatin1String key("AddedDocs"); - const QString addedDocs = d->m_helpEngine->customValue(key).toString(); - if (!addedDocs.isEmpty()) { - d->m_helpEngine->removeCustomValue(key); - registerDocumentation(addedDocs.split(QLatin1Char(';'))); - } -} - // -- private void HelpManager::verifyDocumenation() @@ -455,4 +435,25 @@ void HelpManager::verifyDocumenation() } } +QStringList HelpManagerPrivate::documentationFromInstaller() +{ + QSettings *installSettings = Core::ICore::instance()->settings(QSettings::SystemScope); + QStringList documentationPaths = installSettings->value(QLatin1String("Help/InstalledDocumentation")) + .toString().split(QLatin1Char(';'), QString::SkipEmptyParts); + QStringList documentationFiles; + foreach (const QString &path, documentationPaths) { + QFileInfo pathInfo(path); + if (pathInfo.isFile() && pathInfo.isReadable()) { + documentationFiles << pathInfo.absoluteFilePath(); + } else if (pathInfo.isDir()) { + QDir dir(path); + foreach (const QFileInfo &fileInfo, dir.entryInfoList(QStringList() << "*.qch", + QDir::Files | QDir::Readable)) { + documentationFiles << fileInfo.absoluteFilePath(); + } + } + } + return documentationFiles; +} + } // Core diff --git a/src/plugins/coreplugin/helpmanager.h b/src/plugins/coreplugin/helpmanager.h index 44a17b3f6d9..f300ae69836 100644 --- a/src/plugins/coreplugin/helpmanager.h +++ b/src/plugins/coreplugin/helpmanager.h @@ -93,7 +93,6 @@ signals: private slots: void setupHelpManager(); - void collectionFileModified(); private: void verifyDocumenation();