From f463c4dade38ab609af1b30c047ecae2bc97a010 Mon Sep 17 00:00:00 2001
From: hjk <hjk121@nokiamail.com>
Date: Fri, 27 Sep 2013 16:30:20 +0200
Subject: [PATCH] ProjectExplorer: Make Project::id value based

Change-Id: Ie210d2a068158c6caaac66aae58cbd886f61c18d
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
---
 .../autotoolsprojectmanager/autotoolsproject.cpp     |  6 +-----
 .../autotoolsprojectmanager/autotoolsproject.h       |  1 -
 src/plugins/cmakeprojectmanager/cmakeproject.cpp     |  6 +-----
 src/plugins/cmakeprojectmanager/cmakeproject.h       |  1 -
 src/plugins/cpptools/modelmanagertesthelper.cpp      |  1 +
 src/plugins/cpptools/modelmanagertesthelper.h        |  3 ---
 src/plugins/genericprojectmanager/genericproject.cpp |  6 +-----
 src/plugins/genericprojectmanager/genericproject.h   |  1 -
 src/plugins/projectexplorer/project.cpp              | 12 ++++++++++++
 src/plugins/projectexplorer/project.h                |  3 ++-
 src/plugins/qbsprojectmanager/qbsproject.cpp         |  6 +-----
 src/plugins/qbsprojectmanager/qbsproject.h           |  1 -
 src/plugins/qmlprojectmanager/qmlproject.cpp         |  6 +-----
 src/plugins/qmlprojectmanager/qmlproject.h           |  1 -
 src/plugins/qt4projectmanager/qt4project.cpp         |  6 +-----
 src/plugins/qt4projectmanager/qt4project.h           |  1 -
 16 files changed, 21 insertions(+), 40 deletions(-)

