From d8188399cf944a945eb549ef0504ea4baed8239a Mon Sep 17 00:00:00 2001
From: dt <qtc-committer@nokia.com>
Date: Wed, 20 Jan 2010 14:47:08 +0100
Subject: [PATCH] Remove ProjectExplorer::FileWatcher usage from
 Qt4ProjectManager

Use the filemanager instead
---
 src/plugins/qt4projectmanager/qt4nodes.cpp | 67 ++++++++++++++++++++--
 src/plugins/qt4projectmanager/qt4nodes.h   | 28 +++++++--
 2 files changed, 85 insertions(+), 10 deletions(-)

diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp
index bf54d83ca68..1fe974af0d6 100644
--- a/src/plugins/qt4projectmanager/qt4nodes.cpp
+++ b/src/plugins/qt4projectmanager/qt4nodes.cpp
@@ -32,11 +32,11 @@
 #include "qt4nodes.h"
 #include "qt4project.h"
 #include "qt4projectmanager.h"
+#include "qt4projectmanagerconstants.h"
 #include "qtuicodemodelsupport.h"
 #include "qt4buildconfiguration.h"
 
 #include <projectexplorer/nodesvisitor.h>
-#include <projectexplorer/filewatcher.h>
 
 #include <coreplugin/editormanager/editormanager.h>
 #include <coreplugin/editormanager/ieditor.h>
@@ -80,6 +80,62 @@ namespace {
     }
 }
 
+
+
+Qt4PriFile::Qt4PriFile(Qt4PriFileNode *qt4PriFile)
+    : IFile(qt4PriFile), m_priFile(qt4PriFile)
+{
+
+}
+
+bool Qt4PriFile::save(const QString &fileName)
+{
+    Q_UNUSED(fileName);
+    return false;
+}
+
+QString Qt4PriFile::fileName() const
+{
+    return m_priFile->path();
+}
+
+QString Qt4PriFile::defaultPath() const
+{
+    return QString::null;
+}
+
+QString Qt4PriFile::suggestedFileName() const
+{
+    return QString::null;
+}
+
+QString Qt4PriFile::mimeType() const
+{
+    return Qt4ProjectManager::Constants::PROFILE_MIMETYPE;
+}
+
+bool Qt4PriFile::isModified() const
+{
+    return false;
+}
+
+bool Qt4PriFile::isReadOnly() const
+{
+    return false;
+}
+
+bool Qt4PriFile::isSaveAsAllowed() const
+{
+    return false;
+}
+
+void Qt4PriFile::modified(Core::IFile::ReloadBehavior *behavior)
+{
+    Q_UNUSED(behavior);
+    m_priFile->scheduleUpdate();
+}
+
+
 /*!
   \class Qt4PriFileNode
   Implements abstract ProjectNode class
@@ -90,10 +146,12 @@ Qt4PriFileNode::Qt4PriFileNode(Qt4Project *project, Qt4ProFileNode* qt4ProFileNo
           m_project(project),
           m_qt4ProFileNode(qt4ProFileNode),
           m_projectFilePath(QDir::fromNativeSeparators(filePath)),
-          m_projectDir(QFileInfo(filePath).absolutePath()),
-          m_fileWatcher(new ProjectExplorer::FileWatcher(this))
+          m_projectDir(QFileInfo(filePath).absolutePath())
 {
     Q_ASSERT(project);
+    Qt4PriFile *qt4PriFile = new Qt4PriFile(this);
+    Core::ICore::instance()->fileManager()->addFile(qt4PriFile);
+
     setFolderName(QFileInfo(filePath).completeBaseName());
 
     static QIcon dirIcon;
@@ -106,9 +164,6 @@ Qt4PriFileNode::Qt4PriFileNode(Qt4Project *project, Qt4ProFileNode* qt4ProFileNo
         dirIcon.addPixmap(dirIconPixmap);
     }
     setIcon(dirIcon);
-    m_fileWatcher->addFile(filePath);
-    connect(m_fileWatcher, SIGNAL(fileChanged(QString)),
-            this, SLOT(scheduleUpdate()));
 }
 
 void Qt4PriFileNode::scheduleUpdate()
diff --git a/src/plugins/qt4projectmanager/qt4nodes.h b/src/plugins/qt4projectmanager/qt4nodes.h
index 5c6a73f76b8..e03a4bf24ed 100644
--- a/src/plugins/qt4projectmanager/qt4nodes.h
+++ b/src/plugins/qt4projectmanager/qt4nodes.h
@@ -30,6 +30,7 @@
 #ifndef QT4NODES_H
 #define QT4NODES_H
 
+#include <coreplugin/ifile.h>
 #include <projectexplorer/projectnodes.h>
 #include <projectexplorer/project.h>
 
@@ -104,6 +105,28 @@ enum Qt4Variable {
 class Qt4PriFileNode;
 class Qt4ProFileNode;
 
+class Qt4PriFile : public Core::IFile
+{
+    Q_OBJECT
+public:
+    Qt4PriFile(Qt4PriFileNode *qt4PriFile);
+    virtual bool save(const QString &fileName = QString());
+    virtual QString fileName() const;
+
+    virtual QString defaultPath() const;
+    virtual QString suggestedFileName() const;
+    virtual QString mimeType() const;
+
+    virtual bool isModified() const;
+    virtual bool isReadOnly() const;
+    virtual bool isSaveAsAllowed() const;
+
+    virtual void modified(Core::IFile::ReloadBehavior *behavior);
+
+private:
+    Qt4PriFileNode *m_priFile;
+};
+
 // Implements ProjectNode for qt4 pro files
 class Qt4PriFileNode : public ProjectExplorer::ProjectNode
 {
@@ -160,14 +183,11 @@ private:
     QString m_projectFilePath;
     QString m_projectDir;
 
-    // TODO we might be better off using an IFile* and the FileManager for
-    // watching changes to the .pro and .pri files on disk
-    ProjectExplorer::FileWatcher *m_fileWatcher;
-
     QMap<QString, Qt4UiCodeModelSupport *> m_uiCodeModelSupport;
 
     // managed by Qt4ProFileNode
     friend class Qt4ProFileNode;
+    friend class Qt4PriFile; // for scheduling updates on modified
     // internal temporary subtree representation
     friend struct InternalNode;
 };
-- 
GitLab