Merge pull request #472 from EdgeTX/fix-mpm-option-title

[color] Fix MPM option title==nullptr
This commit is contained in:
Peter Feerick
2021-07-20 10:01:28 +10:00
committed by GitHub
3 changed files with 86 additions and 62 deletions
+60 -49
View File
@@ -687,58 +687,69 @@ class ModuleWindow : public FormGroup {
const uint8_t multi_proto = g_model.moduleData[moduleIdx].getMultiProtocol();
if (MULTIMODULE_PROTOCOL_KNOWN(moduleIdx)) {
// Multi optional feature row
const char *title = getMultiOptionTitle(moduleIdx);
grid.nextLine();
new StaticText(this, grid.getLabelSlot(true), title);
const char *title = getMultiOptionTitleStatic(moduleIdx);
if (title != nullptr) {
grid.nextLine();
new StaticText(this, grid.getLabelSlot(true), title);
//int optionValue = g_model.moduleData[moduleIdx].multi.optionValue;
int8_t min, max;
getMultiOptionValues(multi_proto, min, max);
// int optionValue =
// g_model.moduleData[moduleIdx].multi.optionValue;
int8_t min, max;
getMultiOptionValues(multi_proto, min, max);
if (title == STR_MULTI_RFPOWER) {
new Choice(this, grid.getFieldSlot(2, 0), STR_MULTI_POWER, 0, 15,
GET_SET_DEFAULT(g_model.moduleData[moduleIdx].multi.optionValue));
} else if (title == STR_MULTI_TELEMETRY) {
new Choice(this, grid.getFieldSlot(2, 0), STR_MULTI_TELEMETRY_MODE, min, max,
GET_SET_DEFAULT(g_model.moduleData[moduleIdx].multi.optionValue));
} else if (title == STR_MULTI_WBUS) {
new Choice(this, grid.getFieldSlot(2, 0), STR_MULTI_WBUS_MODE, 0, 1,
GET_SET_DEFAULT(g_model.moduleData[moduleIdx].multi.optionValue));
} else if (multi_proto == MODULE_SUBTYPE_MULTI_FS_AFHDS2A) {
auto edit = new NumberEdit(
this, grid.getFieldSlot(2, 0), 50, 400,
GET_DEFAULT(
50 + 5 * g_model.moduleData[moduleIdx].multi.optionValue),
SET_VALUE(g_model.moduleData[moduleIdx].multi.optionValue,
(newValue - 50) / 5));
edit->setStep(5);
} else if (multi_proto == MODULE_SUBTYPE_MULTI_DSM2) {
new CheckBox(
this, grid.getFieldSlot(2, 0),
[=]() {
return g_model.moduleData[moduleIdx].multi.optionValue & 0x01;
},
[=](int16_t newValue) {
g_model.moduleData[moduleIdx].multi.optionValue =
(g_model.moduleData[moduleIdx].multi.optionValue & 0xFE) +
newValue;
});
} else {
if (min == 0 && max == 1) {
new CheckBox(this, grid.getFieldSlot(2, 0),
GET_SET_DEFAULT(g_model.moduleData[moduleIdx].multi.optionValue));
if (title == STR_MULTI_RFPOWER) {
new Choice(this, grid.getFieldSlot(2, 0), STR_MULTI_POWER, 0, 15,
GET_SET_DEFAULT(
g_model.moduleData[moduleIdx].multi.optionValue));
} else if (title == STR_MULTI_TELEMETRY) {
new Choice(this, grid.getFieldSlot(2, 0),
STR_MULTI_TELEMETRY_MODE, min, max,
GET_SET_DEFAULT(
g_model.moduleData[moduleIdx].multi.optionValue));
} else if (title == STR_MULTI_WBUS) {
new Choice(this, grid.getFieldSlot(2, 0), STR_MULTI_WBUS_MODE, 0,
1,
GET_SET_DEFAULT(
g_model.moduleData[moduleIdx].multi.optionValue));
} else if (multi_proto == MODULE_SUBTYPE_MULTI_FS_AFHDS2A) {
auto edit = new NumberEdit(
this, grid.getFieldSlot(2, 0), 50, 400,
GET_DEFAULT(
50 + 5 * g_model.moduleData[moduleIdx].multi.optionValue),
SET_VALUE(g_model.moduleData[moduleIdx].multi.optionValue,
(newValue - 50) / 5));
edit->setStep(5);
} else if (multi_proto == MODULE_SUBTYPE_MULTI_DSM2) {
new CheckBox(
this, grid.getFieldSlot(2, 0),
[=]() {
return g_model.moduleData[moduleIdx].multi.optionValue &
0x01;
},
[=](int16_t newValue) {
g_model.moduleData[moduleIdx].multi.optionValue =
(g_model.moduleData[moduleIdx].multi.optionValue &
0xFE) +
newValue;
});
} else {
new NumberEdit(
this, grid.getFieldSlot(2, 0), -128, 127,
GET_SET_DEFAULT(
g_model.moduleData[moduleIdx].multi.optionValue));
if (min == 0 && max == 1) {
new CheckBox(
this, grid.getFieldSlot(2, 0),
GET_SET_DEFAULT(
g_model.moduleData[moduleIdx].multi.optionValue));
} else {
new NumberEdit(
this, grid.getFieldSlot(2, 0), -128, 127,
GET_SET_DEFAULT(
g_model.moduleData[moduleIdx].multi.optionValue));
// Show RSSI next to RF Freq Fine Tune
if (getMultiOptionTitle(moduleIdx) == STR_MULTI_RFTUNE) {
new DynamicNumber<int>(
this, grid.getFieldSlot(2, 1),
[] { return (int)TELEMETRY_RSSI(); }, 0, "RSSI: ", " db");
// Show RSSI next to RF Freq Fine Tune
if (title == STR_MULTI_RFTUNE) {
new DynamicNumber<int>(
this, grid.getFieldSlot(2, 1),
[] { return (int)TELEMETRY_RSSI(); }, 0, "RSSI: ", " db");
}
}
}
}
@@ -782,7 +793,7 @@ class ModuleWindow : public FormGroup {
GET_SET_DEFAULT(
g_model.moduleData[moduleIdx].multi.disableTelemetry));
if (MULTI_DISABLE_CHAN_MAP_ROW(moduleIdx) != HIDDEN_ROW) {
if (MULTI_DISABLE_CHAN_MAP_ROW_STATIC(moduleIdx) != HIDDEN_ROW) {
// Disable channel mapping
grid.nextLine();
new StaticText(this, grid.getLabelSlot(true), STR_DISABLE_CH_MAP);
+9 -5
View File
@@ -1100,6 +1100,13 @@ const mm_protocol_definition *getMultiProtocolDefinition (uint8_t protocol)
#endif
#if defined(MULTIMODULE)
const char * getMultiOptionTitleStatic(uint8_t moduleIdx)
{
const uint8_t multi_proto = g_model.moduleData[moduleIdx].getMultiProtocol();
const mm_protocol_definition * pdef = getMultiProtocolDefinition(multi_proto);
return pdef->optionsstr;
}
const char * getMultiOptionTitle(uint8_t moduleIdx)
{
MultiModuleStatus &status = getMultiModuleStatus(moduleIdx);
@@ -1110,10 +1117,7 @@ const char * getMultiOptionTitle(uint8_t moduleIdx)
}
return mm_options_strings::options[status.optionDisp];
}
else {
const uint8_t multi_proto = g_model.moduleData[moduleIdx].getMultiProtocol();
const mm_protocol_definition * pdef = getMultiProtocolDefinition(multi_proto);
return pdef->optionsstr;
}
return getMultiOptionTitleStatic(moduleIdx);
}
#endif
+17 -8
View File
@@ -220,6 +220,21 @@ inline uint8_t IF_ALLOW_RACING_MODE(int)
#endif
#if defined(MULTIMODULE)
inline uint8_t MULTI_DISABLE_CHAN_MAP_ROW_STATIC(uint8_t moduleIdx)
{
if (!isModuleMultimodule(moduleIdx))
return HIDDEN_ROW;
uint8_t protocol = g_model.moduleData[moduleIdx].getMultiProtocol();
if (protocol < MODULE_SUBTYPE_MULTI_LAST) {
const mm_protocol_definition * pdef = getMultiProtocolDefinition(protocol);
if (pdef->disable_ch_mapping)
return 0;
}
return HIDDEN_ROW;
}
inline uint8_t MULTI_DISABLE_CHAN_MAP_ROW(uint8_t moduleIdx)
{
if (!isModuleMultimodule(moduleIdx))
@@ -230,14 +245,7 @@ inline uint8_t MULTI_DISABLE_CHAN_MAP_ROW(uint8_t moduleIdx)
return status.supportsDisableMapping() == true ? 0 : HIDDEN_ROW;
}
uint8_t protocol = g_model.moduleData[moduleIdx].getMultiProtocol();
if (protocol < MODULE_SUBTYPE_MULTI_LAST) {
const mm_protocol_definition * pdef = getMultiProtocolDefinition(protocol);
if (pdef->disable_ch_mapping)
return 0;
}
return HIDDEN_ROW;
return MULTI_DISABLE_CHAN_MAP_ROW_STATIC(moduleIdx);
}
inline bool isMultiProtocolSelectable(int protocol)
@@ -355,6 +363,7 @@ inline uint8_t MODULE_OPTION_ROW(uint8_t moduleIdx) {
void editStickHardwareSettings(coord_t x, coord_t y, int idx, event_t event,
LcdFlags flags, uint8_t old_editMode);
const char * getMultiOptionTitleStatic(uint8_t moduleIdx);
const char *getMultiOptionTitle(uint8_t moduleIdx);
const char * writeScreenshot();