From 1c053a7d0b083c70c021728eec4b4775a1ad8981 Mon Sep 17 00:00:00 2001 From: Damjan Adamic Date: Mon, 3 Nov 2014 21:14:52 +0100 Subject: [PATCH] Re #1783: Companion shows too many curve types in input/mixer for 9x --- companion/src/eeprominterface.h | 2 ++ .../src/firmwares/opentx/opentxinterface.cpp | 3 +++ companion/src/helpers.cpp | 19 +++++++++++-------- companion/src/helpers.h | 3 +++ companion/src/modeledit/expodialog.cpp | 2 +- companion/src/modeledit/mixerdialog.cpp | 2 +- 6 files changed, 21 insertions(+), 10 deletions(-) diff --git a/companion/src/eeprominterface.h b/companion/src/eeprominterface.h index 8c6132eba..f6c5b34a3 100644 --- a/companion/src/eeprominterface.h +++ b/companion/src/eeprominterface.h @@ -1177,6 +1177,8 @@ enum Capability { MultiposPotsPositions, SimulatorVariant, MavlinkTelemetry, + HasInputDiff, + HasMixerExpo, }; class SimulatorInterface; diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index fbff3c838..12b1118ac 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -734,6 +734,9 @@ int OpenTxFirmware::getCapability(const Capability capability) return 0; case MavlinkTelemetry: return id.contains("mavlink") ? 1 : 0; + case HasInputDiff: + case HasMixerExpo: + return (IS_ARM(board) ? true : false); default: return 0; } diff --git a/companion/src/helpers.cpp b/companion/src/helpers.cpp index fb89a918f..c4769835d 100644 --- a/companion/src/helpers.cpp +++ b/companion/src/helpers.cpp @@ -209,10 +209,10 @@ CurveGroup::CurveGroup(QComboBox *curveTypeCB, QCheckBox *curveGVarCB, QComboBox lock(false), lastType(-1) { - curveTypeCB->addItem(tr("Diff")); - curveTypeCB->addItem(tr("Expo")); - curveTypeCB->addItem(tr("Func")); - curveTypeCB->addItem(tr("Curve")); + if (!(flags & HIDE_DIFF)) curveTypeCB->addItem(tr("Diff"), 0); + if (!(flags & HIDE_EXPO)) curveTypeCB->addItem(tr("Expo"), 1); + curveTypeCB->addItem(tr("Func"), 2); + curveTypeCB->addItem(tr("Curve"), 3); curveValueCB->setMaxVisibleItems(10); @@ -228,7 +228,9 @@ void CurveGroup::update() { lock = true; - curveTypeCB->setCurrentIndex(curve.type); + int found = curveTypeCB->findData(curve.type); + if (found < 0) found = 0; + curveTypeCB->setCurrentIndex(found); if (curve.type == CurveReference::CURVE_REF_DIFF || curve.type == CurveReference::CURVE_REF_EXPO) { curveGVarCB->show(); @@ -303,7 +305,8 @@ void CurveGroup::gvarCBChanged(int state) void CurveGroup::typeChanged(int value) { if (!lock) { - switch (value) { + int type = curveTypeCB->itemData(curveTypeCB->currentIndex()).toInt(); + switch (type) { case 0: curve = CurveReference(CurveReference::CURVE_REF_DIFF, 0); break; @@ -325,7 +328,7 @@ void CurveGroup::typeChanged(int value) void CurveGroup::valuesChanged() { if (!lock) { - switch (curveTypeCB->currentIndex()) { + switch (curveTypeCB->itemData(curveTypeCB->currentIndex()).toInt()) { case 0: case 1: { @@ -334,7 +337,7 @@ void CurveGroup::valuesChanged() value = curveValueCB->itemData(curveValueCB->currentIndex()).toInt(); else value = curveValueSB->value(); - curve = CurveReference(curveTypeCB->currentIndex() == 0 ? CurveReference::CURVE_REF_DIFF : CurveReference::CURVE_REF_EXPO, value); + curve = CurveReference(curveTypeCB->itemData(curveTypeCB->currentIndex()).toInt() == 0 ? CurveReference::CURVE_REF_DIFF : CurveReference::CURVE_REF_EXPO, value); break; } case 2: diff --git a/companion/src/helpers.h b/companion/src/helpers.h index 6710fbb93..32ef60171 100644 --- a/companion/src/helpers.h +++ b/companion/src/helpers.h @@ -57,6 +57,9 @@ class GVarGroup: public QObject { bool lock; }; +#define HIDE_DIFF 1 +#define HIDE_EXPO 2 + class CurveGroup : public QObject { Q_OBJECT diff --git a/companion/src/modeledit/expodialog.cpp b/companion/src/modeledit/expodialog.cpp index 607986561..9932d3d2d 100644 --- a/companion/src/modeledit/expodialog.cpp +++ b/companion/src/modeledit/expodialog.cpp @@ -31,7 +31,7 @@ ExpoDialog::ExpoDialog(QWidget *parent, ModelData & model, ExpoData *expoData, G ui->offsetCB->hide(); } - curveGroup = new CurveGroup(ui->curveTypeCB, ui->curveGVarCB, ui->curveValueCB, ui->curveValueSB, ed->curve); + curveGroup = new CurveGroup(ui->curveTypeCB, ui->curveGVarCB, ui->curveValueCB, ui->curveValueSB, ed->curve, firmware->getCapability(HasInputDiff) ? 0 : HIDE_DIFF); populateSwitchCB(ui->switchesCB, ed->swtch, generalSettings, MixesContext); diff --git a/companion/src/modeledit/mixerdialog.cpp b/companion/src/modeledit/mixerdialog.cpp index 9f97c8d36..4ea4134ed 100644 --- a/companion/src/modeledit/mixerdialog.cpp +++ b/companion/src/modeledit/mixerdialog.cpp @@ -26,7 +26,7 @@ MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData *mixdata, G gvWeightGroup = new GVarGroup(ui->weightGV, ui->weightSB, ui->weightCB, md->weight, 100, -limit, limit); gvOffsetGroup = new GVarGroup(ui->offsetGV, ui->offsetSB, ui->offsetCB, md->sOffset, 0, -limit, limit); - curveGroup = new CurveGroup(ui->curveTypeCB, ui->curveGVarCB, ui->curveValueCB, ui->curveValueSB, md->curve); + curveGroup = new CurveGroup(ui->curveTypeCB, ui->curveGVarCB, ui->curveValueCB, ui->curveValueSB, md->curve, firmware->getCapability(HasMixerExpo) ? 0 : HIDE_EXPO); ui->MixDR_CB->setChecked(md->noExpo==0);