QmlProjectManager: Make sure project tree updates after in project file change

Use FileManager instead of our own FileSystemWatcher, since this one only signals
the first file change (cause Qt Creator apparently removes the file and creates
a new one on each change).

Change-Id: Idacd545e41cd3ee29bfbc122526b9097039c65d0
Reviewed-on: http://codereview.qt-project.org/4975
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
This commit is contained in:
Kai Koehne
2011-09-15 13:05:36 +02:00
parent 9a14220843
commit cccad7432d
3 changed files with 18 additions and 11 deletions

View File

@@ -42,6 +42,7 @@
#include <coreplugin/icore.h>
#include <coreplugin/messagemanager.h>
#include <coreplugin/filemanager.h>
#include <extensionsystem/pluginmanager.h>
#include <qtsupport/qmldumptool.h>
#include <qtsupport/baseqtversion.h>
@@ -60,10 +61,8 @@ namespace QmlProjectManager {
QmlProject::QmlProject(Internal::Manager *manager, const QString &fileName)
: m_manager(manager),
m_fileName(fileName),
m_modelManager(ExtensionSystem::PluginManager::instance()->getObject<QmlJS::ModelManagerInterface>()),
m_fileWatcher(new Utils::FileSystemWatcher(this))
m_modelManager(ExtensionSystem::PluginManager::instance()->getObject<QmlJS::ModelManagerInterface>())
{
m_fileWatcher->setObjectName(QLatin1String("QmlProjectWatcher"));
setProjectContext(Core::Context(QmlProjectManager::Constants::PROJECTCONTEXT));
setProjectLanguage(Core::Context(QmlProjectManager::Constants::LANG_QML));
@@ -73,9 +72,7 @@ QmlProject::QmlProject(Internal::Manager *manager, const QString &fileName)
m_file = new Internal::QmlProjectFile(this, fileName);
m_rootNode = new Internal::QmlProjectNode(this, m_file);
m_fileWatcher->addFile(fileName, Utils::FileSystemWatcher::WatchModifiedDate);
connect(m_fileWatcher, SIGNAL(fileChanged(QString)),
this, SLOT(refreshProjectFile()));
Core::FileManager::instance()->addFile(m_file, true);
m_manager->registerProject(this);
}
@@ -84,6 +81,8 @@ QmlProject::~QmlProject()
{
m_manager->unregisterProject(this);
Core::FileManager::instance()->removeFile(m_file);
delete m_projectItem.data();
delete m_rootNode;
}