From c5a44250fca2fe6f8834a6d22a4344763e573350 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sat, 9 Apr 2016 11:12:50 +0200 Subject: [PATCH] Fixes #3353 --- companion/src/helpers.cpp | 35 +++++++++++++++---------- companion/src/helpers.h | 8 +++--- companion/src/modeledit/channels.cpp | 10 +++---- companion/src/modeledit/channels.h | 2 +- companion/src/modeledit/expodialog.cpp | 8 +++--- companion/src/modeledit/mixerdialog.cpp | 6 ++--- 6 files changed, 38 insertions(+), 31 deletions(-) diff --git a/companion/src/helpers.cpp b/companion/src/helpers.cpp index 04096e4e2..93a4b40be 100644 --- a/companion/src/helpers.cpp +++ b/companion/src/helpers.cpp @@ -103,7 +103,7 @@ void populatePhasesCB(QComboBox *b, int value) b->setCurrentIndex(value + GetCurrentFirmware()->getCapability(FlightModes)); } -GVarGroup::GVarGroup(QCheckBox *weightGV, QAbstractSpinBox *weightSB, QComboBox *weightCB, int & weight, const int deflt, const int mini, const int maxi, const double step, bool allowGvars): +GVarGroup::GVarGroup(QCheckBox * weightGV, QAbstractSpinBox * weightSB, QComboBox * weightCB, int & weight, const ModelData & model, const int deflt, const int mini, const int maxi, const double step, bool allowGvars): QObject(), weightGV(weightGV), weightSB(weightSB), @@ -115,7 +115,7 @@ GVarGroup::GVarGroup(QCheckBox *weightGV, QAbstractSpinBox *weightSB, QComboBox lock(true) { if (allowGvars && GetCurrentFirmware()->getCapability(Gvars)) { - populateGVCB(weightCB, weight); + populateGVCB(*weightCB, weight, model); connect(weightGV, SIGNAL(stateChanged(int)), this, SLOT(gvarCBChanged(int))); connect(weightCB, SIGNAL(currentIndexChanged(int)), this, SLOT(valuesChanged())); } @@ -179,13 +179,14 @@ void GVarGroup::valuesChanged() } } -CurveGroup::CurveGroup(QComboBox *curveTypeCB, QCheckBox *curveGVarCB, QComboBox *curveValueCB, QSpinBox *curveValueSB, CurveReference & curve, unsigned int flags): +CurveGroup::CurveGroup(QComboBox * curveTypeCB, QCheckBox * curveGVarCB, QComboBox * curveValueCB, QSpinBox * curveValueSB, CurveReference & curve, const ModelData & model, unsigned int flags): QObject(), curveTypeCB(curveTypeCB), curveGVarCB(curveGVarCB), curveValueCB(curveValueCB), curveValueSB(curveValueSB), curve(curve), + model(model), flags(flags), lock(false), lastType(-1) @@ -219,7 +220,7 @@ void CurveGroup::update() curveGVarCB->setChecked(true); if (lastType != CurveReference::CURVE_REF_DIFF && lastType != CurveReference::CURVE_REF_EXPO) { lastType = curve.type; - populateGVCB(curveValueCB, curve.value); + populateGVCB(*curveValueCB, curve.value, model); } curveValueCB->show(); curveValueSB->hide(); @@ -478,33 +479,39 @@ void populateSwitchCB(QComboBox *b, const RawSwitch & value, const GeneralSettin b->setMaxVisibleItems(10); } -void populateGVCB(QComboBox *b, int value) +void populateGVCB(QComboBox & b, int value, const ModelData & model) { bool selected = false; - b->clear(); + b.clear(); - int pgvars = GetCurrentFirmware()->getCapability(Gvars); - for (int i=-pgvars; i<=-1; i++) { + int count = GetCurrentFirmware()->getCapability(Gvars); + for (int i=-count; i<=-1; i++) { int16_t gval = (int16_t)(-10000+i); - b->addItem(QObject::tr("-GV%1").arg(-i), gval); + if (strlen(model.gvars_names[-i-1]) > 0) + b.addItem(QObject::tr("-GV%1 (%2)").arg(-i).arg(model.gvars_names[-i-1]), gval); + else + b.addItem(QObject::tr("-GV%1").arg(-i), gval); if (value == gval) { - b->setCurrentIndex(b->count()-1); + b.setCurrentIndex(b.count()-1); selected = true; } } - for (int i=1; i<=pgvars; i++) { + for (int i=1; i<=count; i++) { int16_t gval = (int16_t)(10000+i); - b->addItem(QObject::tr("GV%1").arg(i), gval); + if (strlen(model.gvars_names[i-1]) > 0) + b.addItem(QObject::tr("GV%1 (%2)").arg(i).arg(model.gvars_names[i-1]), gval); + else + b.addItem(QObject::tr("GV%1").arg(i), gval); if (value == gval) { - b->setCurrentIndex(b->count()-1); + b.setCurrentIndex(b.count()-1); selected = true; } } if (!selected) { - b->setCurrentIndex(pgvars); + b.setCurrentIndex(count); } } diff --git a/companion/src/helpers.h b/companion/src/helpers.h index 26fd1368e..484b10660 100644 --- a/companion/src/helpers.h +++ b/companion/src/helpers.h @@ -46,7 +46,7 @@ class GVarGroup: public QObject { Q_OBJECT public: - GVarGroup(QCheckBox *weightGV, QAbstractSpinBox *weightSB, QComboBox *weightCB, int & weight, const int deflt, const int mini, const int maxi, const double step=1.0, bool allowGVars=true); + GVarGroup(QCheckBox * weightGV, QAbstractSpinBox * weightSB, QComboBox * weightCB, int & weight, const ModelData & model, const int deflt, const int mini, const int maxi, const double step=1.0, bool allowGVars=true); protected slots: void gvarCBChanged(int); @@ -72,7 +72,7 @@ class CurveGroup : public QObject { Q_OBJECT public: - CurveGroup(QComboBox *curveTypeCB, QCheckBox *curveGVarCB, QComboBox *curveValueCB, QSpinBox *curveValueSB, CurveReference & curve, unsigned int flags=0); + CurveGroup(QComboBox *curveTypeCB, QCheckBox *curveGVarCB, QComboBox *curveValueCB, QSpinBox *curveValueSB, CurveReference & curve, const ModelData & model, unsigned int flags=0); void update(); protected slots: @@ -86,6 +86,7 @@ class CurveGroup : public QObject { QComboBox *curveValueCB; QSpinBox *curveValueSB; CurveReference & curve; + const ModelData & model; unsigned int flags; bool lock; int lastType; @@ -118,8 +119,7 @@ void populateGvarUseCB(QComboBox *b, unsigned int phase); #define GVARS_VARIANT 0x0001 #define FRSKY_VARIANT 0x0002 -// void populateGVarCB(QComboBox *b, int value, int min, int max,int pgvars=5); //TODO: Clean Up -void populateGVCB(QComboBox *b, int value); +void populateGVCB(QComboBox & b, int value, const ModelData & model); void populateSourceCB(QComboBox *b, const RawSource &source, const GeneralSettings generalSettings, const ModelData * model, unsigned int flags); QString image2qstring(QImage image); int findmult(float value, float base); diff --git a/companion/src/modeledit/channels.cpp b/companion/src/modeledit/channels.cpp index d7c600502..227a2a7fc 100644 --- a/companion/src/modeledit/channels.cpp +++ b/companion/src/modeledit/channels.cpp @@ -1,7 +1,7 @@ #include "channels.h" #include "helpers.h" -LimitsGroup::LimitsGroup(Firmware * firmware, TableLayout *tableLayout, int row, int col, int & value, int min, int max, int deflt): +LimitsGroup::LimitsGroup(Firmware * firmware, TableLayout * tableLayout, int row, int col, int & value, const ModelData & model, int min, int max, int deflt): firmware(firmware), spinbox(new QDoubleSpinBox()), value(value), @@ -44,7 +44,7 @@ LimitsGroup::LimitsGroup(Firmware * firmware, TableLayout *tableLayout, int row, horizontalLayout->addWidget(cb); horizontalLayout->addWidget(spinbox); tableLayout->addLayout(row, col, horizontalLayout); - gvarGroup = new GVarGroup(gv, spinbox, cb, value, deflt, min, max, displayStep, allowGVars); + gvarGroup = new GVarGroup(gv, spinbox, cb, value, model, deflt, min, max, displayStep, allowGVars); } LimitsGroup::~LimitsGroup() @@ -113,13 +113,13 @@ Channels::Channels(QWidget * parent, ModelData & model, GeneralSettings & genera } // Channel offset - limitsGroups << new LimitsGroup(firmware, tableLayout, i, col++, model.limitData[i].offset, -1000, 1000, 0); + limitsGroups << new LimitsGroup(firmware, tableLayout, i, col++, model.limitData[i].offset, model, -1000, 1000, 0); // Channel min - limitsGroups << new LimitsGroup(firmware, tableLayout, i, col++, model.limitData[i].min, -model.getChannelsMax()*10, 0, -1000); + limitsGroups << new LimitsGroup(firmware, tableLayout, i, col++, model.limitData[i].min, model, -model.getChannelsMax()*10, 0, -1000); // Channel max - limitsGroups << new LimitsGroup(firmware, tableLayout, i, col++, model.limitData[i].max, 0, model.getChannelsMax()*10, 1000); + limitsGroups << new LimitsGroup(firmware, tableLayout, i, col++, model.limitData[i].max, model, 0, model.getChannelsMax()*10, 1000); // Channel inversion QComboBox * invCB = new QComboBox(this); diff --git a/companion/src/modeledit/channels.h b/companion/src/modeledit/channels.h index b594d2c56..983a6e313 100644 --- a/companion/src/modeledit/channels.h +++ b/companion/src/modeledit/channels.h @@ -9,7 +9,7 @@ class GVarGroup; class LimitsGroup { public: - LimitsGroup(Firmware * firmware, TableLayout *tableLayout, int row, int col, int & value, int min, int max, int deflt); + LimitsGroup(Firmware * firmware, TableLayout *tableLayout, int row, int col, int & value, const ModelData & model, int min, int max, int deflt); ~LimitsGroup(); void updateMinMax(int max); diff --git a/companion/src/modeledit/expodialog.cpp b/companion/src/modeledit/expodialog.cpp index b56f91307..d2c7948fa 100644 --- a/companion/src/modeledit/expodialog.cpp +++ b/companion/src/modeledit/expodialog.cpp @@ -21,11 +21,11 @@ ExpoDialog::ExpoDialog(QWidget *parent, ModelData & model, ExpoData *expoData, G QRegExp rx(CHAR_FOR_NAMES_REGEX); if (IS_TARANIS(GetEepromInterface()->getBoard())) { - gvWeightGroup = new GVarGroup(ui->weightGV, ui->weightSB, ui->weightCB, ed->weight, 100, -100, 100); - gvOffsetGroup = new GVarGroup(ui->offsetGV, ui->offsetSB, ui->offsetCB, ed->offset, 0, -100, 100); + gvWeightGroup = new GVarGroup(ui->weightGV, ui->weightSB, ui->weightCB, ed->weight, model, 100, -100, 100); + gvOffsetGroup = new GVarGroup(ui->offsetGV, ui->offsetSB, ui->offsetCB, ed->offset, model, 0, -100, 100); } else { - gvWeightGroup = new GVarGroup(ui->weightGV, ui->weightSB, ui->weightCB, ed->weight, 100, 0, 100); + gvWeightGroup = new GVarGroup(ui->weightGV, ui->weightSB, ui->weightCB, ed->weight, model, 100, 0, 100); gvOffsetGroup = NULL; ui->offsetLabel->hide(); ui->offsetGV->hide(); @@ -33,7 +33,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, model, firmware->getCapability(HasInputDiff) ? 0 : (HIDE_DIFF | HIDE_NEGATIVE_CURVES)); populateSwitchCB(ui->switchesCB, ed->swtch, generalSettings, MixesContext); diff --git a/companion/src/modeledit/mixerdialog.cpp b/companion/src/modeledit/mixerdialog.cpp index c8ca6a128..e3e316362 100644 --- a/companion/src/modeledit/mixerdialog.cpp +++ b/companion/src/modeledit/mixerdialog.cpp @@ -25,10 +25,10 @@ MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData *mixdata, G int limit = firmware->getCapability(OffsetWeight); - 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); + gvWeightGroup = new GVarGroup(ui->weightGV, ui->weightSB, ui->weightCB, md->weight, model, 100, -limit, limit); + gvOffsetGroup = new GVarGroup(ui->offsetGV, ui->offsetSB, ui->offsetCB, md->sOffset, model, 0, -limit, limit); curveGroup = new CurveGroup(ui->curveTypeCB, ui->curveGVarCB, ui->curveValueCB, ui->curveValueSB, - md->curve, firmware->getCapability(HasMixerExpo) ? 0 : HIDE_EXPO); + md->curve, model, firmware->getCapability(HasMixerExpo) ? 0 : HIDE_EXPO); ui->MixDR_CB->setChecked(md->noExpo == 0);