From 3ba511c6ad3eac74669ddfbc94f8955a16d286e3 Mon Sep 17 00:00:00 2001 From: Daniel Teske Date: Mon, 7 Nov 2011 17:03:10 +0100 Subject: [PATCH] Add watching of .files/.config/.creator to generic project Strangely absent. Task-Number: QTCREATORBUG-6478 Change-Id: I35dd03a7d5b34c01dc668e5ed222d10088f77f15 Reviewed-by: Daniel Teske --- .../genericprojectmanager/genericproject.cpp | 26 +++++++++++---- .../genericprojectmanager/genericproject.h | 9 ++++-- .../genericprojectfileseditor.cpp | 32 +------------------ .../genericprojectfileseditor.h | 18 ----------- .../genericprojectmanager.cpp | 12 ------- .../genericprojectmanager.h | 2 -- 6 files changed, 27 insertions(+), 72 deletions(-) diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index 231df345c1f..10fed2718b5 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -49,6 +49,7 @@ #include #include #include +#include #include #include @@ -85,8 +86,18 @@ GenericProject::GenericProject(Manager *manager, const QString &fileName) m_includesFileName = QFileInfo(dir, m_projectName + QLatin1String(".includes")).absoluteFilePath(); m_configFileName = QFileInfo(dir, m_projectName + QLatin1String(".config")).absoluteFilePath(); - m_file = new GenericProjectFile(this, fileName); - m_rootNode = new GenericProjectNode(this, m_file); + m_creatorIFile = new GenericProjectFile(this, m_fileName, GenericProject::Everything); + m_filesIFile = new GenericProjectFile(this, m_filesFileName, GenericProject::Files); + m_includesIFile = new GenericProjectFile(this, m_includesFileName, GenericProject::Configuration); + m_configIFile = new GenericProjectFile(this, m_configFileName, GenericProject::Configuration); + + Core::FileManager *fm = Core::FileManager::instance(); + fm->addFile(m_creatorIFile); + fm->addFile(m_filesIFile); + fm->addFile(m_includesIFile); + fm->addFile(m_configIFile); + + m_rootNode = new GenericProjectNode(this, m_creatorIFile); m_manager->registerProject(this); } @@ -407,7 +418,7 @@ QString GenericProject::id() const Core::IFile *GenericProject::file() const { - return m_file; + return m_creatorIFile; } IProjectManager *GenericProject::projectManager() const @@ -589,10 +600,11 @@ void GenericBuildSettingsWidget::updateToolChainList() // GenericProjectFile //////////////////////////////////////////////////////////////////////////////////// -GenericProjectFile::GenericProjectFile(GenericProject *parent, QString fileName) +GenericProjectFile::GenericProjectFile(GenericProject *parent, QString fileName, GenericProject::RefreshOptions options) : Core::IFile(parent), m_project(parent), - m_fileName(fileName) + m_fileName(fileName), + m_options(options) { } GenericProjectFile::~GenericProjectFile() @@ -656,6 +668,8 @@ bool GenericProjectFile::reload(QString *errorString, ReloadFlag flag, ChangeTyp { Q_UNUSED(errorString) Q_UNUSED(flag) - Q_UNUSED(type) + if (type == TypePermissions) + return true; + m_project->refresh(m_options); return true; } diff --git a/src/plugins/genericprojectmanager/genericproject.h b/src/plugins/genericprojectmanager/genericproject.h index 93455c6c9ea..636c20bd8ed 100644 --- a/src/plugins/genericprojectmanager/genericproject.h +++ b/src/plugins/genericprojectmanager/genericproject.h @@ -137,9 +137,11 @@ private: QString m_filesFileName; QString m_includesFileName; QString m_configFileName; - GenericProjectFile *m_file; QString m_projectName; - + GenericProjectFile *m_creatorIFile; + GenericProjectFile *m_filesIFile; + GenericProjectFile *m_includesIFile; + GenericProjectFile *m_configIFile; QStringList m_rawFileList; QStringList m_files; QHash m_rawListEntries; @@ -158,7 +160,7 @@ class GenericProjectFile : public Core::IFile Q_OBJECT public: - GenericProjectFile(GenericProject *parent, QString fileName); + GenericProjectFile(GenericProject *parent, QString fileName, GenericProject::RefreshOptions options); virtual ~GenericProjectFile(); virtual bool save(QString *errorString, const QString &fileName, bool autoSave); @@ -179,6 +181,7 @@ public: private: GenericProject *m_project; QString m_fileName; + GenericProject::RefreshOptions m_options; }; class GenericBuildSettingsWidget : public ProjectExplorer::BuildConfigWidget diff --git a/src/plugins/genericprojectmanager/genericprojectfileseditor.cpp b/src/plugins/genericprojectmanager/genericprojectfileseditor.cpp index d5b7add8eb4..54d82628b8d 100644 --- a/src/plugins/genericprojectmanager/genericprojectfileseditor.cpp +++ b/src/plugins/genericprojectmanager/genericprojectfileseditor.cpp @@ -50,7 +50,6 @@ using namespace GenericProjectManager::Internal; ProjectFilesFactory::ProjectFilesFactory(Manager *manager, TextEditor::TextEditorActionHandler *handler) : Core::IEditorFactory(manager), - m_manager(manager), m_actionHandler(handler) { m_mimeTypes.append(QLatin1String(Constants::FILES_MIMETYPE)); @@ -58,11 +57,6 @@ ProjectFilesFactory::ProjectFilesFactory(Manager *manager, m_mimeTypes.append(QLatin1String(Constants::CONFIG_MIMETYPE)); } -Manager *ProjectFilesFactory::manager() const -{ - return m_manager; -} - Core::IEditor *ProjectFilesFactory::createEditor(QWidget *parent) { ProjectFilesEditorWidget *ed = new ProjectFilesEditorWidget(parent, this, m_actionHandler); @@ -135,8 +129,7 @@ ProjectFilesEditorWidget::ProjectFilesEditorWidget(QWidget *parent, ProjectFiles m_factory(factory), m_actionHandler(handler) { - Manager *manager = factory->manager(); - ProjectFilesDocument *doc = new ProjectFilesDocument(manager); + TextEditor::BaseTextDocument *doc = new TextEditor::BaseTextDocument(); setBaseTextDocument(doc); handler->setupActions(this); @@ -159,26 +152,3 @@ TextEditor::BaseTextEditor *ProjectFilesEditorWidget::createEditor() { return new ProjectFilesEditor(this); } - -//////////////////////////////////////////////////////////////////////////////////////// -// ProjectFilesDocument -//////////////////////////////////////////////////////////////////////////////////////// - -ProjectFilesDocument::ProjectFilesDocument(Manager *manager) - : m_manager(manager) -{ - setMimeType(QLatin1String(Constants::FILES_MIMETYPE)); -} - -ProjectFilesDocument::~ProjectFilesDocument() -{ } - -bool ProjectFilesDocument::save(QString *errorString, const QString &name, bool autoSave) -{ - if (!BaseTextDocument::save(errorString, name, autoSave)) - return false; - - if (!autoSave) - m_manager->notifyChanged(name.isEmpty() ? fileName() : name); - return true; -} diff --git a/src/plugins/genericprojectmanager/genericprojectfileseditor.h b/src/plugins/genericprojectmanager/genericprojectfileseditor.h index 5f3ed1a8886..5b94009f2db 100644 --- a/src/plugins/genericprojectmanager/genericprojectfileseditor.h +++ b/src/plugins/genericprojectmanager/genericprojectfileseditor.h @@ -48,7 +48,6 @@ namespace Internal { class Manager; class ProjectFilesEditor; class ProjectFilesEditorWidget; -class ProjectFilesDocument; class ProjectFilesFactory; class ProjectFilesFactory: public Core::IEditorFactory @@ -58,8 +57,6 @@ class ProjectFilesFactory: public Core::IEditorFactory public: ProjectFilesFactory(Manager *manager, TextEditor::TextEditorActionHandler *handler); - Manager *manager() const; - virtual Core::IEditor *createEditor(QWidget *parent); virtual QStringList mimeTypes() const; @@ -68,7 +65,6 @@ public: virtual Core::IFile *open(const QString &fileName); private: - Manager *m_manager; TextEditor::TextEditorActionHandler *m_actionHandler; QStringList m_mimeTypes; }; @@ -105,20 +101,6 @@ private: TextEditor::TextEditorActionHandler *m_actionHandler; }; -class ProjectFilesDocument: public TextEditor::BaseTextDocument -{ - Q_OBJECT - -public: - ProjectFilesDocument(Manager *manager); - virtual ~ProjectFilesDocument(); - - virtual bool save(QString *errorString, const QString &name, bool autoSave); - -private: - Manager *m_manager; -}; - } // namespace Internal } // namespace GenericProjectManager diff --git a/src/plugins/genericprojectmanager/genericprojectmanager.cpp b/src/plugins/genericprojectmanager/genericprojectmanager.cpp index 96679c024ce..699d8852d79 100644 --- a/src/plugins/genericprojectmanager/genericprojectmanager.cpp +++ b/src/plugins/genericprojectmanager/genericprojectmanager.cpp @@ -79,15 +79,3 @@ void Manager::unregisterProject(GenericProject *project) { m_projects.removeAll(project); } - -void Manager::notifyChanged(const QString &fileName) -{ - foreach (GenericProject *project, m_projects) { - if (fileName == project->filesFileName()) { - project->refresh(GenericProject::Files); - } else if (fileName == project->includesFileName() - || fileName == project->configFileName()) { - project->refresh(GenericProject::Configuration); - } - } -} diff --git a/src/plugins/genericprojectmanager/genericprojectmanager.h b/src/plugins/genericprojectmanager/genericprojectmanager.h index 3e22cdf04be..c53f266a0aa 100644 --- a/src/plugins/genericprojectmanager/genericprojectmanager.h +++ b/src/plugins/genericprojectmanager/genericprojectmanager.h @@ -50,8 +50,6 @@ public: virtual QString mimeType() const; virtual ProjectExplorer::Project *openProject(const QString &fileName, QString *errorString); - void notifyChanged(const QString &fileName); - void registerProject(GenericProject *project); void unregisterProject(GenericProject *project);