From de7c57b05195b3ab59924692a45af52069827929 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 21 Jul 2020 08:51:38 +0200 Subject: [PATCH] ProjectExplorer: Add ability to disable Base{Bool,Integer}Aspect Can be used in MakeStep. Change-Id: I2a49b3071e610be5e29dbcb40f6ab7f283ad5a0b Reviewed-by: Christian Kandeler --- .../projectconfigurationaspects.cpp | 34 +++++++++++++++++-- .../projectconfigurationaspects.h | 2 ++ 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/src/plugins/projectexplorer/projectconfigurationaspects.cpp b/src/plugins/projectexplorer/projectconfigurationaspects.cpp index 2a39634ad9a..79ad3217441 100644 --- a/src/plugins/projectexplorer/projectconfigurationaspects.cpp +++ b/src/plugins/projectexplorer/projectconfigurationaspects.cpp @@ -60,6 +60,7 @@ public: BaseBoolAspect::LabelPlacement m_labelPlacement = BaseBoolAspect::LabelPlacement::AtCheckBox; bool m_value = false; bool m_defaultValue = false; + bool m_enabled = true; QString m_label; QString m_tooltip; QPointer m_checkBox; // Owned by configuration widget @@ -130,10 +131,12 @@ public: QVariant m_maximumValue; int m_displayIntegerBase = 10; qint64 m_displayScaleFactor = 1; - QString m_label; + QString m_labelText; QString m_prefix; QString m_suffix; + QPointer m_label; QPointer m_spinBox; // Owned by configuration widget + bool m_enabled = true; }; } // Internal @@ -481,6 +484,7 @@ void BaseBoolAspect::addToLayout(LayoutBuilder &builder) } d->m_checkBox->setChecked(d->m_value); d->m_checkBox->setToolTip(d->m_tooltip); + d->m_checkBox->setEnabled(d->m_enabled); builder.addItem(d->m_checkBox.data()); connect(d->m_checkBox.data(), &QAbstractButton::clicked, this, [this] { d->m_value = d->m_checkBox->isChecked(); @@ -532,6 +536,13 @@ void BaseBoolAspect::setToolTip(const QString &tooltip) d->m_tooltip = tooltip; } +void BaseBoolAspect::setEnabled(bool enabled) +{ + d->m_enabled = enabled; + if (d->m_checkBox) + d->m_checkBox->setEnabled(enabled); +} + /*! \class ProjectExplorer::BaseSelectionAspect */ @@ -648,16 +659,22 @@ BaseIntegerAspect::~BaseIntegerAspect() = default; void BaseIntegerAspect::addToLayout(LayoutBuilder &builder) { + QTC_CHECK(!d->m_label); + d->m_label = new QLabel(d->m_labelText); + d->m_label->setEnabled(d->m_enabled); + QTC_CHECK(!d->m_spinBox); d->m_spinBox = new QSpinBox; d->m_spinBox->setValue(int(d->m_value / d->m_displayScaleFactor)); d->m_spinBox->setDisplayIntegerBase(d->m_displayIntegerBase); d->m_spinBox->setPrefix(d->m_prefix); d->m_spinBox->setSuffix(d->m_suffix); + d->m_spinBox->setEnabled(d->m_enabled); if (d->m_maximumValue.isValid() && d->m_maximumValue.isValid()) d->m_spinBox->setRange(int(d->m_minimumValue.toLongLong() / d->m_displayScaleFactor), int(d->m_maximumValue.toLongLong() / d->m_displayScaleFactor)); - builder.addItems(d->m_label, d->m_spinBox.data()); + + builder.addItems(d->m_label.data(), d->m_spinBox.data()); connect(d->m_spinBox.data(), QOverload::of(&QSpinBox::valueChanged), this, [this](int value) { d->m_value = value * d->m_displayScaleFactor; @@ -695,7 +712,9 @@ void BaseIntegerAspect::setRange(qint64 min, qint64 max) void BaseIntegerAspect::setLabel(const QString &label) { - d->m_label = label; + d->m_labelText = label; + if (d->m_label) + d->m_label->setText(label); } void BaseIntegerAspect::setPrefix(const QString &prefix) @@ -718,6 +737,15 @@ void BaseIntegerAspect::setDisplayScaleFactor(qint64 factor) d->m_displayScaleFactor = factor; } +void BaseIntegerAspect::setEnabled(bool enabled) +{ + d->m_enabled = enabled; + if (d->m_label) + d->m_label->setEnabled(enabled); + if (d->m_spinBox) + d->m_spinBox->setEnabled(enabled); +} + BaseTriStateAspect::BaseTriStateAspect() { setDisplayStyle(DisplayStyle::ComboBox); diff --git a/src/plugins/projectexplorer/projectconfigurationaspects.h b/src/plugins/projectexplorer/projectconfigurationaspects.h index f57b69869ab..aadaeda6fa7 100644 --- a/src/plugins/projectexplorer/projectconfigurationaspects.h +++ b/src/plugins/projectexplorer/projectconfigurationaspects.h @@ -66,6 +66,7 @@ public: enum class LabelPlacement { AtCheckBox, InExtraLabel }; void setLabel(const QString &label, LabelPlacement labelPlacement); void setToolTip(const QString &tooltip); + void setEnabled(bool enabled); void fromMap(const QVariantMap &map) override; void toMap(QVariantMap &map) const override; @@ -188,6 +189,7 @@ public: void setSuffix(const QString &suffix); void setDisplayIntegerBase(int base); void setDisplayScaleFactor(qint64 factor); + void setEnabled(bool enabled); void fromMap(const QVariantMap &map) override; void toMap(QVariantMap &map) const override;