QbsProjectManager: Use a SelectionAspect to switch Debug and Release

Change-Id: I4beaf0a6456d57871dcf65832f0a79f37fe5fddc
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2020-11-09 16:19:23 +01:00
parent 13c68e0c73
commit 2ecfda056b
2 changed files with 14 additions and 38 deletions

View File

@@ -51,13 +51,10 @@
#include <QBoxLayout> #include <QBoxLayout>
#include <QCheckBox> #include <QCheckBox>
#include <QComboBox>
#include <QFormLayout>
#include <QJsonArray> #include <QJsonArray>
#include <QJsonObject> #include <QJsonObject>
#include <QLabel> #include <QLabel>
#include <QPlainTextEdit> #include <QPlainTextEdit>
#include <QSpinBox>
#include <QThread> #include <QThread>
// -------------------------------------------------------------------- // --------------------------------------------------------------------
@@ -87,7 +84,6 @@ private:
void updateState(); void updateState();
void updatePropertyEdit(const QVariantMap &data); void updatePropertyEdit(const QVariantMap &data);
void changeBuildVariant(int);
void changeUseDefaultInstallDir(bool useDefault); void changeUseDefaultInstallDir(bool useDefault);
void changeInstallDir(const QString &dir); void changeInstallDir(const QString &dir);
void applyCachedProperties(); void applyCachedProperties();
@@ -119,7 +115,6 @@ private:
QList<Property> m_propertyCache; QList<Property> m_propertyCache;
bool m_ignoreChange = false; bool m_ignoreChange = false;
QComboBox *buildVariantComboBox;
FancyLineEdit *propertyEdit; FancyLineEdit *propertyEdit;
PathChooser *installDirChooser; PathChooser *installDirChooser;
QCheckBox *defaultInstallDirCheckBox; QCheckBox *defaultInstallDirCheckBox;
@@ -143,7 +138,11 @@ QbsBuildStep::QbsBuildStep(BuildStepList *bsl, Utils::Id id) :
connect(this, &QbsBuildStep::qbsConfigurationChanged, connect(this, &QbsBuildStep::qbsConfigurationChanged,
qbsBuildConfig, &QbsBuildConfiguration::qbsConfigurationChanged); qbsBuildConfig, &QbsBuildConfiguration::qbsConfigurationChanged);
// setQbsConfiguration(other->qbsConfiguration(PreserveVariables)); m_buildVariant = addAspect<SelectionAspect>();
m_buildVariant->setDisplayName(tr("Build variant:"));
m_buildVariant->setDisplayStyle(SelectionAspect::DisplayStyle::ComboBox);
m_buildVariant->addOption(tr("Debug"));
m_buildVariant->addOption(tr("Release"));
m_keepGoing = addAspect<BoolAspect>(); m_keepGoing = addAspect<BoolAspect>();
m_keepGoing->setSettingsKey(QBS_KEEP_GOING); m_keepGoing->setSettingsKey(QBS_KEEP_GOING);
@@ -183,6 +182,8 @@ QbsBuildStep::QbsBuildStep(BuildStepList *bsl, Utils::Id id) :
connect(m_install, &BaseAspect::changed, this, &QbsBuildStep::updateState); connect(m_install, &BaseAspect::changed, this, &QbsBuildStep::updateState);
connect(m_cleanInstallDir, &BaseAspect::changed, this, &QbsBuildStep::updateState); connect(m_cleanInstallDir, &BaseAspect::changed, this, &QbsBuildStep::updateState);
connect(m_forceProbes, &BaseAspect::changed, this, &QbsBuildStep::updateState); connect(m_forceProbes, &BaseAspect::changed, this, &QbsBuildStep::updateState);
connect(m_buildVariant, &SelectionAspect::changed, this, &QbsBuildStep::changeBuildVariant);
} }
QbsBuildStep::~QbsBuildStep() QbsBuildStep::~QbsBuildStep()
@@ -544,20 +545,6 @@ QbsBuildStepConfigWidget::QbsBuildStepConfigWidget(QbsBuildStep *step) :
setContentsMargins(0, 0, 0, 0); setContentsMargins(0, 0, 0, 0);
buildVariantComboBox = new QComboBox(this);
buildVariantComboBox->addItem(tr("Debug"));
buildVariantComboBox->addItem(tr("Release"));
QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
sizePolicy.setHorizontalStretch(0);
sizePolicy.setVerticalStretch(0);
sizePolicy.setHeightForWidth(buildVariantComboBox->sizePolicy().hasHeightForWidth());
buildVariantComboBox->setSizePolicy(sizePolicy);
auto horizontalLayout_5 = new QHBoxLayout();
horizontalLayout_5->addWidget(buildVariantComboBox);
horizontalLayout_5->addItem(new QSpacerItem(70, 13, QSizePolicy::Expanding, QSizePolicy::Minimum));
propertyEdit = new FancyLineEdit(this); propertyEdit = new FancyLineEdit(this);
defaultInstallDirCheckBox = new QCheckBox(this); defaultInstallDirCheckBox = new QCheckBox(this);
@@ -571,7 +558,7 @@ QbsBuildStepConfigWidget::QbsBuildStepConfigWidget(QbsBuildStep *step) :
commandLineTextEdit->setTextInteractionFlags(Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse); commandLineTextEdit->setTextInteractionFlags(Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse);
LayoutBuilder builder(this); LayoutBuilder builder(this);
builder.addRow({tr("Build variant:"), horizontalLayout_5}); builder.addRow(m_qbsStep->m_buildVariant);
builder.addRow(m_qbsStep->m_maxJobCount); builder.addRow(m_qbsStep->m_maxJobCount);
builder.addRow({tr("Properties:"), propertyEdit}); builder.addRow({tr("Properties:"), propertyEdit});
@@ -599,10 +586,6 @@ QbsBuildStepConfigWidget::QbsBuildStepConfigWidget(QbsBuildStep *step) :
return validateProperties(edit, errorMessage); return validateProperties(edit, errorMessage);
}); });
connect(buildVariantComboBox,
QOverload<int>::of(&QComboBox::currentIndexChanged),
this, &QbsBuildStepConfigWidget::changeBuildVariant);
connect(defaultInstallDirCheckBox, &QCheckBox::toggled, this, connect(defaultInstallDirCheckBox, &QCheckBox::toggled, this,
&QbsBuildStepConfigWidget::changeUseDefaultInstallDir); &QbsBuildStepConfigWidget::changeUseDefaultInstallDir);
@@ -620,9 +603,6 @@ void QbsBuildStepConfigWidget::updateState()
defaultInstallDirCheckBox->setChecked(!m_qbsStep->hasCustomInstallRoot()); defaultInstallDirCheckBox->setChecked(!m_qbsStep->hasCustomInstallRoot());
} }
const QString buildVariant = qbsStep()->buildVariant();
const int idx = (buildVariant == Constants::QBS_VARIANT_DEBUG) ? 0 : 1;
buildVariantComboBox->setCurrentIndex(idx);
const auto qbsBuildConfig = static_cast<QbsBuildConfiguration *>(qbsStep()->buildConfiguration()); const auto qbsBuildConfig = static_cast<QbsBuildConfiguration *>(qbsStep()->buildConfiguration());
QString command = qbsBuildConfig->equivalentCommandLine(qbsStep()->stepData()); QString command = qbsBuildConfig->equivalentCommandLine(qbsStep()->stepData());
@@ -673,16 +653,14 @@ void QbsBuildStepConfigWidget::updatePropertyEdit(const QVariantMap &data)
propertyEdit->setText(QtcProcess::joinArgs(propertyList)); propertyEdit->setText(QtcProcess::joinArgs(propertyList));
} }
void QbsBuildStepConfigWidget::changeBuildVariant(int idx) void QbsBuildStep::changeBuildVariant()
{ {
QString variant; QString variant;
if (idx == 1) if (m_buildVariant->value() == 1)
variant = Constants::QBS_VARIANT_RELEASE; variant = Constants::QBS_VARIANT_RELEASE;
else else
variant = Constants::QBS_VARIANT_DEBUG; variant = Constants::QBS_VARIANT_DEBUG;
m_ignoreChange = true; setBuildVariant(variant);
qbsStep()->setBuildVariant(variant);
m_ignoreChange = false;
} }
void QbsBuildStepConfigWidget::changeUseDefaultInstallDir(bool useDefault) void QbsBuildStepConfigWidget::changeUseDefaultInstallDir(bool useDefault)

View File

@@ -30,13 +30,9 @@
#include <projectexplorer/buildstep.h> #include <projectexplorer/buildstep.h>
#include <projectexplorer/task.h> #include <projectexplorer/task.h>
namespace Utils {
class BoolAspect;
class FancyLineEdit;
} // Utils
namespace QbsProjectManager { namespace QbsProjectManager {
namespace Internal { namespace Internal {
class ErrorInfo; class ErrorInfo;
class QbsProject; class QbsProject;
class QbsSession; class QbsSession;
@@ -113,8 +109,10 @@ private:
void finish(); void finish();
void updateState(); void updateState();
void changeBuildVariant();
QVariantMap m_qbsConfiguration; QVariantMap m_qbsConfiguration;
Utils::SelectionAspect *m_buildVariant = nullptr;
Utils::IntegerAspect *m_maxJobCount = nullptr; Utils::IntegerAspect *m_maxJobCount = nullptr;
Utils::BoolAspect *m_keepGoing = nullptr; Utils::BoolAspect *m_keepGoing = nullptr;
Utils::BoolAspect *m_showCommandLines = nullptr; Utils::BoolAspect *m_showCommandLines = nullptr;