From 31823c0c95991b5a2f48ad7dcf37fb73b5a98dcc Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sun, 23 Mar 2014 15:57:33 +0100 Subject: [PATCH] Fix #667 FW however apparently also has an issue when turning extended limits off --- companion/src/modeledit/channels.cpp | 16 ++++++++++++++++ companion/src/modeledit/channels.h | 8 ++++++++ companion/src/modeledit/modeledit.cpp | 8 ++++++-- companion/src/modeledit/setup.cpp | 1 + companion/src/modeledit/setup.h | 3 +++ 5 files changed, 34 insertions(+), 2 deletions(-) diff --git a/companion/src/modeledit/channels.cpp b/companion/src/modeledit/channels.cpp index 070a0fcdc..b871f49e3 100644 --- a/companion/src/modeledit/channels.cpp +++ b/companion/src/modeledit/channels.cpp @@ -63,10 +63,12 @@ Channels::Channels(QWidget * parent, ModelData & model): minSB->setAccelerated(true); minSB->setDecimals(1); minSB->setMinimum(model.extendedLimits ? -125 : -100); + minSB->setSingleStep(0.1); minSB->setMaximum(0); minSB->setValue(float(model.limitData[i].min) / 10); connect(minSB, SIGNAL(editingFinished()), this, SLOT(minEdited())); gridLayout->addWidget(minSB, i+1, col++, 1, 1); + minSpins << minSB; // Channel max QDoubleSpinBox * maxSB = new QDoubleSpinBox(this); @@ -75,10 +77,12 @@ Channels::Channels(QWidget * parent, ModelData & model): maxSB->setAccelerated(true); maxSB->setDecimals(1); maxSB->setMinimum(0); + maxSB->setSingleStep(0.1); maxSB->setMaximum(model.extendedLimits ? 125 : 100); maxSB->setValue(float(model.limitData[i].max) / 10); connect(maxSB, SIGNAL(editingFinished()), this, SLOT(maxEdited())); gridLayout->addWidget(maxSB, i+1, col++, 1, 1); + maxSpins << maxSB; // Channel inversion QComboBox * invCB = new QComboBox(this); @@ -160,6 +164,18 @@ void Channels::maxEdited() emit modified(); } +void Channels::refreshExtendedLimits() +{ + for (int i=0; igetCapability(Outputs); i++) { + QDoubleSpinBox * minDSB = minSpins[i]; + QDoubleSpinBox * maxDSB = maxSpins[i]; + + minDSB->setMinimum(model.extendedLimits ? -125 : -100); + maxDSB->setMaximum(model.extendedLimits ? 125 : 100); + } + emit modified(); +} + void Channels::invEdited() { QComboBox *cb = qobject_cast(sender()); diff --git a/companion/src/modeledit/channels.h b/companion/src/modeledit/channels.h index ee372ecd7..42910eb26 100644 --- a/companion/src/modeledit/channels.h +++ b/companion/src/modeledit/channels.h @@ -2,6 +2,7 @@ #define CHANNELS_H #include "modelpanel.h" +#include class Channels : public ModelPanel { @@ -10,6 +11,13 @@ class Channels : public ModelPanel public: Channels(QWidget *parent, ModelData & model); ~Channels(); + + private: + QVector minSpins; + QVector maxSpins; + + public slots: + void refreshExtendedLimits(); private slots: void symlimitsEdited(); diff --git a/companion/src/modeledit/modeledit.cpp b/companion/src/modeledit/modeledit.cpp index 8124e4903..a783e6829 100644 --- a/companion/src/modeledit/modeledit.cpp +++ b/companion/src/modeledit/modeledit.cpp @@ -25,18 +25,22 @@ ModelEdit::ModelEdit(RadioData & radioData, int modelId, bool openWizard, bool i setWindowIcon(CompanionIcon("edit.png")); restoreGeometry(g.modelEditGeo()); ui->pushButton->setIcon(CompanionIcon("simulate.png")); - addTab(new Setup(this, model), tr("Setup")); + Setup * setupPanel = new Setup(this, model); + addTab(setupPanel, tr("Setup")); addTab(new HeliPanel(this, model), tr("Heli")); addTab(new FlightModes(this, model, radioData.generalSettings), tr("Flight Modes")); addTab(new InputsPanel(this, model, radioData.generalSettings), tr("Inputs")); addTab(new MixesPanel(this, model, radioData.generalSettings), tr("Mixes")); - addTab(new Channels(this, model), tr("Channels")); + Channels * chnPanel = new Channels(this, model); + addTab(chnPanel, tr("Channels")); addTab(new LogicalSwitchesPanel(this, model), tr("Logical Switches")); if (GetEepromInterface()->getCapability(CustomFunctions)) addTab(new CustomFunctionsPanel(this, model, radioData.generalSettings), tr("Switch Assignment")); addTab(new Curves(this, model), tr("Curves")); if (GetEepromInterface()->getCapability(Telemetry) & TM_HASTELEMETRY) addTab(new TelemetryPanel(this, model), tr("Telemetry")); + + connect(setupPanel, SIGNAL(extendedLimitsToggled()), chnPanel, SLOT(refreshExtendedLimits())); } ModelEdit::~ModelEdit() diff --git a/companion/src/modeledit/setup.cpp b/companion/src/modeledit/setup.cpp index 546866468..1a3591f82 100644 --- a/companion/src/modeledit/setup.cpp +++ b/companion/src/modeledit/setup.cpp @@ -471,6 +471,7 @@ Setup::~Setup() void Setup::on_extendedLimits_toggled(bool checked) { model.extendedLimits = checked; + emit extendedLimitsToggled(); emit modified(); } diff --git a/companion/src/modeledit/setup.h b/companion/src/modeledit/setup.h index 6880c363f..e26a7e0dd 100644 --- a/companion/src/modeledit/setup.h +++ b/companion/src/modeledit/setup.h @@ -76,6 +76,9 @@ class Setup : public ModelPanel virtual void update(); + signals: + void extendedLimitsToggled(); + private slots: void on_name_editingFinished(); void on_throttleSource_currentIndexChanged(int index);