forked from qt-creator/qt-creator
ProjectExplorer: Move BuildStepWidget::summary etc to BuildStep
The step is the source of information anyway, and available at the only place of use. No need to copy that over to the widget, neither for keeping it up-to-date there when the mechanism is already available in the step itself. This creates quite some potential for the simplification of the various createConfigWidget implementations in follow-up patches. Change-Id: I4474665f194a1ff7c5792ad086ed53c8d3ce13e6 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -159,9 +159,6 @@ private:
|
||||
AndroidBuildApkWidget::AndroidBuildApkWidget(AndroidBuildApkStep *step)
|
||||
: BuildStepConfigWidget(step), m_step(step)
|
||||
{
|
||||
setDisplayName("<b>" + tr("Build Android APK") + "</b>");
|
||||
setSummaryText(displayName());
|
||||
|
||||
auto vbox = new QVBoxLayout(this);
|
||||
vbox->addWidget(createSignPackageGroup());
|
||||
vbox->addWidget(createApplicationGroup());
|
||||
@@ -493,6 +490,8 @@ AndroidBuildApkStep::AndroidBuildApkStep(BuildStepList *parent, Utils::Id id)
|
||||
sdkManager()->latestAndroidSdkPlatform()))
|
||||
{
|
||||
setImmutable(true);
|
||||
setDisplayName("<b>" + tr("Build Android APK") + "</b>");
|
||||
setSummaryText(displayName());
|
||||
}
|
||||
|
||||
bool AndroidBuildApkStep::init()
|
||||
|
||||
@@ -477,8 +477,8 @@ BuildStepConfigWidget *AndroidDeployQtStep::createConfigWidget()
|
||||
{
|
||||
auto widget = new BuildStepConfigWidget(this);
|
||||
|
||||
widget->setDisplayName(QString("<b>%1</b>").arg(displayName()));
|
||||
widget->setSummaryText(displayName());
|
||||
setDisplayName(QString("<b>%1</b>").arg(displayName()));
|
||||
setSummaryText(displayName());
|
||||
|
||||
auto uninstallPreviousCheckBox = new QCheckBox(widget);
|
||||
uninstallPreviousCheckBox->setText(tr("Uninstall the existing app first"));
|
||||
|
||||
@@ -436,14 +436,14 @@ BuildStepConfigWidget *CMakeBuildStep::createConfigWidget()
|
||||
{
|
||||
auto widget = new BuildStepConfigWidget(this);
|
||||
|
||||
auto updateDetails = [this, widget] {
|
||||
auto updateDetails = [this] {
|
||||
ProcessParameters param;
|
||||
setupProcessParameters(¶m);
|
||||
param.setCommandLine(cmakeCommand());
|
||||
widget->setSummaryText(param.summary(displayName()));
|
||||
setSummaryText(param.summary(displayName()));
|
||||
};
|
||||
|
||||
widget->setDisplayName(tr("Build", "ConfigWidget display name."));
|
||||
setDisplayName(tr("Build", "ConfigWidget display name."));
|
||||
|
||||
LayoutBuilder builder(widget);
|
||||
builder.addRow(m_cmakeArguments);
|
||||
|
||||
@@ -116,10 +116,10 @@ BuildStepConfigWidget *IosBuildStep::createConfigWidget()
|
||||
|
||||
setDisplayName(tr("iOS build", "iOS BuildStep display name."));
|
||||
|
||||
auto updateDetails = [this, widget] {
|
||||
auto updateDetails = [this] {
|
||||
ProcessParameters param;
|
||||
setupProcessParameters(¶m);
|
||||
widget->setSummaryText(param.summary(displayName()));
|
||||
setSummaryText(param.summary(displayName()));
|
||||
};
|
||||
|
||||
updateDetails();
|
||||
|
||||
@@ -235,11 +235,11 @@ BuildStepConfigWidget *IosDeployStep::createConfigWidget()
|
||||
auto widget = new BuildStepConfigWidget(this);
|
||||
|
||||
widget->setObjectName("IosDeployStepWidget");
|
||||
widget->setDisplayName(QString("<b>%1</b>").arg(displayName()));
|
||||
widget->setSummaryText(widget->displayName());
|
||||
setDisplayName(QString("<b>%1</b>").arg(displayName()));
|
||||
setSummaryText(displayName());
|
||||
|
||||
connect(this, &ProjectConfiguration::displayNameChanged,
|
||||
widget, &BuildStepConfigWidget::updateSummary);
|
||||
this, &BuildStep::updateSummary);
|
||||
|
||||
return widget;
|
||||
}
|
||||
|
||||
@@ -228,10 +228,10 @@ BuildStepConfigWidget *IosDsymBuildStep::createConfigWidget()
|
||||
gridLayout->addWidget(argumentsTextEdit, 1, 2, 2, 1);
|
||||
gridLayout->addWidget(resetDefaultsButton, 2, 3, 1, 1);
|
||||
|
||||
auto updateDetails = [this, widget] {
|
||||
auto updateDetails = [this] {
|
||||
ProcessParameters param;
|
||||
setupProcessParameters(¶m);
|
||||
widget->setSummaryText(param.summary(displayName()));
|
||||
setSummaryText(param.summary(displayName()));
|
||||
};
|
||||
|
||||
updateDetails();
|
||||
|
||||
@@ -73,7 +73,7 @@ NinjaBuildStep::NinjaBuildStep(ProjectExplorer::BuildStepList *bsl, Utils::Id id
|
||||
BuildStepConfigWidget *NinjaBuildStep::createConfigWidget()
|
||||
{
|
||||
auto widget = new BuildStepConfigWidget{this};
|
||||
widget->setDisplayName(tr("Build", "MesonProjectManager::MesonBuildStepConfigWidget display name."));
|
||||
setDisplayName(tr("Build", "MesonProjectManager::MesonBuildStepConfigWidget display name."));
|
||||
|
||||
auto buildTargetsList = new QListWidget(widget);
|
||||
buildTargetsList->setMinimumHeight(200);
|
||||
@@ -91,10 +91,10 @@ BuildStepConfigWidget *NinjaBuildStep::createConfigWidget()
|
||||
formLayout->addRow(tr("Tool arguments:"), toolArguments);
|
||||
formLayout->addRow(tr("Targets:"), wrapper);
|
||||
|
||||
auto updateDetails = [this, widget] {
|
||||
auto updateDetails = [this] {
|
||||
ProcessParameters param;
|
||||
setupProcessParameters(¶m);
|
||||
widget->setSummaryText(param.summary(displayName()));
|
||||
setSummaryText(param.summary(displayName()));
|
||||
};
|
||||
|
||||
auto updateTargetList = [this, buildTargetsList, updateDetails] {
|
||||
|
||||
@@ -124,10 +124,10 @@ BuildStepConfigWidget *NimbleTaskStep::createConfigWidget()
|
||||
|
||||
connect(buildSystem, &NimbleBuildSystem::tasksChanged, this, &NimbleTaskStep::updateTaskList);
|
||||
|
||||
connect(m_taskName, &StringAspect::changed, widget, &BuildStepConfigWidget::recreateSummary);
|
||||
connect(m_taskArgs, &StringAspect::changed, widget, &BuildStepConfigWidget::recreateSummary);
|
||||
connect(m_taskName, &StringAspect::changed, this, &BuildStep::recreateSummary);
|
||||
connect(m_taskArgs, &StringAspect::changed, this, &BuildStep::recreateSummary);
|
||||
|
||||
widget->setSummaryUpdater([this] {
|
||||
setSummaryUpdater([this] {
|
||||
return QString("<b>%1:</b> nimble %2 %3")
|
||||
.arg(displayName(), m_taskName->value(), m_taskArgs->value());
|
||||
});
|
||||
|
||||
@@ -111,8 +111,8 @@ BuildStepConfigWidget *NimCompilerBuildStep::createConfigWidget()
|
||||
{
|
||||
auto widget = new BuildStepConfigWidget(this);
|
||||
|
||||
widget->setDisplayName(tr("Nim build step"));
|
||||
widget->setSummaryText(tr("Nim build step"));
|
||||
setDisplayName(tr("Nim build step"));
|
||||
setSummaryText(tr("Nim build step"));
|
||||
|
||||
auto targetComboBox = new QComboBox(widget);
|
||||
|
||||
|
||||
@@ -134,6 +134,10 @@ BuildStep::BuildStep(BuildStepList *bsl, Utils::Id id) :
|
||||
ProjectConfiguration(bsl, id)
|
||||
{
|
||||
QTC_CHECK(bsl->target() && bsl->target() == this->target());
|
||||
connect(this, &ProjectConfiguration::displayNameChanged,
|
||||
this, &BuildStep::updateSummary);
|
||||
// m_displayName = step->displayName();
|
||||
// m_summaryText = "<b>" + m_displayName + "</b>";
|
||||
}
|
||||
|
||||
BuildStep::~BuildStep()
|
||||
@@ -162,13 +166,12 @@ BuildStepConfigWidget *BuildStep::createConfigWidget()
|
||||
for (BaseAspect *aspect : qAsConst(m_aspects)) {
|
||||
if (aspect->isVisible())
|
||||
aspect->addToLayout(builder.finishRow());
|
||||
connect(aspect, &BaseAspect::changed, this, &BuildStep::recreateSummary);
|
||||
}
|
||||
}
|
||||
|
||||
connect(buildConfiguration(), &BuildConfiguration::buildDirectoryChanged,
|
||||
widget, &BuildStepConfigWidget::recreateSummary);
|
||||
|
||||
widget->setSummaryUpdater(m_summaryUpdater);
|
||||
this, &BuildStep::recreateSummary);
|
||||
|
||||
if (m_addMacroExpander)
|
||||
VariableChooser::addSupportForChildWidgets(widget, macroExpander());
|
||||
@@ -340,11 +343,6 @@ void BuildStep::addMacroExpander()
|
||||
m_addMacroExpander = true;
|
||||
}
|
||||
|
||||
void BuildStep::setSummaryUpdater(const std::function<QString ()> &summaryUpdater)
|
||||
{
|
||||
m_summaryUpdater = summaryUpdater;
|
||||
}
|
||||
|
||||
void BuildStep::setEnabled(bool b)
|
||||
{
|
||||
if (m_enabled == b)
|
||||
@@ -485,36 +483,19 @@ BuildStep *BuildStepFactory::restore(BuildStepList *parent, const QVariantMap &m
|
||||
return bs;
|
||||
}
|
||||
|
||||
// BuildStepConfigWidget
|
||||
|
||||
BuildStepConfigWidget::BuildStepConfigWidget(BuildStep *step)
|
||||
BuildStepConfigWidget::BuildStepConfigWidget(BuildStep *)
|
||||
{
|
||||
m_displayName = step->displayName();
|
||||
m_summaryText = "<b>" + m_displayName + "</b>";
|
||||
connect(step, &ProjectConfiguration::displayNameChanged,
|
||||
this, &BuildStepConfigWidget::updateSummary);
|
||||
for (auto aspect : step->aspects()) {
|
||||
connect(aspect, &BaseAspect::changed,
|
||||
this, &BuildStepConfigWidget::recreateSummary);
|
||||
}
|
||||
}
|
||||
|
||||
QString BuildStepConfigWidget::summaryText() const
|
||||
QString BuildStep::summaryText() const
|
||||
{
|
||||
if (m_summaryText.isEmpty())
|
||||
return QString("<b>%1</b>").arg(displayName());
|
||||
|
||||
return m_summaryText;
|
||||
}
|
||||
|
||||
QString BuildStepConfigWidget::displayName() const
|
||||
{
|
||||
return m_displayName;
|
||||
}
|
||||
|
||||
void BuildStepConfigWidget::setDisplayName(const QString &displayName)
|
||||
{
|
||||
m_displayName = displayName;
|
||||
}
|
||||
|
||||
void BuildStepConfigWidget::setSummaryText(const QString &summaryText)
|
||||
void BuildStep::setSummaryText(const QString &summaryText)
|
||||
{
|
||||
if (summaryText != m_summaryText) {
|
||||
m_summaryText = summaryText;
|
||||
@@ -522,13 +503,13 @@ void BuildStepConfigWidget::setSummaryText(const QString &summaryText)
|
||||
}
|
||||
}
|
||||
|
||||
void BuildStepConfigWidget::setSummaryUpdater(const std::function<QString()> &summaryUpdater)
|
||||
void BuildStep::setSummaryUpdater(const std::function<QString()> &summaryUpdater)
|
||||
{
|
||||
m_summaryUpdater = summaryUpdater;
|
||||
recreateSummary();
|
||||
}
|
||||
|
||||
void BuildStepConfigWidget::recreateSummary()
|
||||
void BuildStep::recreateSummary()
|
||||
{
|
||||
if (m_summaryUpdater)
|
||||
setSummaryText(m_summaryUpdater());
|
||||
|
||||
@@ -119,7 +119,14 @@ public:
|
||||
|
||||
void addMacroExpander();
|
||||
|
||||
QString summaryText() const;
|
||||
void setSummaryText(const QString &summaryText);
|
||||
|
||||
void recreateSummary();
|
||||
|
||||
signals:
|
||||
void updateSummary();
|
||||
|
||||
/// Adds a \p task to the Issues pane.
|
||||
/// Do note that for linking compile output with tasks, you should first emit the output
|
||||
/// and then emit the task. \p linkedOutput lines will be linked. And the last \p skipLines will
|
||||
@@ -155,6 +162,8 @@ private:
|
||||
bool m_addMacroExpander = false;
|
||||
Utils::optional<bool> m_wasExpanded;
|
||||
std::function<QString()> m_summaryUpdater;
|
||||
|
||||
QString m_summaryText;
|
||||
};
|
||||
|
||||
class PROJECTEXPLORER_EXPORT BuildStepInfo
|
||||
@@ -227,23 +236,6 @@ class PROJECTEXPLORER_EXPORT BuildStepConfigWidget : public QWidget
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit BuildStepConfigWidget(BuildStep *step);
|
||||
|
||||
QString summaryText() const;
|
||||
QString displayName() const;
|
||||
|
||||
void setDisplayName(const QString &displayName);
|
||||
void setSummaryText(const QString &summaryText);
|
||||
|
||||
void setSummaryUpdater(const std::function<QString()> &summaryUpdater);
|
||||
void recreateSummary();
|
||||
|
||||
signals:
|
||||
void updateSummary();
|
||||
|
||||
private:
|
||||
QString m_displayName;
|
||||
QString m_summaryText;
|
||||
std::function<QString()> m_summaryUpdater;
|
||||
};
|
||||
|
||||
} // namespace ProjectExplorer
|
||||
|
||||
@@ -181,7 +181,7 @@ BuildStepsWidgetData::BuildStepsWidgetData(BuildStep *s) :
|
||||
|
||||
detailsWidget->setToolWidget(toolWidget);
|
||||
detailsWidget->setContentsMargins(0, 0, 0, 1);
|
||||
detailsWidget->setSummaryText(widget->summaryText());
|
||||
detailsWidget->setSummaryText(s->summaryText());
|
||||
}
|
||||
|
||||
BuildStepsWidgetData::~BuildStepsWidgetData()
|
||||
@@ -226,11 +226,11 @@ BuildStepListWidget::~BuildStepListWidget()
|
||||
|
||||
void BuildStepListWidget::updateSummary()
|
||||
{
|
||||
auto widget = qobject_cast<BuildStepConfigWidget *>(sender());
|
||||
if (widget) {
|
||||
auto step = qobject_cast<BuildStep *>(sender());
|
||||
if (step) {
|
||||
foreach (const BuildStepsWidgetData *s, m_buildStepsData) {
|
||||
if (s->widget == widget) {
|
||||
s->detailsWidget->setSummaryText(widget->summaryText());
|
||||
if (s->step == step) {
|
||||
s->detailsWidget->setSummaryText(step->summaryText());
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -285,7 +285,7 @@ void BuildStepListWidget::addBuildStep(int pos)
|
||||
|
||||
m_vbox->insertWidget(pos, s->detailsWidget);
|
||||
|
||||
connect(s->widget, &BuildStepConfigWidget::updateSummary,
|
||||
connect(s->step, &BuildStep::updateSummary,
|
||||
this, &BuildStepListWidget::updateSummary);
|
||||
|
||||
connect(s->step, &BuildStep::enabledChanged,
|
||||
|
||||
@@ -383,7 +383,7 @@ BuildStepConfigWidget *MakeStep::createConfigWidget()
|
||||
|
||||
VariableChooser::addSupportForChildWidgets(widget, macroExpander());
|
||||
|
||||
widget->setSummaryUpdater([this] {
|
||||
setSummaryUpdater([this] {
|
||||
const CommandLine make = effectiveMakeCommand(MakeStep::Display);
|
||||
if (make.executable().isEmpty())
|
||||
return tr("<b>Make:</b> %1").arg(MakeStep::msgNoMakeCommand());
|
||||
@@ -405,8 +405,7 @@ BuildStepConfigWidget *MakeStep::createConfigWidget()
|
||||
return param.summaryInWorkdir(displayName());
|
||||
});
|
||||
|
||||
auto updateDetails = [this, disableInSubDirsCheckBox, widget = QPointer<BuildStepConfigWidget>(widget)] {
|
||||
QTC_ASSERT(widget, return);
|
||||
auto updateDetails = [this, disableInSubDirsCheckBox] {
|
||||
const bool jobCountVisible = isJobCountSupported();
|
||||
m_userJobCountAspect->setVisible(jobCountVisible);
|
||||
m_overrideMakeflagsAspect->setVisible(jobCountVisible);
|
||||
@@ -418,7 +417,7 @@ BuildStepConfigWidget *MakeStep::createConfigWidget()
|
||||
&& !jobCountOverridesMakeflags());
|
||||
disableInSubDirsCheckBox->setChecked(!m_enabledForSubDirs);
|
||||
|
||||
widget->recreateSummary();
|
||||
recreateSummary();
|
||||
};
|
||||
|
||||
updateDetails();
|
||||
|
||||
@@ -141,6 +141,8 @@ QbsBuildStep::QbsBuildStep(BuildStepList *bsl, Utils::Id id) :
|
||||
BuildStep(bsl, id)
|
||||
{
|
||||
setDisplayName(tr("Qbs Build"));
|
||||
setSummaryText(tr("<b>Qbs:</b> %1").arg("build"));
|
||||
|
||||
setQbsConfiguration(QVariantMap());
|
||||
|
||||
auto qbsBuildConfig = qobject_cast<QbsBuildConfiguration *>(buildConfiguration());
|
||||
@@ -667,7 +669,6 @@ QbsBuildStepConfigWidget::QbsBuildStepConfigWidget(QbsBuildStep *step) :
|
||||
connect(forceProbesCheckBox, &QCheckBox::toggled, this,
|
||||
&QbsBuildStepConfigWidget::changeForceProbes);
|
||||
updateState();
|
||||
setSummaryText(tr("<b>Qbs:</b> %1").arg("build"));
|
||||
}
|
||||
|
||||
void QbsBuildStepConfigWidget::updateState()
|
||||
|
||||
@@ -67,6 +67,7 @@ QbsInstallStep::QbsInstallStep(BuildStepList *bsl, Utils::Id id)
|
||||
: BuildStep(bsl, id)
|
||||
{
|
||||
setDisplayName(tr("Qbs Install"));
|
||||
setSummaryText(tr("<b>Qbs:</b> %1").arg("install"));
|
||||
|
||||
const auto labelPlacement = BoolAspect::LabelPlacement::AtCheckBoxWithoutDummyLabel;
|
||||
m_dryRun = addAspect<BoolAspect>();
|
||||
@@ -182,8 +183,6 @@ BuildStepConfigWidget *QbsInstallStep::createConfigWidget()
|
||||
{
|
||||
auto widget = new BuildStepConfigWidget(this);
|
||||
|
||||
widget->setSummaryText(tr("<b>Qbs:</b> %1").arg("install"));
|
||||
|
||||
auto installRootValueLabel = new QLabel(installRoot());
|
||||
|
||||
auto commandLineKeyLabel = new QLabel(tr("Equivalent command line:"));
|
||||
|
||||
@@ -547,7 +547,7 @@ BuildStepConfigWidget *QMakeStep::createConfigWidget()
|
||||
const QString program = qtVersion->qmakeCommand().fileName();
|
||||
return tr("<b>qmake:</b> %1 %2").arg(program, project()->projectFilePath().fileName());
|
||||
};
|
||||
widget->setSummaryUpdater(updateSummary);
|
||||
setSummaryUpdater(updateSummary);
|
||||
|
||||
updateSummary();
|
||||
updateAbiWidgets();
|
||||
|
||||
Reference in New Issue
Block a user