diff --git a/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp b/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp
index 2891954bf13..a1c9c159848 100644
--- a/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp
+++ b/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp
@@ -78,6 +78,7 @@ AutotoolsProject::AutotoolsProject(AutotoolsManager *manager, const QString &fil
     m_watchedFiles(),
     m_makefileParserThread(0)
 {
+    setId(Constants::AUTOTOOLS_PROJECT_ID);
     setProjectContext(Core::Context(Constants::PROJECT_CONTEXT));
     setProjectLanguages(Core::Context(ProjectExplorer::Constants::LANG_CXX));
 
@@ -108,11 +109,6 @@ QString AutotoolsProject::displayName() const
     return m_projectName;
 }
 
-Core::Id AutotoolsProject::id() const
-{
-    return Core::Id(Constants::AUTOTOOLS_PROJECT_ID);
-}
-
 Core::IDocument *AutotoolsProject::document() const
 {
     return m_file;
diff --git a/src/plugins/autotoolsprojectmanager/autotoolsproject.h b/src/plugins/autotoolsprojectmanager/autotoolsproject.h
index f5304358c57..e9bc643c6b8 100644
--- a/src/plugins/autotoolsprojectmanager/autotoolsproject.h
+++ b/src/plugins/autotoolsprojectmanager/autotoolsproject.h
@@ -73,7 +73,6 @@ public:
     ~AutotoolsProject();
 
     QString displayName() const;
-    Core::Id id() const;
     Core::IDocument *document() const;
     ProjectExplorer::IProjectManager *projectManager() const;
     ProjectExplorer::ProjectNode *rootProjectNode() const;
diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
index 68acc76aa69..87082729140 100644
--- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
@@ -92,6 +92,7 @@ CMakeProject::CMakeProject(CMakeManager *manager, const QString &fileName)
       m_rootNode(new CMakeProjectNode(fileName)),
       m_watcher(new QFileSystemWatcher(this))
 {
+    setId(Constants::CMAKEPROJECT_ID);
     setProjectContext(Core::Context(CMakeProjectManager::Constants::PROJECTCONTEXT));
     setProjectLanguages(Core::Context(ProjectExplorer::Constants::LANG_CXX));
 
@@ -512,11 +513,6 @@ QString CMakeProject::displayName() const
     return m_projectName;
 }
 
-Core::Id CMakeProject::id() const
-{
-    return Core::Id(Constants::CMAKEPROJECT_ID);
-}
-
 Core::IDocument *CMakeProject::document() const
 {
     return m_file;
diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.h b/src/plugins/cmakeprojectmanager/cmakeproject.h
index c950575e0fd..f89081bd436 100644
--- a/src/plugins/cmakeprojectmanager/cmakeproject.h
+++ b/src/plugins/cmakeprojectmanager/cmakeproject.h
@@ -80,7 +80,6 @@ public:
     ~CMakeProject();
 
     QString displayName() const;
-    Core::Id id() const;
     Core::IDocument *document() const;
     CMakeManager *projectManager() const;
 
diff --git a/src/plugins/cpptools/modelmanagertesthelper.cpp b/src/plugins/cpptools/modelmanagertesthelper.cpp
index 4d7590e130d..9c139c5a7bf 100644
--- a/src/plugins/cpptools/modelmanagertesthelper.cpp
+++ b/src/plugins/cpptools/modelmanagertesthelper.cpp
@@ -39,6 +39,7 @@ TestProject::TestProject(const QString &name, QObject *parent)
     : m_name (name)
 {
     setParent(parent);
+    setId(Core::Id::fromString(name));
 }
 
 TestProject::~TestProject()
diff --git a/src/plugins/cpptools/modelmanagertesthelper.h b/src/plugins/cpptools/modelmanagertesthelper.h
index d4ac671bc1b..4ed45195cda 100644
--- a/src/plugins/cpptools/modelmanagertesthelper.h
+++ b/src/plugins/cpptools/modelmanagertesthelper.h
@@ -48,9 +48,6 @@ public:
     virtual QString displayName() const
     { return m_name; }
 
-    virtual Core::Id id() const
-    { return Core::Id::fromString(m_name); }
-
     virtual Core::IDocument *document() const
     { return 0; }
 
diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp
index 784f425235e..2af83549998 100644
--- a/src/plugins/genericprojectmanager/genericproject.cpp
+++ b/src/plugins/genericprojectmanager/genericproject.cpp
@@ -69,6 +69,7 @@ GenericProject::GenericProject(Manager *manager, const QString &fileName)
     : m_manager(manager),
       m_fileName(fileName)
 {
+    setId(Constants::GENERICPROJECT_ID);
     setProjectContext(Context(GenericProjectManager::Constants::PROJECTCONTEXT));
     setProjectLanguages(Context(ProjectExplorer::Constants::LANG_CXX));
 
@@ -375,11 +376,6 @@ QString GenericProject::displayName() const
     return m_projectName;
 }
 
-Id GenericProject::id() const
-{
-    return Id(Constants::GENERICPROJECT_ID);
-}
-
 IDocument *GenericProject::document() const
 {
     return m_creatorIDocument;
diff --git a/src/plugins/genericprojectmanager/genericproject.h b/src/plugins/genericprojectmanager/genericproject.h
index f4f2fb54573..0291485f182 100644
--- a/src/plugins/genericprojectmanager/genericproject.h
+++ b/src/plugins/genericprojectmanager/genericproject.h
@@ -60,7 +60,6 @@ public:
     QString configFileName() const;
 
     QString displayName() const;
-    Core::Id id() const;
     Core::IDocument *document() const;
     ProjectExplorer::IProjectManager *projectManager() const;
 
diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp
index e5b49f2ce91..63c0051fcf5 100644
--- a/src/plugins/projectexplorer/project.cpp
+++ b/src/plugins/projectexplorer/project.cpp
@@ -85,6 +85,7 @@ public:
     ProjectPrivate();
     ~ProjectPrivate();
 
+    Core::Id m_id;
     QList<Target *> m_targets;
     Target *m_activeTarget;
     EditorConfiguration *m_editorConfiguration;
@@ -114,6 +115,12 @@ Project::~Project()
     delete d;
 }
 
+Core::Id Project::id() const
+{
+    QTC_CHECK(d->m_id.isValid());
+    return d->m_id;
+}
+
 QString Project::projectFilePath() const
 {
     return document()->filePath();
@@ -264,6 +271,11 @@ bool Project::setupTarget(Target *t)
     return true;
 }
 
+void Project::setId(Core::Id id)
+{
+    d->m_id = id;
+}
+
 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 782fa9932cc..c61db0cb211 100644
--- a/src/plugins/projectexplorer/project.h
+++ b/src/plugins/projectexplorer/project.h
@@ -73,7 +73,7 @@ public:
     virtual ~Project();
 
     virtual QString displayName() const = 0;
-    virtual Core::Id id() const = 0;
+    Core::Id id() const;
     virtual Core::IDocument *document() const = 0;
     virtual IProjectManager *projectManager() const = 0;
 
@@ -164,6 +164,7 @@ protected:
     virtual bool fromMap(const QVariantMap &map);
     virtual bool setupTarget(Target *t);
 
+    void setId(Core::Id id);
     void setProjectContext(Core::Context context);
     void setProjectLanguages(Core::Context language);
     void addProjectLanguage(Core::Id id);
diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp
index d6b4c262bb9..5bfa4ddf618 100644
--- a/src/plugins/qbsprojectmanager/qbsproject.cpp
+++ b/src/plugins/qbsprojectmanager/qbsproject.cpp
@@ -102,6 +102,7 @@ QbsProject::QbsProject(QbsManager *manager, const QString &fileName) :
 {
     m_parsingDelay.setInterval(1000); // delay parsing by 1s.
 
+    setId(Constants::PROJECT_ID);
     setProjectContext(Context(Constants::PROJECT_ID));
     setProjectLanguages(Context(ProjectExplorer::Constants::LANG_CXX));
 
@@ -132,11 +133,6 @@ QString QbsProject::displayName() const
     return m_projectName;
 }
 
-Id QbsProject::id() const
-{
-    return Constants::PROJECT_ID;
-}
-
 IDocument *QbsProject::document() const
 {
     foreach (IDocument *doc, m_qbsDocuments) {
diff --git a/src/plugins/qbsprojectmanager/qbsproject.h b/src/plugins/qbsprojectmanager/qbsproject.h
index 1a8d9232d84..d43ead569cf 100644
--- a/src/plugins/qbsprojectmanager/qbsproject.h
+++ b/src/plugins/qbsprojectmanager/qbsproject.h
@@ -74,7 +74,6 @@ public:
     ~QbsProject();
 
     QString displayName() const;
-    Core::Id id() const;
     Core::IDocument *document() const;
     QbsManager *projectManager() const;
 
diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp
index dabdf32771e..9973dbd34de 100644
--- a/src/plugins/qmlprojectmanager/qmlproject.cpp
+++ b/src/plugins/qmlprojectmanager/qmlproject.cpp
@@ -110,6 +110,7 @@ QmlProject::QmlProject(Internal::Manager *manager, const QString &fileName)
       m_defaultImport(UnknownImport),
       m_modelManager(QmlJS::ModelManagerInterface::instance())
 {
+    setId("QmlProjectManager.QmlProject");
     setProjectContext(Context(QmlProjectManager::Constants::PROJECTCONTEXT));
     setProjectLanguages(Context(ProjectExplorer::Constants::LANG_QMLJS));
 
@@ -311,11 +312,6 @@ QString QmlProject::displayName() const
     return m_projectName;
 }
 
-Id QmlProject::id() const
-{
-    return "QmlProjectManager.QmlProject";
-}
-
 IDocument *QmlProject::document() const
 {
     return m_file;
diff --git a/src/plugins/qmlprojectmanager/qmlproject.h b/src/plugins/qmlprojectmanager/qmlproject.h
index 01b6ccb5896..6a6033479e0 100644
--- a/src/plugins/qmlprojectmanager/qmlproject.h
+++ b/src/plugins/qmlprojectmanager/qmlproject.h
@@ -61,7 +61,6 @@ public:
     QString filesFileName() const;
 
     QString displayName() const;
-    Core::Id id() const;
     Core::IDocument *document() const;
     ProjectExplorer::IProjectManager *projectManager() const;
 
diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp
index 9d65382d925..edc57f369ea 100644
--- a/src/plugins/qt4projectmanager/qt4project.cpp
+++ b/src/plugins/qt4projectmanager/qt4project.cpp
@@ -343,6 +343,7 @@ Qt4Project::Qt4Project(Qt4Manager *manager, const QString& fileName) :
     m_centralizedFolderWatcher(0),
     m_activeTarget(0)
 {
+    setId(Constants::QT4PROJECT_ID);
     setProjectContext(Core::Context(Qt4ProjectManager::Constants::PROJECT_ID));
     setProjectLanguages(Core::Context(ProjectExplorer::Constants::LANG_CXX));
 
@@ -888,11 +889,6 @@ QString Qt4Project::displayName() const
     return QFileInfo(projectFilePath()).completeBaseName();
 }
 
-Core::Id Qt4Project::id() const
-{
-    return Core::Id(Constants::QT4PROJECT_ID);
-}
-
 Core::IDocument *Qt4Project::document() const
 {
     return m_fileInfo;
diff --git a/src/plugins/qt4projectmanager/qt4project.h b/src/plugins/qt4projectmanager/qt4project.h
index 43afcbe7284..666170c55ef 100644
--- a/src/plugins/qt4projectmanager/qt4project.h
+++ b/src/plugins/qt4projectmanager/qt4project.h
@@ -77,7 +77,6 @@ public:
     virtual ~Qt4Project();
 
     QString displayName() const;
-    Core::Id id() const;
     Core::IDocument *document() const;
     ProjectExplorer::IProjectManager *projectManager() const;
     Qt4Manager *qt4ProjectManager() const;
-- 
GitLab