From be357c4736ad70b6d5c8907931ef08c55320f0dc Mon Sep 17 00:00:00 2001
From: kh1 <qt-info@nokia.com>
Date: Fri, 10 Sep 2010 14:09:08 +0200
Subject: [PATCH] Monitor the collection file for doc updates during sdk
 update.

Reviewed-by: ck
---
 src/plugins/coreplugin/helpmanager.cpp | 21 +++++++++++++++++++--
 src/plugins/coreplugin/helpmanager.h   |  3 +++
 2 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/src/plugins/coreplugin/helpmanager.cpp b/src/plugins/coreplugin/helpmanager.cpp
index 6fbb3f0ac16..da2151a4d09 100644
--- a/src/plugins/coreplugin/helpmanager.cpp
+++ b/src/plugins/coreplugin/helpmanager.cpp
@@ -35,6 +35,7 @@
 #include <QtCore/QDebug>
 #include <QtCore/QDir>
 #include <QtCore/QFileInfo>
+#include <QtCore/QFileSystemWatcher>
 #include <QtCore/QStringList>
 
 #include <QtHelp/QHelpEngineCore>
@@ -94,7 +95,8 @@ HelpManager* HelpManager::instance()
 
 QString HelpManager::collectionFilePath()
 {
-    return QDir::cleanPath(Core::ICore::instance()->userResourcePath() + QLatin1String("/helpcollection.qhc"));
+    return QDir::cleanPath(Core::ICore::instance()->userResourcePath()
+        + QLatin1String("/helpcollection.qhc"));
 }
 
 void HelpManager::registerDocumentation(const QStringList &files)
@@ -392,7 +394,7 @@ void HelpManager::setupHelpManager()
 
     // this might come from the installer
     const QLatin1String key("AddedDocs");
-    const QString &addedDocs = m_helpEngine->customValue(key).toString();
+    const QString addedDocs = m_helpEngine->customValue(key).toString();
     if (!addedDocs.isEmpty()) {
         m_helpEngine->removeCustomValue(key);
         m_filesToRegister += addedDocs.split(QLatin1Char(';'));
@@ -407,9 +409,24 @@ void HelpManager::setupHelpManager()
     for (it = m_customValues.constBegin(); it != m_customValues.constEnd(); ++it)
         setCustomValue(it.key(), it.value());
 
+    m_collectionWatcher = new QFileSystemWatcher(QStringList() << collectionFilePath(),
+        this);
+    connect(m_collectionWatcher, SIGNAL(fileChanged(QString)), this,
+        SLOT(collectionFileModified()));
+
     emit setupFinished();
 }
 
+void HelpManager::collectionFileModified()
+{
+    const QLatin1String key("AddedDocs");
+    const QString addedDocs = m_helpEngine->customValue(key).toString();
+    if (!addedDocs.isEmpty()) {
+        m_helpEngine->removeCustomValue(key);
+        registerDocumentation(addedDocs.split(QLatin1Char(';')));
+    }
+}
+
 // -- private
 
 void HelpManager::verifyDocumenation()
diff --git a/src/plugins/coreplugin/helpmanager.h b/src/plugins/coreplugin/helpmanager.h
index 6346f9be2e1..9d40102386c 100644
--- a/src/plugins/coreplugin/helpmanager.h
+++ b/src/plugins/coreplugin/helpmanager.h
@@ -41,6 +41,7 @@
 #include <QtCore/QVariant>
 #include <QtCore/QByteArray>
 
+QT_FORWARD_DECLARE_CLASS(QFileSystemWatcher)
 QT_FORWARD_DECLARE_CLASS(QHelpEngineCore)
 QT_FORWARD_DECLARE_CLASS(QSqlQuery)
 
@@ -93,6 +94,7 @@ signals:
 
 private slots:
     void setupHelpManager();
+    void collectionFileModified();
 
 private:
     void verifyDocumenation();
@@ -100,6 +102,7 @@ private:
 private:
     bool m_needsSetup;
     QHelpEngineCore *m_helpEngine;
+    QFileSystemWatcher *m_collectionWatcher;
 
     QStringList m_filesToRegister;
     QStringList m_nameSpacesToUnregister;
-- 
GitLab