Fix model input trims and cosmetic for scale fields

This commit is contained in:
elecpower
2021-09-22 18:57:27 +10:00
committed by Peter Feerick
parent b06cbe92bf
commit 9266ad1f34
6 changed files with 86 additions and 27 deletions
+43
View File
@@ -20,6 +20,8 @@
#include "input_data.h"
#include "radiodataconversionstate.h"
#include "eeprominterface.h"
#include "compounditemmodels.h"
void ExpoData::convert(RadioDataConversionState & cstate)
{
@@ -33,3 +35,44 @@ bool ExpoData::isEmpty() const
{
return (chn == 0 && mode == INPUT_MODE_NONE);
}
QString ExpoData::carryTrimToString() const
{
if (carryTrim == CARRYTRIM_STICK_OFF)
return tr("OFF");
else if (carryTrim == CARRYTRIM_DEFAULT) {
if (srcRaw.isStick())
return tr("ON");
else
return tr("OFF");
}
else if (carryTrim < 0 && abs(carryTrim) <= Boards::getBoardCapability(getCurrentBoard(), Board::NumTrims))
return RawSource(SOURCE_TYPE_TRIM, abs(carryTrim) - 1).toString();
else
return CPN_STR_UNKNOWN_ITEM;
}
// static
AbstractStaticItemModel * ExpoData::carryTrimItemModel()
{
AbstractStaticItemModel * mdl = new AbstractStaticItemModel();
mdl->setName(AIM_EXPO_CARRYTRIM);
ExpoData tmp = ExpoData();
tmp.srcRaw = RawSource(SOURCE_TYPE_STICK, 0);
for (int i = -CARRYTRIM_STICK_OFF; i <= Boards::getBoardCapability(getCurrentBoard(), Board::NumTrims); i++) {
tmp.carryTrim = -i;
mdl->appendToItemList(tmp.carryTrimToString(), -i, true, 0, CarryTrimSticksGroup);
}
tmp.srcRaw = RawSource(SOURCE_TYPE_NONE, 0);
for (int i = CARRYTRIM_DEFAULT; i <= Boards::getBoardCapability(getCurrentBoard(), Board::NumTrims); i++) {
tmp.carryTrim = -i;
mdl->appendToItemList(tmp.carryTrimToString(), -i, true, 0, CarryTrimNotSticksGroup);
}
mdl->loadItemList();
return mdl;
}
+15
View File
@@ -26,7 +26,11 @@
#include <QtCore>
// identiying names of static abstract item models
constexpr char AIM_EXPO_CARRYTRIM[] {"expo.carrytrim"};
class RadioDataConversionState;
class AbstractStaticItemModel;
enum InputMode {
INPUT_MODE_NONE,
@@ -35,6 +39,14 @@ enum InputMode {
INPUT_MODE_BOTH
};
constexpr int CARRYTRIM_DEFAULT = {0};
constexpr int CARRYTRIM_STICK_OFF = {1};
enum CarryTrimGroups {
CarryTrimSticksGroup = 0x001,
CarryTrimNotSticksGroup = 0x002
};
#define EXPODATA_NAME_LEN 10
class ExpoData {
@@ -58,4 +70,7 @@ class ExpoData {
void convert(RadioDataConversionState & cstate);
void clear() { memset(reinterpret_cast<void *>(this), 0, sizeof(ExpoData)); }
bool isEmpty() const;
QString carryTrimToString() const;
static AbstractStaticItemModel * carryTrimItemModel();
};
+22 -11
View File
@@ -111,10 +111,16 @@ ExpoDialog::ExpoDialog(QWidget *parent, ModelData & model, ExpoData *expoData, G
ui->trimCB->hide();
}
for(int i = 0; i < getBoardCapability(getCurrentBoard(), Board::NumTrims); i++) {
ui->trimCB->addItem(RawSource(SOURCE_TYPE_TRIM, i).toString(), i + 1);
}
ui->trimCB->setCurrentIndex(1 - ed->carryTrim);
dialogFilteredItemModels->registerItemModel(new FilteredItemModel(ExpoData::carryTrimItemModel()), AIM_EXPO_CARRYTRIM);
ui->trimCB->setModel(dialogFilteredItemModels->getItemModel(AIM_EXPO_CARRYTRIM));
if (ed->srcRaw.isStick())
carryTrimFilterFlags = CarryTrimSticksGroup;
else
carryTrimFilterFlags = CarryTrimNotSticksGroup;
dialogFilteredItemModels->getItemModel(AIM_EXPO_CARRYTRIM)->setFilterFlags(carryTrimFilterFlags);
ui->trimCB->setCurrentIndex(ui->trimCB->findData(ed->carryTrim));
int expolength = firmware->getCapability(HasExpoNames);
if (!expolength) {
@@ -159,9 +165,8 @@ void ExpoDialog::updateScale()
{
if (firmware->getCapability(VirtualInputs) && ed->srcRaw.type == SOURCE_TYPE_TELEMETRY) {
RawSourceRange range = ed->srcRaw.getRange(&model, generalSettings);
ui->lblScale->show();
ui->dsbScale->show();
ui->lblScaleUnit->show();
ui->dsbScale->setEnabled(true);
ui->lblScaleUnit->setEnabled(true);
ui->dsbScale->setDecimals(range.decimals);
ui->dsbScale->setMinimum(range.min);
ui->dsbScale->setMaximum(range.max);
@@ -170,9 +175,8 @@ void ExpoDialog::updateScale()
ui->lblScaleUnit->setText(range.unit);
}
else {
ui->lblScale->hide();
ui->dsbScale->hide();
ui->lblScaleUnit->hide();
ui->dsbScale->setEnabled(false);
ui->lblScaleUnit->setEnabled(false);
}
}
@@ -183,13 +187,20 @@ void ExpoDialog::valuesChanged()
RawSource srcRaw = RawSource(ui->sourceCB->itemData(ui->sourceCB->currentIndex()).toInt());
if (ed->srcRaw != srcRaw) {
ed->srcRaw = srcRaw;
if (ed->srcRaw.isStick())
carryTrimFilterFlags = CarryTrimSticksGroup;
else
carryTrimFilterFlags = CarryTrimNotSticksGroup;
ed->carryTrim = CARRYTRIM_DEFAULT;
dialogFilteredItemModels->getItemModel(AIM_EXPO_CARRYTRIM)->setFilterFlags(carryTrimFilterFlags);
ui->trimCB->setCurrentIndex(ui->trimCB->findData(-ed->carryTrim));
ed->scale= 0;
updateScale();
}
RawSourceRange range = srcRaw.getRange(&model, generalSettings);
ed->scale = round(float(ui->dsbScale->value()) / range.step);
ed->carryTrim = 1 - ui->trimCB->currentIndex();
ed->carryTrim = ui->trimCB->itemData(ui->trimCB->currentIndex()).toInt();
ed->swtch = RawSwitch(ui->switchesCB->itemData(ui->switchesCB->currentIndex()).toInt());
ed->mode = ui->sideCB->currentIndex() + 1;
+1
View File
@@ -68,6 +68,7 @@ class ExpoDialog : public QDialog {
QCheckBox * cb_fp[CPN_MAX_FLIGHT_MODES];
FilteredItemModelFactory *dialogFilteredItemModels;
CurveRefFilteredFactory *curveRefFilteredItemModels;
int carryTrimFilterFlags = 0;
};
#endif // _EXPODIALOG_H_
+1 -12
View File
@@ -202,18 +202,7 @@
</widget>
</item>
<item row="6" column="1">
<widget class="QComboBox" name="trimCB">
<item>
<property name="text">
<string>No</string>
</property>
</item>
<item>
<property name="text">
<string>Yes</string>
</property>
</item>
</widget>
<widget class="QComboBox" name="trimCB"/>
</item>
<item row="9" column="1">
<layout class="QHBoxLayout" name="horizontalLayout" stretch="1,0,1,0">
+4 -4
View File
@@ -394,10 +394,10 @@ QString ModelPrinter::printInputLine(const ExpoData & input)
if (firmware->getCapability(VirtualInputs)) {
if (input.carryTrim > 0)
str += " " + tr("NoTrim");
else if (input.carryTrim < 0)
str += " " + RawSource(SOURCE_TYPE_TRIM, (-(input.carryTrim) - 1)).toString(&model, &generalSettings).toHtmlEscaped();
if ((input.srcRaw.isStick() && input.carryTrim == CARRYTRIM_STICK_OFF) || (!input.srcRaw.isStick() && input.carryTrim == CARRYTRIM_DEFAULT))
str += " " + tr("No Trim");
else if (input.carryTrim != CARRYTRIM_DEFAULT)
str += " " + input.carryTrimToString().toHtmlEscaped();
}
if (input.offset)