From a7a7e4d00213b33ca75ddb60e2a4fbd7b68e2144 Mon Sep 17 00:00:00 2001
From: dt <qtc-committer@nokia.com>
Date: Wed, 25 Nov 2009 19:39:52 +0100
Subject: [PATCH] Change IBuildStepFactory::canCreate to take a
 BuildConfiguration

instead of a Project. Since BuildSteps "should" only care about the
BuildConfiguration not the Project. (Not 100% doable, but still.)
---
 src/plugins/cmakeprojectmanager/makestep.cpp          | 2 +-
 src/plugins/cmakeprojectmanager/makestep.h            | 2 +-
 src/plugins/genericprojectmanager/genericmakestep.cpp | 2 +-
 src/plugins/genericprojectmanager/genericmakestep.h   | 2 +-
 src/plugins/projectexplorer/buildstep.h               | 4 +---
 src/plugins/projectexplorer/buildstepspage.cpp        | 3 +--
 src/plugins/projectexplorer/buildstepspage.h          | 1 -
 src/plugins/projectexplorer/processstep.cpp           | 4 ++--
 src/plugins/projectexplorer/processstep.h             | 2 +-
 src/plugins/qt4projectmanager/makestep.cpp            | 4 ++--
 src/plugins/qt4projectmanager/makestep.h              | 2 +-
 src/plugins/qt4projectmanager/qmakestep.cpp           | 6 ++++--
 src/plugins/qt4projectmanager/qmakestep.h             | 2 +-
 13 files changed, 17 insertions(+), 19 deletions(-)

diff --git a/src/plugins/cmakeprojectmanager/makestep.cpp b/src/plugins/cmakeprojectmanager/makestep.cpp
index 4fe313e6a58..6cbb7bc72ef 100644
--- a/src/plugins/cmakeprojectmanager/makestep.cpp
+++ b/src/plugins/cmakeprojectmanager/makestep.cpp
@@ -284,7 +284,7 @@ BuildStep *MakeStepFactory::clone(BuildStep *bs, BuildConfiguration *bc) const
     return new MakeStep(static_cast<MakeStep *>(bs), bc);
 }
 
-QStringList MakeStepFactory::canCreateForProject(Project * /* pro */) const
+QStringList MakeStepFactory::canCreateForProject(BuildConfiguration * /* pro */) const
 {
     return QStringList();
 }
diff --git a/src/plugins/cmakeprojectmanager/makestep.h b/src/plugins/cmakeprojectmanager/makestep.h
index f01bb1d6141..6bb2a9b5569 100644
--- a/src/plugins/cmakeprojectmanager/makestep.h
+++ b/src/plugins/cmakeprojectmanager/makestep.h
@@ -107,7 +107,7 @@ class MakeStepFactory : public ProjectExplorer::IBuildStepFactory
     virtual bool canCreate(const QString &name) const;
     virtual ProjectExplorer::BuildStep *create(ProjectExplorer::BuildConfiguration *bc, const QString &name) const;
     virtual ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStep *bs, ProjectExplorer::BuildConfiguration *bc) const;
-    virtual QStringList canCreateForProject(ProjectExplorer::Project *pro) const;
+    virtual QStringList canCreateForProject(ProjectExplorer::BuildConfiguration *bc) const;
     virtual QString displayNameForName(const QString &name) const;
 };
 
diff --git a/src/plugins/genericprojectmanager/genericmakestep.cpp b/src/plugins/genericprojectmanager/genericmakestep.cpp
index 54dd056d867..2d7f82de09d 100644
--- a/src/plugins/genericprojectmanager/genericmakestep.cpp
+++ b/src/plugins/genericprojectmanager/genericmakestep.cpp
@@ -292,7 +292,7 @@ ProjectExplorer::BuildStep *GenericMakeStepFactory::clone(ProjectExplorer::Build
     return new GenericMakeStep(static_cast<GenericMakeStep*>(bs), bc);
 }
 
-QStringList GenericMakeStepFactory::canCreateForProject(ProjectExplorer::Project * /* pro */) const
+QStringList GenericMakeStepFactory::canCreateForProject(ProjectExplorer::BuildConfiguration * /* pro */) const
 {
     return QStringList();
 }
diff --git a/src/plugins/genericprojectmanager/genericmakestep.h b/src/plugins/genericprojectmanager/genericmakestep.h
index c8c059a3501..d5eb0ccc979 100644
--- a/src/plugins/genericprojectmanager/genericmakestep.h
+++ b/src/plugins/genericprojectmanager/genericmakestep.h
@@ -107,7 +107,7 @@ class GenericMakeStepFactory : public ProjectExplorer::IBuildStepFactory
                                                const QString &name) const;
     virtual ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStep *bs,
                                               ProjectExplorer::BuildConfiguration *bc) const;
