ProjectExplorer: Inline BuildStepInfo

Was a more or less arbitrary subset of BuildStepFactory data.

Change-Id: Ie37735532da8a15a22d5f92e1b45d6ed5f7758fc
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2023-03-28 09:37:02 +02:00
parent 62b1795fb0
commit 746f0f93be
6 changed files with 39 additions and 40 deletions

View File

@@ -110,7 +110,7 @@ bool NimCompilerCleanStep::removeOutFilePath()
NimCompilerCleanStepFactory::NimCompilerCleanStepFactory() NimCompilerCleanStepFactory::NimCompilerCleanStepFactory()
{ {
registerStep<NimCompilerCleanStep>(Constants::C_NIMCOMPILERCLEANSTEP_ID); registerStep<NimCompilerCleanStep>(Constants::C_NIMCOMPILERCLEANSTEP_ID);
setFlags(BuildStepInfo::Unclonable); setFlags(BuildStep::Unclonable);
setSupportedStepList(ProjectExplorer::Constants::BUILDSTEPS_CLEAN); setSupportedStepList(ProjectExplorer::Constants::BUILDSTEPS_CLEAN);
setSupportedConfiguration(Constants::C_NIMBUILDCONFIGURATION_ID); setSupportedConfiguration(Constants::C_NIMBUILDCONFIGURATION_ID);
setRepeatable(false); setRepeatable(false);

View File

@@ -361,7 +361,7 @@ bool BuildStepFactory::canHandle(BuildStepList *bsl) const
return false; return false;
} }
if (!m_isRepeatable && bsl->contains(m_info.id)) if (!m_isRepeatable && bsl->contains(m_stepId))
return false; return false;
if (m_supportedConfiguration.isValid()) { if (m_supportedConfiguration.isValid()) {
@@ -375,14 +375,19 @@ bool BuildStepFactory::canHandle(BuildStepList *bsl) const
return true; return true;
} }
void BuildStepFactory::setDisplayName(const QString &displayName) QString BuildStepFactory::displayName() const
{ {
m_info.displayName = displayName; return m_displayName;
} }
void BuildStepFactory::setFlags(BuildStepInfo::Flags flags) void BuildStepFactory::setDisplayName(const QString &displayName)
{ {
m_info.flags = flags; m_displayName = displayName;
}
void BuildStepFactory::setFlags(BuildStep::Flags flags)
{
m_flags = flags;
} }
void BuildStepFactory::setSupportedStepList(Id id) void BuildStepFactory::setSupportedStepList(Id id)
@@ -415,20 +420,20 @@ void BuildStepFactory::setSupportedDeviceTypes(const QList<Id> &ids)
m_supportedDeviceTypes = ids; m_supportedDeviceTypes = ids;
} }
BuildStepInfo BuildStepFactory::stepInfo() const BuildStep::Flags BuildStepFactory::stepFlags() const
{ {
return m_info; return m_flags;
} }
Id BuildStepFactory::stepId() const Id BuildStepFactory::stepId() const
{ {
return m_info.id; return m_stepId;
} }
BuildStep *BuildStepFactory::create(BuildStepList *parent) BuildStep *BuildStepFactory::create(BuildStepList *parent)
{ {
BuildStep *step = m_info.creator(parent); BuildStep *step = m_creator(parent);
step->setDefaultDisplayName(m_info.displayName); step->setDefaultDisplayName(m_displayName);
return step; return step;
} }

View File

