ProjectExplorer: Move part of deploy config initial step handling

... to BuildStepList so it can be re-used in BuildConfiguration
when attempting to set up a similar system to specify initial
population of step lists.

Change-Id: I2301feb2b67a80a9d9e526e4065b4d4487b7fdbd
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2019-01-22 18:17:30 +01:00
parent a2224881b4
commit c04c5c1575
4 changed files with 18 additions and 10 deletions

View File

@@ -162,6 +162,14 @@ void BuildStepList::insertStep(int position, Core::Id stepId)
QTC_ASSERT(false, qDebug() << "No factory for build step" << stepId.toString() << "found."); QTC_ASSERT(false, qDebug() << "No factory for build step" << stepId.toString() << "found.");
} }
void BuildStepList::appendSteps(const QList<StepCreationInfo> &infos)
{
for (const StepCreationInfo &info : infos) {
if (!info.condition || info.condition(target()))
appendStep(info.stepId);
}
}
bool BuildStepList::removeStep(int position) bool BuildStepList::removeStep(int position)
{ {
BuildStep *bs = at(position); BuildStep *bs = at(position);

View File

@@ -76,6 +76,13 @@ public:
void insertStep(int position, Core::Id id); void insertStep(int position, Core::Id id);
void appendStep(BuildStep *step) { insertStep(count(), step); } void appendStep(BuildStep *step) { insertStep(count(), step); }
void appendStep(Core::Id stepId) { insertStep(count(), stepId); } void appendStep(Core::Id stepId) { insertStep(count(), stepId); }
struct StepCreationInfo {
Core::Id stepId;
std::function<bool(Target *)> condition; // unset counts as unrestricted
};
void appendSteps(const QList<StepCreationInfo> &infos);
bool removeStep(int position); bool removeStep(int position);
void moveStepUp(int position); void moveStepUp(int position);
BuildStep *at(int position); BuildStep *at(int position);

View File

@@ -197,10 +197,7 @@ DeployConfiguration *DeployConfigurationFactory::create(Target *parent)
QTC_ASSERT(canHandle(parent), return nullptr); QTC_ASSERT(canHandle(parent), return nullptr);
DeployConfiguration *dc = createDeployConfiguration(parent); DeployConfiguration *dc = createDeployConfiguration(parent);
QTC_ASSERT(dc, return nullptr); QTC_ASSERT(dc, return nullptr);
for (const DeployStepCreationInfo &info : qAsConst(m_initialSteps)) { dc->stepList()->appendSteps(m_initialSteps);
if (!info.condition || info.condition(parent))
dc->stepList()->appendStep(info.deployStepId);
}
return dc; return dc;
} }

View File

@@ -102,15 +102,11 @@ protected:
void setConfigBaseId(Core::Id deployConfigBaseId); void setConfigBaseId(Core::Id deployConfigBaseId);
private: private:
struct DeployStepCreationInfo { DeployConfiguration *createDeployConfiguration(Target *target);
Core::Id deployStepId;
std::function<bool(Target *)> condition; // unset counts as unrestricted
};
DeployConfiguration *createDeployConfiguration(Target *t);
Core::Id m_deployConfigBaseId; Core::Id m_deployConfigBaseId;
Core::Id m_supportedProjectType; Core::Id m_supportedProjectType;
QList<Core::Id> m_supportedTargetDeviceTypes; QList<Core::Id> m_supportedTargetDeviceTypes;
QList<DeployStepCreationInfo> m_initialSteps; QList<BuildStepList::StepCreationInfo> m_initialSteps;
QString m_defaultDisplayName; QString m_defaultDisplayName;
std::function<NamedWidget *(Target *)> m_configWidgetCreator; std::function<NamedWidget *(Target *)> m_configWidgetCreator;
}; };