-    virtual QStringList canCreateForProject(ProjectExplorer::Project *pro) const;
+    virtual QStringList canCreateForProject(ProjectExplorer::BuildConfiguration *bc) const;
     virtual QString displayNameForName(const QString &name) const;
 };
 
diff --git a/src/plugins/projectexplorer/buildstep.h b/src/plugins/projectexplorer/buildstep.h
index c210f6af019..78c715495db 100644
--- a/src/plugins/projectexplorer/buildstep.h
+++ b/src/plugins/projectexplorer/buildstep.h
@@ -37,8 +37,6 @@
 #include <QtCore/QFutureInterface>
 
 namespace ProjectExplorer {
-// TODO remove this
-class Project;
 class BuildConfiguration;
 
 /*
@@ -135,7 +133,7 @@ public:
     virtual BuildStep *create(BuildConfiguration *bc, const QString &name) const = 0;
     /// Called by the add BuildStep action to check which BuildSteps could be added
     /// to the project by this factory, should return a list of names
-    virtual QStringList canCreateForProject(Project *pro) const = 0;
+    virtual QStringList canCreateForProject(BuildConfiguration *bc) const = 0;
     /// Called to convert an internal name to a displayName
 
     /// Called to clone a BuildStep
diff --git a/src/plugins/projectexplorer/buildstepspage.cpp b/src/plugins/projectexplorer/buildstepspage.cpp
index fc1416000e6..c95b9b32d2a 100644
--- a/src/plugins/projectexplorer/buildstepspage.cpp
+++ b/src/plugins/projectexplorer/buildstepspage.cpp
@@ -47,7 +47,6 @@ using namespace ProjectExplorer::Internal;
 
 BuildStepsPage::BuildStepsPage(Project *project, bool clean) :
     BuildConfigWidget(),
-    m_pro(project),
     m_clean(clean)
 {
     m_vbox = new QVBoxLayout(this);
@@ -144,7 +143,7 @@ void BuildStepsPage::updateAddBuildStepMenu()
     //Build up a list of possible steps and save map the display names to the (internal) name and factories.
     QList<IBuildStepFactory *> factories = ExtensionSystem::PluginManager::instance()->getObjects<IBuildStepFactory>();
     foreach (IBuildStepFactory * factory, factories) {
-        QStringList names = factory->canCreateForProject(m_pro);
+        QStringList names = factory->canCreateForProject(m_configuration);
         foreach (const QString &name, names) {
             map.insert(factory->displayNameForName(name), QPair<QString, IBuildStepFactory *>(name, factory));
         }
diff --git a/src/plugins/projectexplorer/buildstepspage.h b/src/plugins/projectexplorer/buildstepspage.h
index 92e8180218b..1e716d4d215 100644
--- a/src/plugins/projectexplorer/buildstepspage.h
+++ b/src/plugins/projectexplorer/buildstepspage.h
@@ -87,7 +87,6 @@ private:
     void updateBuildStepButtonsState();
     void addBuildStepWidget(int pos, BuildStep *step);
 
-    Project *m_pro;
     BuildConfiguration *m_configuration;
     QHash<QAction *, QPair<QString, ProjectExplorer::IBuildStepFactory *> > m_addBuildStepHash;
     bool m_clean;
diff --git a/src/plugins/projectexplorer/processstep.cpp b/src/plugins/projectexplorer/processstep.cpp
index e442fc14d6c..fac4255c4c4 100644
--- a/src/plugins/projectexplorer/processstep.cpp
+++ b/src/plugins/projectexplorer/processstep.cpp
@@ -212,9 +212,9 @@ BuildStep *ProcessStepFactory::clone(BuildStep *bs, BuildConfiguration *bc) cons
     return new ProcessStep(static_cast<ProcessStep *>(bs), bc);
 }
 
-QStringList ProcessStepFactory::canCreateForProject(Project *pro) const
+QStringList ProcessStepFactory::canCreateForProject(BuildConfiguration *bc) const
 {
-    Q_UNUSED(pro)
+    Q_UNUSED(bc)
     return QStringList()<<"projectexplorer.processstep";
 }
 QString ProcessStepFactory::displayNameForName(const QString &name) const
diff --git a/src/plugins/projectexplorer/processstep.h b/src/plugins/projectexplorer/processstep.h
index e7e74d0267b..2dc0398ad78 100644
--- a/src/plugins/projectexplorer/processstep.h
+++ b/src/plugins/projectexplorer/processstep.h
@@ -47,7 +47,7 @@ public:
     virtual bool canCreate(const QString &name) const;
     virtual BuildStep *create(BuildConfiguration *bc, const QString &name) const;
     virtual BuildStep *clone(BuildStep *bs, BuildConfiguration *bc) const;
-    virtual QStringList canCreateForProject(Project *pro) const;
+    virtual QStringList canCreateForProject(BuildConfiguration *pro) const;
     virtual QString displayNameForName(const QString &name) const;
 };
 
diff --git a/src/plugins/qt4projectmanager/makestep.cpp b/src/plugins/qt4projectmanager/makestep.cpp
index 4f2aba4aa15..77280b2498b 100644
--- a/src/plugins/qt4projectmanager/makestep.cpp
+++ b/src/plugins/qt4projectmanager/makestep.cpp
@@ -335,9 +335,9 @@ ProjectExplorer::BuildStep *MakeStepFactory::clone(ProjectExplorer::BuildStep *b
     return new MakeStep(static_cast<MakeStep *>(bs), bc);
 }
 
-QStringList MakeStepFactory::canCreateForProject(ProjectExplorer::Project *pro) const
+QStringList MakeStepFactory::canCreateForProject(ProjectExplorer::BuildConfiguration *pro) const
 {
-    if (qobject_cast<Qt4Project *>(pro))
+    if (qobject_cast<Qt4BuildConfiguration *>(pro))
         return QStringList() << Constants::MAKESTEP;
     else
         return QStringList();
diff --git a/src/plugins/qt4projectmanager/makestep.h b/src/plugins/qt4projectmanager/makestep.h
index 471316897de..8040d98c2cb 100644
--- a/src/plugins/qt4projectmanager/makestep.h
+++ b/src/plugins/qt4projectmanager/makestep.h
@@ -54,7 +54,7 @@ public:
     bool canCreate(const QString & name) const;
     ProjectExplorer::BuildStep *create(ProjectExplorer::BuildConfiguration *bc, const QString & name) const;
     ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStep *bs, ProjectExplorer::BuildConfiguration *bc) const;
-    QStringList canCreateForProject(ProjectExplorer::Project *pro) const;
+    QStringList canCreateForProject(ProjectExplorer::BuildConfiguration *bc) const;
     QString displayNameForName(const QString &name) const;
 };
 }
diff --git a/src/plugins/qt4projectmanager/qmakestep.cpp b/src/plugins/qt4projectmanager/qmakestep.cpp
index 9a8181e9641..c5c914c031e 100644
--- a/src/plugins/qt4projectmanager/qmakestep.cpp
+++ b/src/plugins/qt4projectmanager/qmakestep.cpp
@@ -377,9 +377,11 @@ ProjectExplorer::BuildStep *QMakeStepFactory::clone(ProjectExplorer::BuildStep *
     return new QMakeStep(static_cast<QMakeStep *>(bs), bc);
 }
 
-QStringList QMakeStepFactory::canCreateForProject(ProjectExplorer::Project *) const
+QStringList QMakeStepFactory::canCreateForProject(ProjectExplorer::BuildConfiguration *bc) const
 {
-    return QStringList() << Constants::QMAKESTEP;
+    if (qobject_cast<Qt4BuildConfiguration *>(bc))
+        return QStringList() << Constants::QMAKESTEP;
+    return QStringList();
 }
 
 QString QMakeStepFactory::displayNameForName(const QString &name) const
diff --git a/src/plugins/qt4projectmanager/qmakestep.h b/src/plugins/qt4projectmanager/qmakestep.h
index 2e08953e246..fd249756f3f 100644
--- a/src/plugins/qt4projectmanager/qmakestep.h
+++ b/src/plugins/qt4projectmanager/qmakestep.h
@@ -54,7 +54,7 @@ public:
     bool canCreate(const QString & name) const;
     ProjectExplorer::BuildStep *create(ProjectExplorer::BuildConfiguration *bc, const QString & name) const;
     ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStep *bs, ProjectExplorer::BuildConfiguration *bc) const;
-    QStringList canCreateForProject(ProjectExplorer::Project *pro) const;
+    QStringList canCreateForProject(ProjectExplorer::BuildConfiguration *bc) const;
     QString displayNameForName(const QString &name) const;
 };
 }
-- 
GitLab