diff options
author | hjk <hjk@qt.io> | 2020-08-18 11:28:40 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2020-08-18 17:03:59 +0000 |
commit | fb262ce24d3b534cd7390f4ff72a94f6de1c051a (patch) | |
tree | 1980c4151a6b23737d4be9937742eeb936274765 /src/plugins/projectexplorer | |
parent | d3c31917aa245c2f447cd7fa524d92398b5c7191 (diff) | |
download | qt-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.cpp | 7 | ||||
-rw-r--r-- | src/plugins/projectexplorer/buildstep.h | 2 | ||||
-rw-r--r-- | src/plugins/projectexplorer/buildsteplist.cpp | 4 | ||||
-rw-r--r-- | src/plugins/projectexplorer/buildstepspage.cpp | 47 |
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); + }); } } |