From 29acf1b80dee7bc6f9da5850dec946877e13f58b Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 1 Jul 2019 12:05:53 +0200 Subject: [PATCH] Fixes #6533 --- .../simulation/widgets/radioswitchwidget.h | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/companion/src/simulation/widgets/radioswitchwidget.h b/companion/src/simulation/widgets/radioswitchwidget.h index 39878a648..8943d8c6e 100644 --- a/companion/src/simulation/widgets/radioswitchwidget.h +++ b/companion/src/simulation/widgets/radioswitchwidget.h @@ -41,6 +41,7 @@ class RadioSwitchWidget : public RadioWidget { init(); } + explicit RadioSwitchWidget(Board::SwitchType type, const QString & labelText, int value = 0, QWidget * parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags()) : RadioWidget(labelText, value, parent, f), swType(type) @@ -96,15 +97,24 @@ class RadioSwitchWidget : public RadioWidget setWidget(m_slider); } - connect(m_slider, &QSlider::valueChanged, this, &RadioWidget::setValue); + connect(m_slider, &QSlider::valueChanged, this, &RadioSwitchWidget::setValueFromSlider); connect(this, &RadioWidget::valueChanged, m_slider, &QSlider::setValue); - } - int getValue() const + int getValue() const override { - int val = m_slider->value() - (swType == Board::SWITCH_3POS || m_slider->value() == 1 ? 0 : 1); - return val; + if (swType == Board::SWITCH_3POS) + return m_slider->value(); + else + return m_slider->value() > 0 ? 1 : 0; + } + + void setValueFromSlider(const int & value) + { + if (swType == Board::SWITCH_3POS) + RadioWidget::setValue(value); + else + RadioWidget::setValue(value ? 1 : -1); } void setToggleLocked(bool lock) @@ -139,7 +149,4 @@ class RadioSwitchWidget : public RadioWidget QSlider * m_slider; }; - - - #endif // _RADIOSWITCHWIDGET_H_