diff --git a/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp b/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp index 785afb159ef702bb18ccebe8f337f757064f1cf0..3e00ededb31d0315a6b7c5741ca9c6e8f1a080a9 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp +++ b/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp @@ -74,14 +74,12 @@ using namespace ProjectExplorer; AutotoolsProject::AutotoolsProject(AutotoolsManager *manager, const QString &fileName) : m_manager(manager), m_fileName(fileName), - m_files(), - m_file(new AutotoolsProjectFile(this, m_fileName)), - m_rootNode(new AutotoolsProjectNode(m_file->filePath())), m_fileWatcher(new Utils::FileSystemWatcher(this)), - m_watchedFiles(), m_makefileParserThread(0) { setId(Constants::AUTOTOOLS_PROJECT_ID); + setDocument(new AutotoolsProjectFile(m_fileName)); + m_rootNode = new AutotoolsProjectNode(projectFilePath()); setProjectContext(Core::Context(Constants::PROJECT_CONTEXT)); setProjectLanguages(Core::Context(ProjectExplorer::Constants::LANG_CXX)); @@ -112,11 +110,6 @@ QString AutotoolsProject::displayName() const return m_projectName; } -Core::IDocument *AutotoolsProject::document() const -{ - return m_file; -} - IProjectManager *AutotoolsProject::projectManager() const { return m_manager; diff --git a/src/plugins/autotoolsprojectmanager/autotoolsproject.h b/src/plugins/autotoolsprojectmanager/autotoolsproject.h index 26d7bad76ed2bebcedce7dbe9dc2124df7132627..03787ecb981e5887ac3924c336840a106a2f1116 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsproject.h +++ b/src/plugins/autotoolsprojectmanager/autotoolsproject.h @@ -74,10 +74,9 @@ public: ~AutotoolsProject() override; QString displayName() const override; - Core::IDocument *document() const override; ProjectExplorer::IProjectManager *projectManager() const override; ProjectExplorer::ProjectNode *rootProjectNode() const override; - QStringList files(FilesMode fileMode) const; + QStringList files(FilesMode fileMode) const override; static QString defaultBuildDirectory(const QString &projectPath); QStringList buildTargets() const; @@ -147,9 +146,6 @@ private: /// Return value for AutotoolsProject::files() QStringList m_files; - /// Return value for AutotoolsProject::file() - AutotoolsProjectFile *m_file; - /// Return value for AutotoolsProject::rootProjectNode() AutotoolsProjectNode *m_rootNode; diff --git a/src/plugins/autotoolsprojectmanager/autotoolsprojectfile.cpp b/src/plugins/autotoolsprojectmanager/autotoolsprojectfile.cpp index 0669e4a752830f5ffb72fbf51221240ec4379e16..84a2790d76423ef04ab32d6c172a84f17ed2cb30 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsprojectfile.cpp +++ b/src/plugins/autotoolsprojectmanager/autotoolsprojectfile.cpp @@ -37,9 +37,7 @@ using namespace AutotoolsProjectManager; using namespace AutotoolsProjectManager::Internal; -AutotoolsProjectFile::AutotoolsProjectFile(AutotoolsProject *project, const QString &fileName) : - Core::IDocument(project), - m_project(project) +AutotoolsProjectFile::AutotoolsProjectFile(const QString &fileName) { setId("Autotools.ProjectFile"); setMimeType(QLatin1String(Constants::MAKEFILE_MIMETYPE)); diff --git a/src/plugins/autotoolsprojectmanager/autotoolsprojectfile.h b/src/plugins/autotoolsprojectmanager/autotoolsprojectfile.h index d4ee86c6757ded869c44481df0f103beb4f49b2d..6e3bb27ec0b53f9ae8ffc42f811c04b5f5c5c3f9 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsprojectfile.h +++ b/src/plugins/autotoolsprojectmanager/autotoolsprojectfile.h @@ -55,7 +55,7 @@ class AutotoolsProjectFile : public Core::IDocument Q_OBJECT public: - AutotoolsProjectFile(AutotoolsProject *project, const QString &fileName); + AutotoolsProjectFile(const QString &fileName); bool save(QString *errorString, const QString &fileName, bool autoSave) override; QString defaultPath() const override; @@ -63,9 +63,6 @@ public: bool isModified() const override; bool isSaveAsAllowed() const override; bool reload(QString *errorString, ReloadFlag flag, ChangeType type) override; - -private: - AutotoolsProject *m_project; }; } // namespace Internal diff --git a/src/plugins/cmakeprojectmanager/cmakefile.cpp b/src/plugins/cmakeprojectmanager/cmakefile.cpp index 6812c3f2dfc6db170df03c80b8021beb725ac2c8..d0c49d237799f0ce375863a52b4e080c35495fe2 100644 --- a/src/plugins/cmakeprojectmanager/cmakefile.cpp +++ b/src/plugins/cmakeprojectmanager/cmakefile.cpp @@ -39,8 +39,7 @@ using namespace Utils; namespace CMakeProjectManager { namespace Internal { -CMakeFile::CMakeFile(CMakeProject *parent, const FileName &fileName) - : Core::IDocument(parent), m_project(parent) +CMakeFile::CMakeFile(const FileName &fileName) { setId("Cmake.ProjectFile"); setMimeType(QLatin1String(Constants::CMAKEPROJECTMIMETYPE)); diff --git a/src/plugins/cmakeprojectmanager/cmakefile.h b/src/plugins/cmakeprojectmanager/cmakefile.h index 441cdadcc65dceb145b452eaabf147af03187640..76a65ba8fe5043da16fcf9be3ac4371858f7e5c2 100644 --- a/src/plugins/cmakeprojectmanager/cmakefile.h +++ b/src/plugins/cmakeprojectmanager/cmakefile.h @@ -42,7 +42,7 @@ class CMakeFile : public Core::IDocument { Q_OBJECT public: - CMakeFile(CMakeProject *parent, const Utils::FileName &fileName); + CMakeFile(const Utils::FileName &fileName); bool save(QString *errorString, const QString &fileName, bool autoSave) override; @@ -54,9 +54,6 @@ public: ReloadBehavior reloadBehavior(ChangeTrigger state, ChangeType type) const override; bool reload(QString *errorString, ReloadFlag flag, ChangeType type) override; - -private: - CMakeProject *m_project; }; } // namespace Internal diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index a508ac641868aee0b281bfeeab6270194ccaf097..ff9a747aed8efff0e651e34ddd1d2a1044188ea2 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -95,13 +95,12 @@ CMakeProject::CMakeProject(CMakeManager *manager, const FileName &fileName) m_watcher(new QFileSystemWatcher(this)) { setId(Constants::CMAKEPROJECT_ID); + setDocument(new CMakeFile(fileName)); setProjectContext(Core::Context(CMakeProjectManager::Constants::PROJECTCONTEXT)); setProjectLanguages(Core::Context(ProjectExplorer::Constants::LANG_CXX)); m_rootNode->setDisplayName(fileName.parentDir().fileName()); - m_file = new CMakeFile(this, fileName); - connect(this, &CMakeProject::buildTargetsChanged, this, &CMakeProject::updateRunConfigurations); connect(m_watcher, &QFileSystemWatcher::fileChanged, this, &CMakeProject::fileChanged); } @@ -512,11 +511,6 @@ QString CMakeProject::displayName() const return m_rootNode->displayName(); } -Core::IDocument *CMakeProject::document() const -{ - return m_file; -} - IProjectManager *CMakeProject::projectManager() const { return m_manager; diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.h b/src/plugins/cmakeprojectmanager/cmakeproject.h index 3e8154ca72262f570471b276c12df976001298f6..a70a22db89c2156b302d36a2124605227319c3f7 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.h +++ b/src/plugins/cmakeprojectmanager/cmakeproject.h @@ -99,7 +99,6 @@ public: ~CMakeProject() override; QString displayName() const override; - Core::IDocument *document() const override; ProjectExplorer::IProjectManager *projectManager() const override; ProjectExplorer::ProjectNode *rootProjectNode() const override; @@ -151,7 +150,6 @@ private: Internal::CMakeManager *m_manager; ProjectExplorer::Target *m_activeTarget; Utils::FileName m_fileName; - Internal::CMakeFile *m_file; // TODO probably need a CMake specific node structure Internal::CMakeProjectNode *m_rootNode; diff --git a/src/plugins/cpptools/modelmanagertesthelper.h b/src/plugins/cpptools/modelmanagertesthelper.h index 255447b51aa63ff2b3488602fea61259fd6bfb1e..2c8b236d479ed938cfaa7d3ce124ada945c3ca68 100644 --- a/src/plugins/cpptools/modelmanagertesthelper.h +++ b/src/plugins/cpptools/modelmanagertesthelper.h @@ -50,7 +50,6 @@ public: ~TestProject() override; QString displayName() const override { return m_name; } - Core::IDocument *document() const override { return 0; } ProjectExplorer::IProjectManager *projectManager() const override { return 0; } ProjectExplorer::ProjectNode *rootProjectNode() const override { return 0; } diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index 9cf55a6c3871d36d3b0bc0f876ad7f22c837dca6..cbee9bed08397d5ac5c4b1e52ac1b93b63231d72 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -72,6 +72,7 @@ GenericProject::GenericProject(Manager *manager, const QString &fileName) m_fileName(fileName) { setId(Constants::GENERICPROJECT_ID); + setDocument(new GenericProjectFile(this, m_fileName, GenericProject::Everything)); setProjectContext(Context(GenericProjectManager::Constants::PROJECTCONTEXT)); setProjectLanguages(Context(ProjectExplorer::Constants::LANG_CXX)); @@ -83,12 +84,11 @@ 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_creatorIDocument = new GenericProjectFile(this, m_fileName, GenericProject::Everything); m_filesIDocument = new GenericProjectFile(this, m_filesFileName, GenericProject::Files); m_includesIDocument = new GenericProjectFile(this, m_includesFileName, GenericProject::Configuration); m_configIDocument = new GenericProjectFile(this, m_configFileName, GenericProject::Configuration); - DocumentManager::addDocument(m_creatorIDocument); + DocumentManager::addDocument(document()); DocumentManager::addDocument(m_filesIDocument); DocumentManager::addDocument(m_includesIDocument); DocumentManager::addDocument(m_configIDocument); @@ -388,11 +388,6 @@ QString GenericProject::displayName() const return m_projectName; } -IDocument *GenericProject::document() const -{ - return m_creatorIDocument; -} - IProjectManager *GenericProject::projectManager() const { return m_manager; @@ -451,8 +446,8 @@ Project::RestoreResult GenericProject::fromMap(const QVariantMap &map, QString * // //////////////////////////////////////////////////////////////////////////////////// -GenericProjectFile::GenericProjectFile(GenericProject *parent, QString fileName, GenericProject::RefreshOptions options) - : IDocument(parent), +GenericProjectFile::GenericProjectFile(GenericProject *parent, QString fileName, + GenericProject::RefreshOptions options) : m_project(parent), m_options(options) { diff --git a/src/plugins/genericprojectmanager/genericproject.h b/src/plugins/genericprojectmanager/genericproject.h index 0d2f1827d0a47bc3be4c7a830548365023b27f7b..24f44041cab0e376ea57441adbaf7b7e41fa9073 100644 --- a/src/plugins/genericprojectmanager/genericproject.h +++ b/src/plugins/genericprojectmanager/genericproject.h @@ -61,7 +61,6 @@ public: QString configFileName() const; QString displayName() const override; - Core::IDocument *document() const override; ProjectExplorer::IProjectManager *projectManager() const override; GenericProjectNode *rootProjectNode() const override; @@ -103,7 +102,6 @@ private: QString m_includesFileName; QString m_configFileName; QString m_projectName; - GenericProjectFile *m_creatorIDocument; GenericProjectFile *m_filesIDocument; GenericProjectFile *m_includesIDocument; GenericProjectFile *m_configIDocument; diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp index 30e1b18acc92a81ba1f06df0d066dd7bec40fd5f..f7dfbb55009673467a04c43cdd72edb1e03c44c7 100644 --- a/src/plugins/projectexplorer/project.cpp +++ b/src/plugins/projectexplorer/project.cpp @@ -90,17 +90,17 @@ namespace ProjectExplorer { class ProjectPrivate { public: - ProjectPrivate(); ~ProjectPrivate(); Core::Id m_id; + Core::IDocument *m_document = 0; QList<Target *> m_targets; - Target *m_activeTarget; + Target *m_activeTarget = 0; EditorConfiguration m_editorConfiguration; Core::Context m_projectContext; Core::Context m_projectLanguages; QVariantMap m_pluginSettings; - Internal::UserFileAccessor *m_accessor; + Internal::UserFileAccessor *m_accessor = 0; KitMatcher m_requiredKitMatcher; KitMatcher m_preferredKitMatcher; @@ -108,13 +108,11 @@ public: Utils::MacroExpander m_macroExpander; }; -ProjectPrivate::ProjectPrivate() : - m_activeTarget(0), - m_accessor(0) -{ } - ProjectPrivate::~ProjectPrivate() -{ delete m_accessor; } +{ + delete m_accessor; + delete m_document; +} Project::Project() : d(new ProjectPrivate) { @@ -135,8 +133,15 @@ Core::Id Project::id() const return d->m_id; } +Core::IDocument *Project::document() const +{ + QTC_CHECK(d->m_document); + return d->m_document; +} + Utils::FileName Project::projectFilePath() const { + QTC_ASSERT(document(), return Utils::FileName()); return document()->filePath(); } @@ -412,6 +417,13 @@ void Project::setId(Core::Id id) d->m_id = id; } +void Project::setDocument(Core::IDocument *doc) +{ + QTC_ASSERT(doc, return); + QTC_ASSERT(!d->m_document, return); + d->m_document = doc; +} + Target *Project::restoreTarget(const QVariantMap &data) { Core::Id id = idFromMap(data); diff --git a/src/plugins/projectexplorer/project.h b/src/plugins/projectexplorer/project.h index 6f08a7fe36f9534fc38f7a8056604bda2c3a2d6c..b8fbf1ac3f1265ec0c9842b4bff12dc1089057ae 100644 --- a/src/plugins/projectexplorer/project.h +++ b/src/plugins/projectexplorer/project.h @@ -79,10 +79,14 @@ public: virtual QString displayName() const = 0; Core::Id id() const; - virtual Core::IDocument *document() const = 0; - virtual IProjectManager *projectManager() const = 0; + Core::IDocument *document() const; Utils::FileName projectFilePath() const; + // The directory that holds the project. This includes the absolute path. + Utils::FileName projectDirectory() const; + static Utils::FileName projectDirectory(const Utils::FileName &top); + + virtual IProjectManager *projectManager() const = 0; bool hasActiveBuildSettings() const; @@ -119,10 +123,6 @@ public: virtual QVariantMap toMap() const; - // The directory that holds the project. This includes the absolute path. - Utils::FileName projectDirectory() const; - static Utils::FileName projectDirectory(const Utils::FileName &top); - Core::Context projectContext() const; Core::Context projectLanguages() const; @@ -173,6 +173,7 @@ protected: virtual bool setupTarget(Target *t); void setId(Core::Id id); + void setDocument(Core::IDocument *doc); // takes ownership! void setProjectContext(Core::Context context); void setProjectLanguages(Core::Context language); void addProjectLanguage(Core::Id id); diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 4636fea507ce9d489df87b97d7f3d553160fdc63..4968b065a88065a404d3ef1179f4b791e599ce09 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -1282,8 +1282,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er [this]() -> QString { Utils::FileName projectFilePath; if (Project *project = ProjectTree::currentProject()) - if (IDocument *doc = project->document()) - projectFilePath = doc->filePath(); + projectFilePath = project->projectFilePath(); return projectFilePath.toString(); }); diff --git a/src/plugins/projectexplorer/session.cpp b/src/plugins/projectexplorer/session.cpp index 8e9bcbc1bb0e3f020157d395a90bdca7753c2a5a..582f98b3491868d69ffb6206b3a03715e397ac7a 100644 --- a/src/plugins/projectexplorer/session.cpp +++ b/src/plugins/projectexplorer/session.cpp @@ -1027,7 +1027,7 @@ bool SessionManager::loadSession(const QString &session) auto end = oldProjects.end(); while (it != end) { - int index = fileList.indexOf((*it)->document()->filePath().toString()); + int index = fileList.indexOf((*it)->projectFilePath().toString()); if (index != -1) { fileList.removeAt(index); it = oldProjects.erase(it); diff --git a/src/plugins/pythoneditor/pythoneditorplugin.cpp b/src/plugins/pythoneditor/pythoneditorplugin.cpp index ce9dfe0193a8ac816f256ddc19ab53f2b8f7e5d6..d6485c6e8019451b476a84bc7c120daf6c62970f 100644 --- a/src/plugins/pythoneditor/pythoneditorplugin.cpp +++ b/src/plugins/pythoneditor/pythoneditorplugin.cpp @@ -249,7 +249,6 @@ public: ~PythonProject() override; QString displayName() const override { return m_projectName; } - IDocument *document() const override; IProjectManager *projectManager() const override { return m_manager; } ProjectNode *rootProjectNode() const override; @@ -274,7 +273,6 @@ private: PythonProjectManager *m_manager; QString m_projectFileName; QString m_projectName; - PythonProjectFile *m_document; QStringList m_rawFileList; QStringList m_files; QHash<QString, QString> m_rawListEntries; @@ -285,9 +283,7 @@ private: class PythonProjectFile : public Core::IDocument { public: - PythonProjectFile(PythonProject *parent, QString fileName) - : IDocument(parent), - m_project(parent) + PythonProjectFile(PythonProject *parent, QString fileName) : m_project(parent) { setId("Generic.ProjectFile"); setMimeType(QLatin1String(PythonMimeType)); @@ -626,16 +622,15 @@ PythonProject::PythonProject(PythonProjectManager *manager, const QString &fileN m_projectFileName(fileName) { setId(PythonProjectId); + setDocument(new PythonProjectFile(this, m_projectFileName)); + DocumentManager::addDocument(document()); + setProjectContext(Context(PythonProjectContext)); setProjectLanguages(Context(ProjectExplorer::Constants::LANG_CXX)); QFileInfo fileInfo(m_projectFileName); m_projectName = fileInfo.completeBaseName(); - m_document = new PythonProjectFile(this, m_projectFileName); - - DocumentManager::addDocument(m_document); - m_rootNode = new PythonProjectNode(this); m_manager->registerProject(this); @@ -648,11 +643,6 @@ PythonProject::~PythonProject() delete m_rootNode; } -IDocument *PythonProject::document() const -{ - return m_document; -} - static QStringList readLines(const QString &absoluteFileName) { QStringList lines; diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp index a6199608211cc6d43545e75f5ce7a0340be7e68b..c895b8097b05f29d8141112331ef44adb8e3abad 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.cpp +++ b/src/plugins/qbsprojectmanager/qbsproject.cpp @@ -113,6 +113,10 @@ QbsProject::QbsProject(QbsManager *manager, const QString &fileName) : m_parsingDelay.setInterval(1000); // delay parsing by 1s. setId(Constants::PROJECT_ID); + + setDocument(new QbsProjectFile(this, m_fileName)); + DocumentManager::addDocument(document()); + setProjectContext(Context(Constants::PROJECT_ID)); setProjectLanguages(Context(ProjectExplorer::Constants::LANG_CXX)); @@ -124,8 +128,6 @@ QbsProject::QbsProject(QbsManager *manager, const QString &fileName) : connect(&m_parsingDelay, SIGNAL(timeout()), this, SLOT(startParsing())); - updateDocuments(QSet<QString>() << fileName); - // NOTE: QbsProjectNode does not use this as a parent! m_rootProjectNode = new QbsRootProjectNode(this); // needs documents to be initialized! } @@ -153,15 +155,6 @@ QString QbsProject::displayName() const return m_projectName; } -IDocument *QbsProject::document() const -{ - foreach (IDocument *doc, m_qbsDocuments) { - if (doc->filePath().toString() == m_fileName) - return doc; - } - QTC_ASSERT(false, return 0); -} - QbsManager *QbsProject::projectManager() const { return m_manager; diff --git a/src/plugins/qbsprojectmanager/qbsproject.h b/src/plugins/qbsprojectmanager/qbsproject.h index 3558c2e81e5f528f6adaa57e75bfd065b053f668..a69fbce1ce159f9fc119a7e59a2d1ebdb56c501d 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.h +++ b/src/plugins/qbsprojectmanager/qbsproject.h @@ -66,7 +66,6 @@ public: ~QbsProject() override; QString displayName() const override; - Core::IDocument *document() const override; QbsManager *projectManager() const override; ProjectExplorer::ProjectNode *rootProjectNode() const override; diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp index b5e81d30b0ef59fd8f861cdca6b4d936a04b6e79..53b244ef2fd3518c5beb88cf19bf125cddde242f 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp @@ -98,7 +98,7 @@ class QmakeProjectFile : public Core::IDocument Q_OBJECT public: - QmakeProjectFile(const QString &filePath, QObject *parent = 0); + QmakeProjectFile(const QString &filePath); bool save(QString *errorString, const QString &fileName, bool autoSave) override; @@ -251,8 +251,7 @@ void ProjectFilesVisitor::visitFolderNode(FolderNode *folderNode) // ----------- QmakeProjectFile namespace Internal { -QmakeProjectFile::QmakeProjectFile(const QString &filePath, QObject *parent) - : Core::IDocument(parent) +QmakeProjectFile::QmakeProjectFile(const QString &filePath) { setId("Qmake.ProFile"); setMimeType(QLatin1String(QmakeProjectManager::Constants::PROFILE_MIMETYPE)); @@ -310,11 +309,11 @@ bool QmakeProjectFile::reload(QString *errorString, ReloadFlag flag, ChangeType QmakeProject::QmakeProject(QmakeManager *manager, const QString &fileName) : m_manager(manager), - m_fileInfo(new QmakeProjectFile(fileName, this)), m_projectFiles(new QmakeProjectFiles), m_qmakeVfs(new QMakeVfs) { setId(Constants::QMAKEPROJECT_ID); + setDocument(new QmakeProjectFile(fileName)); setProjectContext(Core::Context(QmakeProjectManager::Constants::PROJECT_ID)); setProjectLanguages(Core::Context(ProjectExplorer::Constants::LANG_CXX)); setRequiredKitMatcher(QtSupport::QtKitInformation::qtVersionMatcher()); @@ -377,7 +376,7 @@ Project::RestoreResult QmakeProject::fromMap(const QVariantMap &map, QString *er m_manager->registerProject(this); - m_rootProjectNode = new QmakeProFileNode(this, m_fileInfo->filePath()); + m_rootProjectNode = new QmakeProFileNode(this, projectFilePath()); // On active buildconfiguration changes, reevaluate the .pro files m_activeTarget = activeTarget(); @@ -849,11 +848,6 @@ QString QmakeProject::displayName() const return projectFilePath().toFileInfo().completeBaseName(); } -Core::IDocument *QmakeProject::document() const -{ - return m_fileInfo; -} - QStringList QmakeProject::files(FilesMode fileMode) const { QStringList files; @@ -986,7 +980,7 @@ void QmakeProject::destroyProFileReader(QtSupport::ProFileReader *reader) { delete reader; if (!--m_qmakeGlobalsRefCnt) { - QString dir = m_fileInfo->filePath().toFileInfo().absolutePath(); + QString dir = projectFilePath().toString(); if (!dir.endsWith(QLatin1Char('/'))) dir += QLatin1Char('/'); QtSupport::ProFileCacheManager::instance()->discardFiles(dir); diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.h b/src/plugins/qmakeprojectmanager/qmakeproject.h index 80ffc0f6f15c9a4e4cbb3e58b86080ff1ad00c10..cfa28f879ddd54cba9389c1600d5b383ed4da1c5 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.h +++ b/src/plugins/qmakeprojectmanager/qmakeproject.h @@ -58,9 +58,9 @@ class QmakeProFileNode; namespace Internal { class CentralizedFolderWatcher; +class QmakeProjectFile; class QmakeProjectFiles; class QmakeProjectConfigWidget; -class QmakeProjectFile; } class QMAKEPROJECTMANAGER_EXPORT QmakeProject : public ProjectExplorer::Project @@ -72,7 +72,6 @@ public: ~QmakeProject() override; QString displayName() const override; - Core::IDocument *document() const override; ProjectExplorer::IProjectManager *projectManager() const override; QmakeManager *qmakeProjectManager() const; @@ -185,8 +184,6 @@ private: QmakeManager *m_manager; QmakeProFileNode *m_rootProjectNode = 0; - Internal::QmakeProjectFile *m_fileInfo = nullptr; - // Current configuration QString m_oldQtIncludePath; QString m_oldQtLibsPath; diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp index 3f7f4c9650faad72eb6056c59cc1c925d2465089..f2ec9503849c566ade27a6b625b4f656ab8cbebf 100644 --- a/src/plugins/qmlprojectmanager/qmlproject.cpp +++ b/src/plugins/qmlprojectmanager/qmlproject.cpp @@ -65,17 +65,17 @@ QmlProject::QmlProject(Internal::Manager *manager, const Utils::FileName &fileNa m_activeTarget(0) { setId("QmlProjectManager.QmlProject"); + setDocument(new Internal::QmlProjectFile(this, fileName)); + DocumentManager::addDocument(document(), true); + setProjectContext(Context(QmlProjectManager::Constants::PROJECTCONTEXT)); setProjectLanguages(Context(ProjectExplorer::Constants::LANG_QMLJS)); QFileInfo fileInfo = m_fileName.toFileInfo(); m_projectName = fileInfo.completeBaseName(); - m_file = new Internal::QmlProjectFile(this, fileName); m_rootNode = new Internal::QmlProjectNode(this); - DocumentManager::addDocument(m_file, true); - m_manager->registerProject(this); } @@ -83,8 +83,6 @@ QmlProject::~QmlProject() { m_manager->unregisterProject(this); - DocumentManager::removeDocument(m_file); - delete m_projectItem.data(); delete m_rootNode; } @@ -292,11 +290,6 @@ QString QmlProject::displayName() const return m_projectName; } -IDocument *QmlProject::document() const -{ - return m_file; -} - IProjectManager *QmlProject::projectManager() const { return m_manager; diff --git a/src/plugins/qmlprojectmanager/qmlproject.h b/src/plugins/qmlprojectmanager/qmlproject.h index 9d3c48ca31748cabbf2f7207a643bb262c10f294..b3fe9a19b5d51bbe01d30c5c8aabf99b2c8b0f72 100644 --- a/src/plugins/qmlprojectmanager/qmlproject.h +++ b/src/plugins/qmlprojectmanager/qmlproject.h @@ -62,7 +62,6 @@ public: Utils::FileName filesFileName() const; QString displayName() const override; - Core::IDocument *document() const override; ProjectExplorer::IProjectManager *projectManager() const override; bool supportsKit(ProjectExplorer::Kit *k, QString *errorMessage) const override; @@ -112,7 +111,6 @@ private: Internal::Manager *m_manager; Utils::FileName m_fileName; - Internal::QmlProjectFile *m_file; QString m_projectName; QmlImport m_defaultImport; ProjectExplorer::Target *m_activeTarget; diff --git a/src/plugins/qmlprojectmanager/qmlprojectfile.cpp b/src/plugins/qmlprojectmanager/qmlprojectfile.cpp index 89a08a84b932669f32d6daa23cbe3eaf09903dc9..61a36c025b274c85bd02abf7d74d0b47b127798d 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectfile.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectfile.cpp @@ -36,9 +36,8 @@ namespace QmlProjectManager { namespace Internal { -QmlProjectFile::QmlProjectFile(QmlProject *parent, const Utils::FileName &fileName) - : Core::IDocument(parent), - m_project(parent) +QmlProjectFile::QmlProjectFile(QmlProject *parent, const Utils::FileName &fileName) : + m_project(parent) { QTC_CHECK(m_project); QTC_CHECK(!fileName.isEmpty()); diff --git a/src/plugins/vcsbase/vcsbaseplugin.cpp b/src/plugins/vcsbase/vcsbaseplugin.cpp index cf94ea9b06af62c22df38c9eaaf947350276f865..0b7a64b135f109f4410f519bc6c38e1d7c3ad7aa 100644 --- a/src/plugins/vcsbase/vcsbaseplugin.cpp +++ b/src/plugins/vcsbase/vcsbaseplugin.cpp @@ -676,7 +676,7 @@ void VcsBasePlugin::createRepository() // Find current starting directory QString directory; if (const Project *currentProject = ProjectTree::currentProject()) - directory = currentProject->document()->filePath().toFileInfo().absolutePath(); + directory = currentProject->projectFilePath().toString(); // Prompt for a directory that is not under version control yet QWidget *mw = ICore::mainWindow(); do {