From f79ae6c39b3840330247a6631d968c4938056eed Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sat, 8 Feb 2014 13:14:20 +0100 Subject: [PATCH] Falisafe settings fixed, now include decimal (slider removed) and scaled properly taking 1000/1024 ratio to match display on the radio --- companion/src/modeledit/setup.cpp | 30 +++++++++++------------------- companion/src/modeledit/setup.h | 5 ++--- 2 files changed, 13 insertions(+), 22 deletions(-) diff --git a/companion/src/modeledit/setup.cpp b/companion/src/modeledit/setup.cpp index a3ee674a1..aa86c1275 100644 --- a/companion/src/modeledit/setup.cpp +++ b/companion/src/modeledit/setup.cpp @@ -129,20 +129,20 @@ ModulePanel::ModulePanel(QWidget *parent, ModelData & model, ModuleData & module if (GetEepromInterface()->getCapability(HasFailsafe)) { for (int i=0; i<16; i++) { - QSlider * slider = new QSlider(this); - slider->setMinimumSize(QSize(30, 50)); - slider->setRange(-100, 100); - QSpinBox * spinbox = new QSpinBox(this); + QLabel * label = new QLabel(this); + label->setText(QString::number(i+1)); + QDoubleSpinBox * spinbox = new QDoubleSpinBox(this); spinbox->setMinimumSize(QSize(20, 0)); spinbox->setRange(-100, 100); - slider->setProperty("index", i); + spinbox->setSingleStep(0.1); + spinbox->setDecimals(1); + spinbox->setValue(((double)module.failsafeChannels[i]*100)/1024); + label->setProperty("index", i); spinbox->setProperty("index", i); - failsafeSliders << slider; failsafeSpins << spinbox; - ui->failsafesLayout->addWidget(slider, 2*(i/8), i%8, Qt::AlignHCenter); + ui->failsafesLayout->addWidget(label, 2*(i/8), i%8, Qt::AlignHCenter); ui->failsafesLayout->addWidget(spinbox, 1+2*(i/8), i%8, Qt::AlignHCenter); - connect(slider, SIGNAL(valueChanged(int)), this, SLOT(onFailsafeChannelChanged(int))); - connect(slider, SIGNAL(valueChanged(int)), this, SLOT(onFailsafeChannelChanged(int))); + connect(spinbox, SIGNAL(valueChanged(double)), this, SLOT(onFailsafeSpinChanged(double))); } } @@ -223,10 +223,6 @@ void ModulePanel::update() ui->failsafeMode->setVisible(mask & MASK_FAILSAFES); ui->failsafeMode->setCurrentIndex(module.failsafeMode); ui->failsafesFrame->setEnabled(module.failsafeMode == 1); - for (int i=0; isetValue(module.failsafeChannels[i]); - failsafeSpins[i]->setValue(module.failsafeChannels[i]); - } } else { mask = 0; @@ -308,16 +304,12 @@ void ModulePanel::on_failsafeMode_currentIndexChanged(int value) } } -void ModulePanel::onFailsafeChannelChanged(int value) +void ModulePanel::onFailsafeSpinChanged(double value) { if (!lock) { - lock = true; int index = sender()->property("index").toInt(); - module.failsafeChannels[index] = value; - failsafeSpins[index]->setValue(value); - failsafeSliders[index]->setValue(value); + module.failsafeChannels[index] = (value*1024)/100; emit modified(); - lock = false; } } diff --git a/companion/src/modeledit/setup.h b/companion/src/modeledit/setup.h index d1392e1dd..9608d85a3 100644 --- a/companion/src/modeledit/setup.h +++ b/companion/src/modeledit/setup.h @@ -55,14 +55,13 @@ class ModulePanel : public ModelPanel void on_ppmFrameLength_editingFinished(); void on_rxNumber_editingFinished(); void on_failsafeMode_currentIndexChanged(int value); - void onFailsafeChannelChanged(int value); + void onFailsafeSpinChanged(double value); private: ModuleData & module; int moduleIdx; Ui::Module *ui; - QVector failsafeSpins; - QVector failsafeSliders; + QVector failsafeSpins; }; class Setup : public ModelPanel