ProjectExplorer: Add ability to disable Base{Bool,Integer}Aspect

Can be used in MakeStep.

Change-Id: I2a49b3071e610be5e29dbcb40f6ab7f283ad5a0b
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2020-07-21 08:51:38 +02:00
parent 43b658e9e7
commit de7c57b051
2 changed files with 33 additions and 3 deletions

View File

@@ -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<QCheckBox> 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<QLabel> m_label;
QPointer<QSpinBox> 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<int>::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);

View File

@@ -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;