@@ -76,6 +76,12 @@ public:
enum OutputNewlineSetting { DoAppendNewline, DontAppendNewline }; enum OutputNewlineSetting { DoAppendNewline, DontAppendNewline };
enum Flags {
Uncreatable = 1 << 0,
Unclonable = 1 << 1,
UniqueStep = 1 << 8 // Can't be used twice in a BuildStepList
};
bool widgetExpandedByDefault() const; bool widgetExpandedByDefault() const;
void setWidgetExpandedByDefault(bool widgetExpandedByDefault); void setWidgetExpandedByDefault(bool widgetExpandedByDefault);
@@ -136,23 +142,6 @@ private:
QString m_summaryText; QString m_summaryText;
}; };
class PROJECTEXPLORER_EXPORT BuildStepInfo
{
public:
enum Flags {
Uncreatable = 1 << 0,
Unclonable = 1 << 1,
UniqueStep = 1 << 8 // Can't be used twice in a BuildStepList
};
using BuildStepCreator = std::function<BuildStep *(BuildStepList *)>;
Utils::Id id;
QString displayName;
Flags flags = Flags();
BuildStepCreator creator;
};
class PROJECTEXPLORER_EXPORT BuildStepFactory class PROJECTEXPLORER_EXPORT BuildStepFactory
{ {
public: public:
@@ -163,22 +152,24 @@ public:
static const QList<BuildStepFactory *> allBuildStepFactories(); static const QList<BuildStepFactory *> allBuildStepFactories();
BuildStepInfo stepInfo() const; BuildStep::Flags stepFlags() const;
Utils::Id stepId() const; Utils::Id stepId() const;
BuildStep *create(BuildStepList *parent); BuildStep *create(BuildStepList *parent);
BuildStep *restore(BuildStepList *parent, const QVariantMap &map); BuildStep *restore(BuildStepList *parent, const QVariantMap &map);
bool canHandle(BuildStepList *bsl) const; bool canHandle(BuildStepList *bsl) const;
QString displayName() const;
protected: protected:
using BuildStepCreator = std::function<BuildStep *(BuildStepList *)>; using BuildStepCreator = std::function<BuildStep *(BuildStepList *)>;
template <class BuildStepType> template <class BuildStepType>
void registerStep(Utils::Id id) void registerStep(Utils::Id id)
{ {
QTC_CHECK(!m_info.creator); QTC_CHECK(!m_creator);
m_info.id = id; m_stepId = id;
m_info.creator = [id](BuildStepList *bsl) { return new BuildStepType(bsl, id); }; m_creator = [id](BuildStepList *bsl) { return new BuildStepType(bsl, id); };
} }
void setSupportedStepList(Utils::Id id); void setSupportedStepList(Utils::Id id);
@@ -189,10 +180,13 @@ protected:
void setSupportedDeviceTypes(const QList<Utils::Id> &ids); void setSupportedDeviceTypes(const QList<Utils::Id> &ids);
void setRepeatable(bool on) { m_isRepeatable = on; } void setRepeatable(bool on) { m_isRepeatable = on; }
void setDisplayName(const QString &displayName); void setDisplayName(const QString &displayName);
void setFlags(BuildStepInfo::Flags flags); void setFlags(BuildStep::Flags flags);
private: private:
BuildStepInfo m_info; Utils::Id m_stepId;
QString m_displayName;
BuildStep::Flags m_flags = {};
BuildStepCreator m_creator;
Utils::Id m_supportedProjectType; Utils::Id m_supportedProjectType;
QList<Utils::Id> m_supportedDeviceTypes; QList<Utils::Id> m_supportedDeviceTypes;

View File

@@ -209,14 +209,14 @@ void BuildStepListWidget::updateAddBuildStepMenu()
if (!factory->canHandle(m_buildStepList)) if (!factory->canHandle(m_buildStepList))
continue; continue;
const BuildStepInfo &info = factory->stepInfo(); const BuildStep::Flags flags = factory->stepFlags();
if (info.flags & BuildStepInfo::Uncreatable) if (flags & BuildStep::Uncreatable)
continue; continue;
if ((info.flags & BuildStepInfo::UniqueStep) && m_buildStepList->contains(info.id)) if ((flags & BuildStep::UniqueStep) && m_buildStepList->contains(factory->stepId()))
continue; continue;
QAction *action = menu->addAction(info.displayName); QAction *action = menu->addAction(factory->displayName());
connect(action, &QAction::triggered, this, [factory, this] { connect(action, &QAction::triggered, this, [factory, this] {
BuildStep *newStep = factory->create(m_buildStepList); BuildStep *newStep = factory->create(m_buildStepList);
QTC_ASSERT(newStep, return); QTC_ASSERT(newStep, return);

View File

@@ -42,7 +42,7 @@ PySideBuildStepFactory::PySideBuildStepFactory()
registerStep<PySideBuildStep>(pySideBuildStep); registerStep<PySideBuildStep>(pySideBuildStep);
setSupportedProjectType(PythonProjectId); setSupportedProjectType(PythonProjectId);
setDisplayName(Tr::tr("Run PySide6 project tool")); setDisplayName(Tr::tr("Run PySide6 project tool"));
setFlags(BuildStepInfo::UniqueStep); setFlags(BuildStep::UniqueStep);
} }
PySideBuildStep::PySideBuildStep(BuildStepList *bsl, Id id) PySideBuildStep::PySideBuildStep(BuildStepList *bsl, Id id)

View File

@@ -744,7 +744,7 @@ QMakeStepFactory::QMakeStepFactory()
setSupportedStepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD); setSupportedStepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD);
//: QMakeStep default display name //: QMakeStep default display name
setDisplayName(::QmakeProjectManager::Tr::tr("qmake")); // Fully qualifying for lupdate setDisplayName(::QmakeProjectManager::Tr::tr("qmake")); // Fully qualifying for lupdate
setFlags(BuildStepInfo::UniqueStep); setFlags(BuildStep::UniqueStep);
} }
QMakeStepConfig::TargetArchConfig QMakeStepConfig::targetArchFor(const Abi &, const QtVersion *) QMakeStepConfig::TargetArchConfig QMakeStepConfig::targetArchFor(const Abi &, const QtVersion *)