Fix model input trims and cosmetic for scale fields
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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_
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user