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()
{
registerStep<NimCompilerCleanStep>(Constants::C_NIMCOMPILERCLEANSTEP_ID);
setFlags(BuildStepInfo::Unclonable);
setFlags(BuildStep::Unclonable);
setSupportedStepList(ProjectExplorer::Constants::BUILDSTEPS_CLEAN);
setSupportedConfiguration(Constants::C_NIMBUILDCONFIGURATION_ID);
setRepeatable(false);

View File

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

View File

@@ -76,6 +76,12 @@ public:
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;
void setWidgetExpandedByDefault(bool widgetExpandedByDefault);
@@ -136,23 +142,6 @@ private:
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
{
public:
@@ -163,22 +152,24 @@ public:
static const QList<BuildStepFactory *> allBuildStepFactories();
BuildStepInfo stepInfo() const;
BuildStep::Flags stepFlags() const;
Utils::Id stepId() const;
BuildStep *create(BuildStepList *parent);
BuildStep *restore(BuildStepList *parent, const QVariantMap &map);
bool canHandle(BuildStepList *bsl) const;
QString displayName() const;
protected:
using BuildStepCreator = std::function<BuildStep *(BuildStepList *)>;
template <class BuildStepType>
void registerStep(Utils::Id id)
{
QTC_CHECK(!m_info.creator);
m_info.id = id;
m_info.creator = [id](BuildStepList *bsl) { return new BuildStepType(bsl, id); };
QTC_CHECK(!m_creator);
m_stepId = id;
m_creator = [id](BuildStepList *bsl) { return new BuildStepType(bsl, id); };
}
void setSupportedStepList(Utils::Id id);
@@ -189,10 +180,13 @@ protected:
void setSupportedDeviceTypes(const QList<Utils::Id> &ids);
void setRepeatable(bool on) { m_isRepeatable = on; }
void setDisplayName(const QString &displayName);
void setFlags(BuildStepInfo::Flags flags);
void setFlags(BuildStep::Flags flags);
private:
BuildStepInfo m_info;
Utils::Id m_stepId;
QString m_displayName;
BuildStep::Flags m_flags = {};
BuildStepCreator m_creator;
Utils::Id m_supportedProjectType;
QList<Utils::Id> m_supportedDeviceTypes;

View File

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

View File

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

View File

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