summaryrefslogtreecommitdiff
path: root/src/plugins/projectexplorer
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2020-08-18 11:28:40 +0200
committerhjk <hjk@qt.io>2020-08-18 17:03:59 +0000
commitfb262ce24d3b534cd7390f4ff72a94f6de1c051a (patch)
tree1980c4151a6b23737d4be9937742eeb936274765 /src/plugins/projectexplorer
parentd3c31917aa245c2f447cd7fa524d92398b5c7191 (diff)
downloadqt-creator-fb262ce24d3b534cd7390f4ff72a94f6de1c051a.tar.gz
ProjectExplorer: Streamline build step creation via menu
Change-Id: I801031d5a3d3ad8d8e5cf61766ca4e9791d7a96c Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/plugins/projectexplorer')
-rw-r--r--src/plugins/projectexplorer/buildstep.cpp7
-rw-r--r--src/plugins/projectexplorer/buildstep.h2
-rw-r--r--src/plugins/projectexplorer/buildsteplist.cpp4
-rw-r--r--src/plugins/projectexplorer/buildstepspage.cpp47
4 files changed, 24 insertions, 36 deletions
diff --git a/src/plugins/projectexplorer/buildstep.cpp b/src/plugins/projectexplorer/buildstep.cpp
index 39a2e647fd..cc8c0fdb57 100644
--- a/src/plugins/projectexplorer/buildstep.cpp
+++ b/src/plugins/projectexplorer/buildstep.cpp
@@ -463,12 +463,9 @@ Utils::Id BuildStepFactory::stepId() const
return m_info.id;
}
-BuildStep *BuildStepFactory::create(BuildStepList *parent, Utils::Id id)
+BuildStep *BuildStepFactory::create(BuildStepList *parent)
{
- BuildStep *bs = nullptr;
- if (id == m_info.id)
- bs = m_info.creator(parent);
- return bs;
+ return m_info.creator(parent);
}
BuildStep *BuildStepFactory::restore(BuildStepList *parent, const QVariantMap &map)
diff --git a/src/plugins/projectexplorer/buildstep.h b/src/plugins/projectexplorer/buildstep.h
index f736e2474e..30698ca702 100644
--- a/src/plugins/projectexplorer/buildstep.h
+++ b/src/plugins/projectexplorer/buildstep.h
@@ -186,7 +186,7 @@ public:
BuildStepInfo stepInfo() const;
Utils::Id stepId() const;
- BuildStep *create(BuildStepList *parent, Utils::Id id);
+ BuildStep *create(BuildStepList *parent);
BuildStep *restore(BuildStepList *parent, const QVariantMap &map);
bool canHandle(BuildStepList *bsl) const;
diff --git a/src/plugins/projectexplorer/buildsteplist.cpp b/src/plugins/projectexplorer/buildsteplist.cpp
index 3fd22f8c4e..759deecead 100644
--- a/src/plugins/projectexplorer/buildsteplist.cpp
+++ b/src/plugins/projectexplorer/buildsteplist.cpp
@@ -167,7 +167,9 @@ void BuildStepList::insertStep(int position, BuildStep *step)
void BuildStepList::insertStep(int position, Utils::Id stepId)
{
for (BuildStepFactory *factory : BuildStepFactory::allBuildStepFactories()) {
- if (BuildStep *step = factory->create(this, stepId)) {
+ if (factory->stepId() == stepId) {
+ BuildStep *step = factory->create(this);
+ QTC_ASSERT(step, break);
insertStep(position, step);
return;
}
diff --git a/src/plugins/projectexplorer/buildstepspage.cpp b/src/plugins/projectexplorer/buildstepspage.cpp
index 5d44ba143a..3fcdc9ea73 100644
--- a/src/plugins/projectexplorer/buildstepspage.cpp
+++ b/src/plugins/projectexplorer/buildstepspage.cpp
@@ -253,37 +253,26 @@ void BuildStepListWidget::updateEnabledState()
void BuildStepListWidget::updateAddBuildStepMenu()
{
- QMap<QString, QPair<Utils::Id, BuildStepFactory *> > map;
- //Build up a list of possible steps and save map the display names to the (internal) name and factories.
- for (BuildStepFactory *factory : BuildStepFactory::allBuildStepFactories()) {
- if (factory->canHandle(m_buildStepList)) {
- const BuildStepInfo &info = factory->stepInfo();
- if (info.flags & BuildStepInfo::Uncreatable)
- continue;
- if ((info.flags & BuildStepInfo::UniqueStep) && m_buildStepList->contains(info.id))
- continue;
- map.insert(info.displayName, qMakePair(info.id, factory));
- }
- }
-
- // Ask the user which one to add
QMenu *menu = m_addButton->menu();
menu->clear();
- if (!map.isEmpty()) {
- QMap<QString, QPair<Utils::Id, BuildStepFactory *> >::const_iterator it, end;
- end = map.constEnd();
- for (it = map.constBegin(); it != end; ++it) {
- QAction *action = menu->addAction(it.key());
- BuildStepFactory *factory = it.value().second;
- Utils::Id id = it.value().first;
-
- connect(action, &QAction::triggered, [id, factory, this]() {
- BuildStep *newStep = factory->create(m_buildStepList, id);
- QTC_ASSERT(newStep, return);
- int pos = m_buildStepList->count();
- m_buildStepList->insertStep(pos, newStep);
- });
- }
+
+ for (BuildStepFactory *factory : BuildStepFactory::allBuildStepFactories()) {
+ if (!factory->canHandle(m_buildStepList))
+ continue;
+
+ const BuildStepInfo &info = factory->stepInfo();
+ if (info.flags & BuildStepInfo::Uncreatable)
+ continue;
+
+ if ((info.flags & BuildStepInfo::UniqueStep) && m_buildStepList->contains(info.id))
+ continue;
+
+ QAction *action = menu->addAction(info.displayName);
+ connect(action, &QAction::triggered, this, [factory, this] {
+ BuildStep *newStep = factory->create(m_buildStepList);
+ QTC_ASSERT(newStep, return);
+ m_buildStepList->appendStep(newStep);
+ });
}
}