From 8bf6236e9075808067a33566b8a6aeb2817fe8d7 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 4 Mar 2021 13:13:49 +0100 Subject: [PATCH] Utils: Implement SelectionAspect::{setV,v}olatileValue Change-Id: Ib0b2644c1f7aae651df5af85d35b82f82bc22e8c Reviewed-by: Christian Stenger --- src/libs/utils/aspects.cpp | 35 ++++++++++++++++++++++++++++++++++- src/libs/utils/aspects.h | 2 ++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/src/libs/utils/aspects.cpp b/src/libs/utils/aspects.cpp index 2000b4bf90b..1a02485548e 100644 --- a/src/libs/utils/aspects.cpp +++ b/src/libs/utils/aspects.cpp @@ -1348,7 +1348,7 @@ void SelectionAspect::addToLayout(LayoutBuilder &builder) button->setToolTip(option.tooltip); builder.addItems({{}, button}); d->m_buttons.append(button); - d->m_buttonGroup->addButton(button); + d->m_buttonGroup->addButton(button, i); connect(button, &QAbstractButton::clicked, this, [this, i] { setValue(i); }); @@ -1367,6 +1367,39 @@ void SelectionAspect::addToLayout(LayoutBuilder &builder) } } +QVariant SelectionAspect::volatileValue() const +{ + QTC_CHECK(!isAutoApply()); + switch (d->m_displayStyle) { + case DisplayStyle::RadioButtons: + QTC_ASSERT(d->m_buttonGroup, return {}); + return d->m_buttonGroup->checkedId(); + case DisplayStyle::ComboBox: + QTC_ASSERT(d->m_comboBox, return {}); + return d->m_comboBox->currentIndex(); + } + return {}; +} + +void SelectionAspect::setVolatileValue(const QVariant &val) +{ + QTC_CHECK(!isAutoApply()); + switch (d->m_displayStyle) { + case DisplayStyle::RadioButtons: { + if (d->m_buttonGroup) { + QAbstractButton *button = d->m_buttonGroup->button(val.toInt()); + QTC_ASSERT(button, return); + button->setChecked(true); + } + break; + } + case DisplayStyle::ComboBox: + if (d->m_comboBox) + d->m_comboBox->setCurrentIndex(val.toInt()); + break; + } +} + void SelectionAspect::setVisibleDynamic(bool visible) { if (QLabel *l = label()) diff --git a/src/libs/utils/aspects.h b/src/libs/utils/aspects.h index d76e21fddbc..20bc4d5be92 100644 --- a/src/libs/utils/aspects.h +++ b/src/libs/utils/aspects.h @@ -238,6 +238,8 @@ public: ~SelectionAspect() override; void addToLayout(LayoutBuilder &builder) override; + QVariant volatileValue() const override; + void setVolatileValue(const QVariant &val) override; int value() const; void setValue(int val);