From 0e6d9d35d9fb1a573dce8a19b1ba28ef472a21fe Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sat, 28 Mar 2015 12:56:28 +0400 Subject: [PATCH] Switch warnings were broken on all platforms --- companion/src/modeledit/setup.cpp | 32 ++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/companion/src/modeledit/setup.cpp b/companion/src/modeledit/setup.cpp index ebc9abf6f..01a57b716 100644 --- a/companion/src/modeledit/setup.cpp +++ b/companion/src/modeledit/setup.cpp @@ -495,19 +495,16 @@ SetupPanel::SetupPanel(QWidget *parent, ModelData & model, GeneralSettings & gen slider->setTickPosition(QSlider::TicksBothSides); slider->setMinimumSize(QSize(30, 50)); slider->setMaximumSize(QSize(50, 50)); + slider->setSingleStep(1); + slider->setPageStep(1); + slider->setTickInterval(1); if (IS_TARANIS(board)) { label->setText(switchesX9D[i]); - slider->setMaximum(2); - slider->setSingleStep(generalSettings.switchConfig[i] == GeneralSettings::SWITCH_3POS ? 1 : 2); - slider->setPageStep(slider->singleStep()); - slider->setTickInterval(slider->singleStep()); + slider->setMaximum(generalSettings.switchConfig[i] == GeneralSettings::SWITCH_3POS ? 2 : 1); } else { label->setText(switches9X[i]); slider->setMaximum(i==0 ? 2 : 1); - slider->setSingleStep(1); - slider->setPageStep(1); - slider->setTickInterval(1); } cb->setProperty("index", i); ui->switchesStartupLayout->addWidget(label, 0, i+1); @@ -735,12 +732,25 @@ void SetupPanel::updateBeepCenter() void SetupPanel::updateStartupSwitches() { lock = true; + + unsigned int switchStates = model->switchWarningStates; + unsigned int value; for (int i=0; iproperty("index").toInt(); bool enabled = !(model->switchWarningEnable & (1 << index)); + if (IS_TARANIS(GetEepromInterface()->getBoard())) { + value = (switchStates >> 2*index) & 0x03; + if (generalSettings.switchConfig[index] != GeneralSettings::SWITCH_3POS && value == 2) + value = 1; + } + else { + value = (i==0 ? switchStates & 0x3 : switchStates & 0x1); + switchStates >>= (i==0 ? 2 : 1); + } + slider->setValue(value); slider->setEnabled(enabled); cb->setChecked(enabled); } @@ -760,16 +770,20 @@ void SetupPanel::startupSwitchEdited(int value) mask = 0x03 << shift; } else { - if (index == 1) { + if (index == 0) { mask = 0x03; } else { - shift = index; + shift = index+1; mask = 0x01 << shift; } } model->switchWarningStates &= ~mask; + + if (IS_TARANIS(GetEepromInterface()->getBoard()) && generalSettings.switchConfig[index] != GeneralSettings::SWITCH_3POS) { + if (value == 1) value = 2; + } if (value) { model->switchWarningStates |= (value << shift);