diff --git a/companion/src/modeledit/channels.cpp b/companion/src/modeledit/channels.cpp index 9d493ae55..e82c736d6 100644 --- a/companion/src/modeledit/channels.cpp +++ b/companion/src/modeledit/channels.cpp @@ -70,10 +70,12 @@ Channels::Channels(QWidget * parent, ModelData & model, GeneralSettings & genera 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); @@ -82,10 +84,12 @@ Channels::Channels(QWidget * parent, ModelData & model, GeneralSettings & genera 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); @@ -182,6 +186,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 9fa8a01d9..bbad6081a 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, GeneralSettings & generalSettings); ~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 e6ad1326f..c7a1feb35 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, generalSettings), tr("Setup")); + Setup * setupPanel = new Setup(this, model, generalSettings); + addTab(setupPanel, tr("Setup")); addTab(new HeliPanel(this, model, generalSettings), tr("Heli")); addTab(new FlightModes(this, model, generalSettings), tr("Flight Modes")); addTab(new InputsPanel(this, model, generalSettings), tr("Inputs")); addTab(new MixesPanel(this, model, generalSettings), tr("Mixes")); - addTab(new Channels(this, model, generalSettings), tr("Servos")); + Channels * chnPanel = new Channels(this, model, generalSettings); + addTab(chnPanel, tr("Servos")); addTab(new Curves(this, model, generalSettings), tr("Curves")); addTab(new LogicalSwitchesPanel(this, model, generalSettings), tr("Logical Switches")); if (GetEepromInterface()->getCapability(CustomFunctions)) addTab(new CustomFunctionsPanel(this, model, generalSettings), tr("Special Functions")); if (GetEepromInterface()->getCapability(Telemetry) & TM_HASTELEMETRY) addTab(new TelemetryPanel(this, model, generalSettings), 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 b9b0b62dc..869b129cf 100644 --- a/companion/src/modeledit/setup.cpp +++ b/companion/src/modeledit/setup.cpp @@ -477,6 +477,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 7ab38999f..8929939ad 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);