From b429855675b639615159b90eae4bbd1f07ef7de4 Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Thu, 13 May 2021 23:45:42 +0200 Subject: [PATCH] Fixed editName() 212x64 --- radio/src/gui/128x64/gui.h | 8 ++- radio/src/gui/128x64/lcd.cpp | 2 +- radio/src/gui/128x64/lcd.h | 1 - radio/src/gui/128x64/model_custom_scripts.cpp | 2 +- radio/src/gui/128x64/model_flightmodes.cpp | 6 +- radio/src/gui/128x64/model_outputs.cpp | 2 +- radio/src/gui/128x64/model_select.cpp | 4 +- radio/src/gui/128x64/model_setup.cpp | 4 +- .../gui/128x64/model_special_functions.cpp | 2 +- radio/src/gui/128x64/model_telemetry.cpp | 2 +- radio/src/gui/128x64/view_channels.cpp | 2 +- radio/src/gui/128x64/view_main.cpp | 4 +- radio/src/gui/212x64/gui.h | 9 ++- radio/src/gui/212x64/menu_model.cpp | 4 +- radio/src/gui/212x64/model_curve_edit.cpp | 7 ++- radio/src/gui/212x64/model_custom_scripts.cpp | 12 ++-- radio/src/gui/212x64/model_flightmodes.cpp | 4 +- radio/src/gui/212x64/model_gvars.cpp | 4 +- radio/src/gui/212x64/model_input_edit.cpp | 9 ++- radio/src/gui/212x64/model_mix_edit.cpp | 5 +- radio/src/gui/212x64/model_outputs.cpp | 5 +- radio/src/gui/212x64/model_setup.cpp | 19 ++++-- .../src/gui/212x64/model_telemetry_sensor.cpp | 5 +- .../src/gui/common/stdlcd/draw_functions.cpp | 59 +++++++++++++++---- radio/src/gui/common/stdlcd/model_curves.cpp | 4 +- radio/src/gui/common/stdlcd/model_inputs.cpp | 4 +- radio/src/gui/common/stdlcd/model_mixes.cpp | 10 ++-- radio/src/gui/common/stdlcd/popups.cpp | 2 +- .../src/gui/common/stdlcd/radio_hardware.cpp | 22 +++++-- .../src/gui/common/stdlcd/radio_sdmanager.cpp | 10 +++- radio/src/gui/gui_common.h | 6 +- 31 files changed, 169 insertions(+), 70 deletions(-) diff --git a/radio/src/gui/128x64/gui.h b/radio/src/gui/128x64/gui.h index 032a5fbf0..59648a0f9 100644 --- a/radio/src/gui/128x64/gui.h +++ b/radio/src/gui/128x64/gui.h @@ -201,8 +201,12 @@ int16_t editGVarFieldValue(coord_t x, coord_t y, int16_t value, int16_t min, int void gvarWeightItem(coord_t x, coord_t y, MixData * md, LcdFlags attr, event_t event); -void editName(coord_t x, coord_t y, char * name, uint8_t size, event_t event, uint8_t active, LcdFlags attr=ZCHAR); -void editSingleName(coord_t x, coord_t y, const char * label, char * name, uint8_t size, event_t event, uint8_t active); +void editName(coord_t x, coord_t y, char *name, uint8_t size, event_t event, + uint8_t active, LcdFlags attr, uint8_t old_editMode); + +void editSingleName(coord_t x, coord_t y, const char *label, char *name, + uint8_t size, event_t event, uint8_t active, + uint8_t old_editMode); uint8_t editDelay(coord_t y, event_t event, uint8_t attr, const char * str, uint8_t delay); #define EDIT_DELAY(x, y, event, attr, str, delay) editDelay(y, event, attr, str, delay) diff --git a/radio/src/gui/128x64/lcd.cpp b/radio/src/gui/128x64/lcd.cpp index 0c2f623b1..cadb3885a 100644 --- a/radio/src/gui/128x64/lcd.cpp +++ b/radio/src/gui/128x64/lcd.cpp @@ -907,7 +907,7 @@ void drawTimerWithMode(coord_t x, coord_t y, uint8_t index, LcdFlags att) uint8_t xLabel = (negative ? x - 56 : x - 49); uint8_t len = zlen(timer.name, LEN_TIMER_NAME); if (len > 0) { - lcdDrawSizedText(xLabel, y + FH, timer.name, len, RIGHT | ZCHAR); + lcdDrawSizedText(xLabel, y + FH, timer.name, len, RIGHT); } else { drawTimerMode(xLabel, y + FH, timer.mode, RIGHT); diff --git a/radio/src/gui/128x64/lcd.h b/radio/src/gui/128x64/lcd.h index 39e3a5e7b..0ce7e798f 100644 --- a/radio/src/gui/128x64/lcd.h +++ b/radio/src/gui/128x64/lcd.h @@ -54,7 +54,6 @@ typedef int coord_t; #define FIXEDWIDTH 0x10 /* no 0x80 here because of "GV"1 which is aligned LEFT */ /* no 0x10 here because of "MODEL"01 which uses LEADING0 */ -#define ZCHAR 0x80u /* lcdDrawNumber additional flags */ #define LEADING0 0x10 diff --git a/radio/src/gui/128x64/model_custom_scripts.cpp b/radio/src/gui/128x64/model_custom_scripts.cpp index 332d09fa4..ebc9961eb 100644 --- a/radio/src/gui/128x64/model_custom_scripts.cpp +++ b/radio/src/gui/128x64/model_custom_scripts.cpp @@ -169,6 +169,6 @@ void menuModelCustomScripts(event_t event) } // Script name - lcdDrawSizedText(16*FW, y, sd.name, sizeof(sd.name), ZCHAR); + lcdDrawSizedText(16*FW, y, sd.name, sizeof(sd.name), 0); } } diff --git a/radio/src/gui/128x64/model_flightmodes.cpp b/radio/src/gui/128x64/model_flightmodes.cpp index 07f5f0163..435d4be74 100644 --- a/radio/src/gui/128x64/model_flightmodes.cpp +++ b/radio/src/gui/128x64/model_flightmodes.cpp @@ -141,7 +141,7 @@ void menuModelFlightModeOne(event_t event) if (attr && posHorz > 0 && s_currIdx==0) posHorz++; drawStringWithIndex(INDENT_WIDTH, y, STR_GV, idx+1, posHorz==0 ? attr : 0); - lcdDrawSizedText(4*FW, y,g_model.gvars[idx].name, LEN_GVAR_NAME, ZCHAR); + lcdDrawSizedText(4*FW, y,g_model.gvars[idx].name, LEN_GVAR_NAME, 0); if (attr && editMode>0 && posHorz==0) { s_currIdxSubMenu = sub - ITEM_MODEL_FLIGHT_MODE_GV1; editMode = 0; @@ -213,9 +213,9 @@ void menuModelFlightModesAll(event_t event) FlightModeData * p = flightModeAddress(i); drawFlightMode(0, y, i+1, att|(getFlightMode()==i ? BOLD : 0)); #if defined(PCBTARANIS) - lcdDrawSizedText(NAME_POS, y, p->name, sizeof(p->name), ZCHAR); + lcdDrawSizedText(NAME_POS, y, p->name, sizeof(p->name), 0); #else - lcdDrawSizedText(4*FW+NAME_OFS, y, p->name, sizeof(p->name), ZCHAR); + lcdDrawSizedText(4*FW+NAME_OFS, y, p->name, sizeof(p->name), 0); #endif if (i == 0) { for (uint8_t t=0; tname, sizeof(ld->name), ((sub==k) ? INVERS : 0) | ZCHAR | LEFT); + lcdDrawSizedText(0, y, ld->name, sizeof(ld->name), ((sub==k) ? INVERS : 0) | LEFT); } for (uint8_t j=0; jlabel, TELEM_LABEL_LEN, attr|ZCHAR); + lcdDrawSizedText(MODEL_SPECIAL_FUNC_3RD_COLUMN, y, sensor->label, TELEM_LABEL_LEN, attr); } if (active) INCDEC_ENABLE_CHECK(functionsContext == &globalFunctionsContext ? isSourceAvailableInGlobalResetSpecialFunction : isSourceAvailableInResetSpecialFunction); } diff --git a/radio/src/gui/128x64/model_telemetry.cpp b/radio/src/gui/128x64/model_telemetry.cpp index 49a749533..55a063428 100644 --- a/radio/src/gui/128x64/model_telemetry.cpp +++ b/radio/src/gui/128x64/model_telemetry.cpp @@ -143,7 +143,7 @@ void menuModelTelemetry(event_t event) int index = k - ITEM_TELEMETRY_SENSOR_FIRST; lcdDrawNumber(INDENT_WIDTH, y, index+1, LEFT|attr); lcdDrawChar(lcdLastRightPos, y, ':', attr); - lcdDrawSizedText(3*FW, y, g_model.telemetrySensors[index].label, TELEM_LABEL_LEN, ZCHAR); + lcdDrawSizedText(3*FW, y, g_model.telemetrySensors[index].label, TELEM_LABEL_LEN, 0); if (telemetryItems[index].isFresh()) { lcdDrawChar(TELEM_COL3, y, '*'); } diff --git a/radio/src/gui/128x64/view_channels.cpp b/radio/src/gui/128x64/view_channels.cpp index ffb4d9b33..b5e8d38ae 100644 --- a/radio/src/gui/128x64/view_channels.cpp +++ b/radio/src/gui/128x64/view_channels.cpp @@ -88,7 +88,7 @@ void menuChannelsViewCommon(event_t event) if (lenLabel > 0) { if (lenLabel > 4) reusableBuffer.viewChannels.longNames = true; - lcdDrawSizedText(CHANNEL_NAME_OFFSET, y, g_model.limitData[ch].name, sizeof(g_model.limitData[ch].name), ZCHAR | SMLSIZE); + lcdDrawSizedText(CHANNEL_NAME_OFFSET, y, g_model.limitData[ch].name, sizeof(g_model.limitData[ch].name), SMLSIZE); } else { putsChn(CHANNEL_NAME_OFFSET, y, ch + 1, SMLSIZE); diff --git a/radio/src/gui/128x64/view_main.cpp b/radio/src/gui/128x64/view_main.cpp index 1f7b7eb2b..ddb354d48 100644 --- a/radio/src/gui/128x64/view_main.cpp +++ b/radio/src/gui/128x64/view_main.cpp @@ -739,7 +739,7 @@ void menuMainView(event_t event) if (view_base != VIEW_CHAN_MONITOR) { // Flight Mode Name uint8_t mode = mixerCurrentFlightMode; - lcdDrawSizedText(PHASE_X, PHASE_Y, g_model.flightModeData[mode].name, sizeof(g_model.flightModeData[mode].name), ZCHAR | PHASE_FLAGS); + lcdDrawSizedText(PHASE_X, PHASE_Y, g_model.flightModeData[mode].name, sizeof(g_model.flightModeData[mode].name), PHASE_FLAGS); // Model Name drawModelName(MODELNAME_X, MODELNAME_Y, g_model.header.name, g_eeGeneral.currModel, BIGSIZE); @@ -767,7 +767,7 @@ void menuMainView(event_t event) gvarDisplayTimer--; warningText = STR_GLOBAL_VAR; drawMessageBox(warningText); - lcdDrawSizedText(16, 5 * FH, g_model.gvars[gvarLastChanged].name, LEN_GVAR_NAME, ZCHAR); + lcdDrawSizedText(16, 5 * FH, g_model.gvars[gvarLastChanged].name, LEN_GVAR_NAME, 0); lcdDrawText(16 + 6 * FW, 5 * FH, "[", BOLD); drawGVarValue(lcdLastRightPos, 5 * FH, gvarLastChanged, GVAR_VALUE(gvarLastChanged, getGVarFlightMode(mixerCurrentFlightMode, gvarLastChanged)), LEFT | BOLD); diff --git a/radio/src/gui/212x64/gui.h b/radio/src/gui/212x64/gui.h index fec4f27c0..c9006446b 100644 --- a/radio/src/gui/212x64/gui.h +++ b/radio/src/gui/212x64/gui.h @@ -230,8 +230,13 @@ void gvarWeightItem(coord_t x, coord_t y, MixData * md, LcdFlags attr, event_t e void editCurveRef(coord_t x, coord_t y, CurveRef & curve, event_t event, LcdFlags flags); extern uint8_t editNameCursorPos; -void editName(coord_t x, coord_t y, char * name, uint8_t size, event_t event, uint8_t active, LcdFlags attr=ZCHAR); -void editSingleName(coord_t x, coord_t y, const char * label, char * name, uint8_t size, event_t event, uint8_t active); + +void editName(coord_t x, coord_t y, char *name, uint8_t size, event_t event, + uint8_t active, LcdFlags attr, uint8_t old_editMode); + +void editSingleName(coord_t x, coord_t y, const char *label, char *name, + uint8_t size, event_t event, uint8_t active, + uint8_t old_editMode); uint8_t editDelay(coord_t y, event_t event, uint8_t attr, const char * str, uint8_t delay); #define EDIT_DELAY(y, event, attr, str, delay) editDelay(y, event, attr, str, delay) diff --git a/radio/src/gui/212x64/menu_model.cpp b/radio/src/gui/212x64/menu_model.cpp index a2143d61e..ed42924be 100644 --- a/radio/src/gui/212x64/menu_model.cpp +++ b/radio/src/gui/212x64/menu_model.cpp @@ -60,11 +60,11 @@ uint8_t s_copySrcCh; uint8_t editNameCursorPos = 0; -void editSingleName(coord_t x, coord_t y, const char * label, char *name, uint8_t size, event_t event, uint8_t active) +void editSingleName(coord_t x, coord_t y, const char * label, char *name, uint8_t size, event_t event, uint8_t active, uint8_t old_editMode) { lcdDrawTextAlignedLeft(y, label); TRACE("EDIT SINGLE NAME %s", name); - editName(x, y, name, size, event, active); + editName(x, y, name, size, event, active, 0, old_editMode); } uint8_t s_currIdx; diff --git a/radio/src/gui/212x64/model_curve_edit.cpp b/radio/src/gui/212x64/model_curve_edit.cpp index 5a79d07a2..6a028c1dc 100644 --- a/radio/src/gui/212x64/model_curve_edit.cpp +++ b/radio/src/gui/212x64/model_curve_edit.cpp @@ -100,12 +100,15 @@ void menuModelCurveOne(event_t event) lcdDrawText(11*FW+FW/2, 0, TR_PT "\002X\006Y"); lcdDrawFilledRect(0, 0, LCD_W, FH, SOLID, FILL_WHITE|GREY_DEFAULT); + uint8_t old_editMode = s_editMode; + SIMPLE_SUBMENU(STR_MENUCURVES, 4 + 5+crv.points + (crv.type==CURVE_TYPE_CUSTOM ? 5+crv.points-2 : 0)); // Curve name lcdDrawTextAlignedLeft(FH + 1, STR_NAME); - editName(INDENT_WIDTH, 2 * FH + 1, crv.name, sizeof(crv.name), event, menuVerticalPosition == 0); - + editName(INDENT_WIDTH, 2 * FH + 1, crv.name, sizeof(crv.name), event, + menuVerticalPosition == 0, 0, old_editMode); + // Curve type lcdDrawTextAlignedLeft(3 * FH + 1, NO_INDENT(STR_TYPE)); LcdFlags attr = (menuVerticalPosition == 1 ? (s_editMode > 0 ? INVERS | BLINK : INVERS) : 0); diff --git a/radio/src/gui/212x64/model_custom_scripts.cpp b/radio/src/gui/212x64/model_custom_scripts.cpp index fb13b1826..12b904e04 100644 --- a/radio/src/gui/212x64/model_custom_scripts.cpp +++ b/radio/src/gui/212x64/model_custom_scripts.cpp @@ -54,6 +54,8 @@ void menuModelCustomScriptOne(event_t event) drawStringWithIndex(PSIZE(TR_MENUCUSTOMSCRIPTS)*FW+FW, 0, "LUA", s_currIdx+1, 0); lcdDrawFilledRect(0, 0, LCD_W, FH, SOLID, FILL_WHITE|GREY_DEFAULT); + uint8_t old_editMode = s_editMode; + SUBMENU(STR_MENUCUSTOMSCRIPTS, 3+scriptInputsOutputs[s_currIdx].inputsCount, { 0, 0, LABEL(inputs), 0/*repeated*/ }); int8_t sub = menuVerticalPosition; @@ -81,12 +83,12 @@ void menuModelCustomScriptOne(event_t event) } else if (i == ITEM_MODEL_CUSTOMSCRIPT_NAME) { lcdDrawTextAlignedLeft(y, TR_NAME); - editName(SCRIPT_ONE_2ND_COLUMN_POS, y, sd.name, sizeof(sd.name), event, attr); - } - else if (i == ITEM_MODEL_CUSTOMSCRIPT_PARAMS_LABEL) { + editName(SCRIPT_ONE_2ND_COLUMN_POS, y, sd.name, sizeof(sd.name), event, + (attr != 0), attr, old_editMode); + } else if (i == ITEM_MODEL_CUSTOMSCRIPT_PARAMS_LABEL) { lcdDrawTextAlignedLeft(y, STR_INPUTS); - } - else if (i <= ITEM_MODEL_CUSTOMSCRIPT_PARAMS_LABEL+scriptInputsOutputs[s_currIdx].inputsCount) { + } else if (i <= ITEM_MODEL_CUSTOMSCRIPT_PARAMS_LABEL + + scriptInputsOutputs[s_currIdx].inputsCount) { int inputIdx = i-ITEM_MODEL_CUSTOMSCRIPT_PARAMS_LABEL-1; lcdDrawSizedText(INDENT_WIDTH, y, scriptInputsOutputs[s_currIdx].inputs[inputIdx].name, 10, 0); if (scriptInputsOutputs[s_currIdx].inputs[inputIdx].type == INPUT_TYPE_VALUE) { diff --git a/radio/src/gui/212x64/model_flightmodes.cpp b/radio/src/gui/212x64/model_flightmodes.cpp index efa287ee1..1c3e77d0b 100644 --- a/radio/src/gui/212x64/model_flightmodes.cpp +++ b/radio/src/gui/212x64/model_flightmodes.cpp @@ -50,6 +50,8 @@ bool isTrimModeAvailable(int mode) void menuModelFlightModesAll(event_t event) { + uint8_t old_editMode = s_editMode; + MENU(STR_MENUFLIGHTMODES, menuTabModel, MENU_MODEL_FLIGHT_MODES, MAX_FLIGHT_MODES+1, { NAVIGATION_LINE_BY_LINE|(ITEM_FLIGHT_MODES_LAST-1), NAVIGATION_LINE_BY_LINE|ITEM_FLIGHT_MODES_LAST, NAVIGATION_LINE_BY_LINE|ITEM_FLIGHT_MODES_LAST, NAVIGATION_LINE_BY_LINE|NAVIGATION_LINE_BY_LINE|ITEM_FLIGHT_MODES_LAST, NAVIGATION_LINE_BY_LINE|ITEM_FLIGHT_MODES_LAST, NAVIGATION_LINE_BY_LINE|ITEM_FLIGHT_MODES_LAST, NAVIGATION_LINE_BY_LINE|ITEM_FLIGHT_MODES_LAST, NAVIGATION_LINE_BY_LINE|ITEM_FLIGHT_MODES_LAST, NAVIGATION_LINE_BY_LINE|ITEM_FLIGHT_MODES_LAST, 0 }); int8_t sub = menuVerticalPosition; @@ -101,7 +103,7 @@ void menuModelFlightModesAll(event_t event) uint8_t active = (attr && s_editMode>0) ; switch (j) { case ITEM_FLIGHT_MODES_NAME: - editName(4*FW-1, y, p->name, sizeof(p->name), event, attr); + editName(4*FW-1, y, p->name, sizeof(p->name), event, active, attr, old_editMode); break; case ITEM_FLIGHT_MODES_SWITCH: diff --git a/radio/src/gui/212x64/model_gvars.cpp b/radio/src/gui/212x64/model_gvars.cpp index 48421797d..a72a599f2 100644 --- a/radio/src/gui/212x64/model_gvars.cpp +++ b/radio/src/gui/212x64/model_gvars.cpp @@ -70,6 +70,8 @@ void menuModelGVarOne(event_t event) drawGVarValue(32*FW, 0, s_currIdx, getGVarValue(s_currIdx, getFlightMode())); lcdDrawFilledRect(0, 0, LCD_W, FH, SOLID, FILL_WHITE|GREY_DEFAULT); + uint8_t old_editMode = s_editMode; + SIMPLE_SUBMENU(STR_GVARS, GVAR_FIELD_LAST); for (int i=0; iname, LEN_GVAR_NAME, event, attr); + editSingleName(GVAR_2ND_COLUMN, y, STR_NAME, gvar->name, LEN_GVAR_NAME, event, attr, old_editMode); break; case GVAR_FIELD_UNIT: diff --git a/radio/src/gui/212x64/model_input_edit.cpp b/radio/src/gui/212x64/model_input_edit.cpp index 6882f040b..374dac49d 100644 --- a/radio/src/gui/212x64/model_input_edit.cpp +++ b/radio/src/gui/212x64/model_input_edit.cpp @@ -58,6 +58,8 @@ void menuModelExpoOne(event_t event) drawSource(PSIZE(TR_MENUINPUTS)*FW+FW, 0, MIXSRC_FIRST_INPUT+ed->chn, 0); lcdDrawFilledRect(0, 0, LCD_W, FH, SOLID, FILL_WHITE|GREY_DEFAULT); + uint8_t old_editMode = s_editMode; + SUBMENU(STR_MENUINPUTS, EXPO_FIELD_MAX, {0, 0, 0, ed->srcRaw >= MIXSRC_FIRST_TELEM ? (uint8_t)0 : (uint8_t)HIDDEN_ROW, 0, 0, CURVE_ROWS, CASE_FLIGHT_MODES((MAX_FLIGHT_MODES-1) | NAVIGATION_LINE_BY_LINE) 0 /*, ...*/}); SET_SCROLLBAR_X(EXPO_ONE_2ND_COLUMN+10*FW); @@ -77,11 +79,14 @@ void menuModelExpoOne(event_t event) switch (i) { case EXPO_FIELD_INPUT_NAME: - editSingleName(EXPO_ONE_2ND_COLUMN, y, STR_INPUTNAME, g_model.inputNames[ed->chn], LEN_INPUT_NAME, event, attr); + editSingleName(EXPO_ONE_2ND_COLUMN, y, STR_INPUTNAME, + g_model.inputNames[ed->chn], LEN_INPUT_NAME, event, attr, + old_editMode); break; case EXPO_FIELD_LINE_NAME: - editSingleName(EXPO_ONE_2ND_COLUMN, y, STR_EXPONAME, ed->name, LEN_EXPOMIX_NAME, event, attr); + editSingleName(EXPO_ONE_2ND_COLUMN, y, STR_EXPONAME, ed->name, + LEN_EXPOMIX_NAME, event, attr, old_editMode); break; case EXPO_FIELD_SOURCE: diff --git a/radio/src/gui/212x64/model_mix_edit.cpp b/radio/src/gui/212x64/model_mix_edit.cpp index b46d678a9..fd03618fd 100644 --- a/radio/src/gui/212x64/model_mix_edit.cpp +++ b/radio/src/gui/212x64/model_mix_edit.cpp @@ -94,6 +94,8 @@ void menuModelMixOne(event_t event) putsChn(PSIZE(TR_MIXES)*FW+FW, 0, md2->destCh+1,0); lcdDrawFilledRect(0, 0, LCD_W, FH, SOLID, FILL_WHITE|GREY_DEFAULT); + uint8_t old_editMode = s_editMode; + SUBMENU(STR_MIXES, MIX_FIELD_COUNT, {0, 0, 0, 0, 0, 1, CASE_FLIGHT_MODES((MAX_FLIGHT_MODES-1) | NAVIGATION_LINE_BY_LINE) 0, 0 /*, ...*/}); int8_t sub = menuVerticalPosition; @@ -105,7 +107,8 @@ void menuModelMixOne(event_t event) LcdFlags attr = (sub==i ? INVERS | (editMode>0 ? BLINK : 0) : 0); switch (i) { case MIX_FIELD_NAME: - editSingleName(MIXES_2ND_COLUMN, y, STR_MIXNAME, md2->name, sizeof(md2->name), event, attr); + editSingleName(MIXES_2ND_COLUMN, y, STR_MIXNAME, md2->name, + sizeof(md2->name), event, attr, old_editMode); break; case MIX_FIELD_SOURCE: diff --git a/radio/src/gui/212x64/model_outputs.cpp b/radio/src/gui/212x64/model_outputs.cpp index 404788aeb..1b21b60d2 100644 --- a/radio/src/gui/212x64/model_outputs.cpp +++ b/radio/src/gui/212x64/model_outputs.cpp @@ -104,6 +104,8 @@ void menuModelLimits(event_t event) #endif } + uint8_t old_editMode = s_editMode; + MENU(STR_MENULIMITS, menuTabModel, MENU_MODEL_OUTPUTS, MAX_OUTPUT_CHANNELS+1, { NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, 0 }); if (sub=0) { @@ -155,7 +157,8 @@ void menuModelLimits(event_t event) switch(j) { case ITEM_LIMITS_CH_NAME: - editName(LIMITS_NAME_POS, y, ld->name, sizeof(ld->name), event, attr); + editName(LIMITS_NAME_POS, y, ld->name, sizeof(ld->name), event, attr, + 0, old_editMode); break; case ITEM_LIMITS_OFFSET: diff --git a/radio/src/gui/212x64/model_setup.cpp b/radio/src/gui/212x64/model_setup.cpp index a1ad6cd7a..aa9d6123e 100644 --- a/radio/src/gui/212x64/model_setup.cpp +++ b/radio/src/gui/212x64/model_setup.cpp @@ -427,8 +427,11 @@ void menuModelSetup(event_t event) switch (k) { case ITEM_MODEL_SETUP_NAME: - editSingleName(MODEL_SETUP_2ND_COLUMN, y, STR_MODELNAME, g_model.header.name, sizeof(g_model.header.name), event, attr); - memcpy(modelHeaders[g_eeGeneral.currModel].name, g_model.header.name, sizeof(g_model.header.name)); + editSingleName(MODEL_SETUP_2ND_COLUMN, y, STR_MODELNAME, + g_model.header.name, sizeof(g_model.header.name), event, + attr, old_editMode); + memcpy(modelHeaders[g_eeGeneral.currModel].name, g_model.header.name, + sizeof(g_model.header.name)); break; case ITEM_MODEL_SETUP_BITMAP: @@ -453,7 +456,9 @@ void menuModelSetup(event_t event) break; case ITEM_MODEL_SETUP_TIMER1_NAME: - editSingleName(MODEL_SETUP_2ND_COLUMN, y, INDENT TR_NAME, g_model.timers[0].name, LEN_TIMER_NAME, event, attr); + editSingleName(MODEL_SETUP_2ND_COLUMN, y, INDENT TR_NAME, + g_model.timers[0].name, LEN_TIMER_NAME, event, attr, + old_editMode); break; case ITEM_MODEL_SETUP_TIMER1_MINUTE_BEEP: @@ -474,7 +479,9 @@ void menuModelSetup(event_t event) break; case ITEM_MODEL_SETUP_TIMER2_NAME: - editSingleName(MODEL_SETUP_2ND_COLUMN, y, INDENT TR_NAME, g_model.timers[1].name, LEN_TIMER_NAME, event, attr); + editSingleName(MODEL_SETUP_2ND_COLUMN, y, INDENT TR_NAME, + g_model.timers[1].name, LEN_TIMER_NAME, event, attr, + old_editMode); break; case ITEM_MODEL_SETUP_TIMER2_MINUTE_BEEP: @@ -496,7 +503,9 @@ void menuModelSetup(event_t event) break; case ITEM_MODEL_SETUP_TIMER3_NAME: - editSingleName(MODEL_SETUP_2ND_COLUMN, y, INDENT TR_NAME, g_model.timers[2].name, LEN_TIMER_NAME, event, attr); + editSingleName(MODEL_SETUP_2ND_COLUMN, y, INDENT TR_NAME, + g_model.timers[2].name, LEN_TIMER_NAME, event, attr, + old_editMode); break; case ITEM_MODEL_SETUP_TIMER3_MINUTE_BEEP: diff --git a/radio/src/gui/212x64/model_telemetry_sensor.cpp b/radio/src/gui/212x64/model_telemetry_sensor.cpp index df1ced3bb..cf5cc497d 100644 --- a/radio/src/gui/212x64/model_telemetry_sensor.cpp +++ b/radio/src/gui/212x64/model_telemetry_sensor.cpp @@ -62,6 +62,8 @@ void menuModelSensor(event_t event) drawSensorCustomValue(25*FW, 0, s_currIdx, getValue(MIXSRC_FIRST_TELEM+3*s_currIdx)); lcdDrawFilledRect(0, 0, LCD_W, FH, SOLID, FILL_WHITE|GREY_DEFAULT); + uint8_t old_editMode = s_editMode; + SUBMENU(STR_MENUSENSOR, SENSOR_FIELD_MAX, { 0, //Name 0, // Type @@ -96,7 +98,8 @@ void menuModelSensor(event_t event) switch (k) { case SENSOR_FIELD_NAME: - editSingleName(SENSOR_2ND_COLUMN, y, STR_NAME, sensor->label, TELEM_LABEL_LEN, event, attr); + editSingleName(SENSOR_2ND_COLUMN, y, STR_NAME, sensor->label, + TELEM_LABEL_LEN, event, attr, old_editMode); break; case SENSOR_FIELD_TYPE: sensor->type = editChoice(SENSOR_2ND_COLUMN, y, NO_INDENT(STR_TYPE), STR_VSENSORTYPES, sensor->type, 0, 1, attr, event); diff --git a/radio/src/gui/common/stdlcd/draw_functions.cpp b/radio/src/gui/common/stdlcd/draw_functions.cpp index dca834647..0e215efff 100644 --- a/radio/src/gui/common/stdlcd/draw_functions.cpp +++ b/radio/src/gui/common/stdlcd/draw_functions.cpp @@ -154,7 +154,30 @@ char getPreviousChar(char c, uint8_t position) return c - 1; } -void editName(coord_t x, coord_t y, char * name, uint8_t size, event_t event, uint8_t active, LcdFlags attr) +static bool isNameCharset(int v) +{ + char c = (char)v; + + if (c == ' ') + return true; + + if (c == '-') + return true; + + if (c >= '0' && c <= '9') + return true; + + if (c >= 'A' && c <= 'Z') + return true; + + if (c >= 'a' && c <= 'z') + return true; + + return false; +} + +void editName(coord_t x, coord_t y, char* name, uint8_t size, event_t event, + uint8_t active, LcdFlags attr, uint8_t old_editMode) { uint8_t mode = 0; if (active) { @@ -171,16 +194,10 @@ void editName(coord_t x, coord_t y, char * name, uint8_t size, event_t event, ui uint8_t cur = editNameCursorPos; if (s_editMode > 0) { int8_t c = name[cur]; - int8_t v = c; + int8_t v = c ? c : ' '; if (IS_NEXT_EVENT(event) || IS_PREVIOUS_EVENT(event)) { - if (attr == ZCHAR) { - v = checkIncDec(event, abs(v), 0, ZCHAR_MAX, 0); - if (c <= 0) v = -v; - } - else { - v = checkIncDec(event, abs(v), ' ', 'z', 0); - } + v = checkIncDec(event, abs(v), ' ', 'z', 0, isNameCharset); } switch (event) { @@ -250,6 +267,25 @@ void editName(coord_t x, coord_t y, char * name, uint8_t size, event_t event, ui } editNameCursorPos = cur; lcdNextPos = backupNextPos; + + if ((old_editMode > 0) && (s_editMode == 0)) { + bool modified = false; + for (uint8_t i = size - 1; i > 0; --i) { + // wipe empty spaces + if (name[i] == ' ') { + name[i] = '\0'; + modified = true; + + } else if (name[i] != '\0') { + // and stop at the first non empty character + break; + } + } + + if (modified) { + storageDirty(isModelMenuDisplayed() ? EE_MODEL : EE_GENERAL); + } + } } } @@ -268,11 +304,12 @@ void drawGVarName(coord_t x, coord_t y, int8_t idx, LcdFlags flags) lcdDrawText(x, y, s, flags); } -void editStickHardwareSettings(coord_t x, coord_t y, int idx, event_t event, LcdFlags flags) +void editStickHardwareSettings(coord_t x, coord_t y, int idx, event_t event, LcdFlags flags, uint8_t old_editMode) { lcdDrawTextAtIndex(INDENT_WIDTH, y, STR_VSRCRAW, idx+1, 0); if (g_eeGeneral.anaNames[idx][0] || (flags && s_editMode > 0)) - editName(x, y, g_eeGeneral.anaNames[idx], LEN_ANA_NAME, event, flags); + editName(x, y, g_eeGeneral.anaNames[idx], LEN_ANA_NAME, event, (flags != 0), + flags, old_editMode); else lcdDrawMMM(x, y, flags); } diff --git a/radio/src/gui/common/stdlcd/model_curves.cpp b/radio/src/gui/common/stdlcd/model_curves.cpp index 46336baf3..14e1fc215 100644 --- a/radio/src/gui/common/stdlcd/model_curves.cpp +++ b/radio/src/gui/common/stdlcd/model_curves.cpp @@ -41,6 +41,8 @@ void drawCurve(coord_t offset) void menuModelCurvesAll(event_t event) { + uint8_t old_editMode = s_editMode; + #if defined(GVARS_IN_CURVES_SCREEN) SIMPLE_MENU(STR_MENUCURVES, menuTabModel, MENU_MODEL_CURVES, HEADER_LINE+MAX_CURVES+MAX_GVARS); #else @@ -83,7 +85,7 @@ void menuModelCurvesAll(event_t event) { drawStringWithIndex(0, y, STR_CV, k+1, attr); CurveHeader & crv = g_model.curves[k]; - editName(4*FW, y, crv.name, sizeof(crv.name), 0, 0); + editName(4*FW, y, crv.name, sizeof(crv.name), 0, 0, 0, old_editMode); #if LCD_W >= 212 lcdDrawNumber(11*FW, y, 5+crv.points, LEFT); lcdDrawText(lcdLastRightPos, y, STR_PTS, 0); diff --git a/radio/src/gui/common/stdlcd/model_inputs.cpp b/radio/src/gui/common/stdlcd/model_inputs.cpp index b2dd513ba..9a75e4a2e 100644 --- a/radio/src/gui/common/stdlcd/model_inputs.cpp +++ b/radio/src/gui/common/stdlcd/model_inputs.cpp @@ -185,7 +185,7 @@ void displayExpoLine(coord_t y, ExpoData * ed) displayFlightModes(EXPO_LINE_FM_POS, y, ed->flightModes); if (ed->name[0]) { - lcdDrawSizedText(EXPO_LINE_NAME_POS, y, ed->name, sizeof(ed->name), ZCHAR); + lcdDrawSizedText(EXPO_LINE_NAME_POS, y, ed->name, sizeof(ed->name), 0); } #if LCD_DEPTH > 1 @@ -217,7 +217,7 @@ void displayExpoLine(coord_t y, ExpoData * ed) drawSource(EXPO_LINE_SRC_POS, y, ed->srcRaw, 0); if (ed->name[0]) - lcdDrawSizedText(EXPO_LINE_INFOS_POS, y, ed->name, LEN_EXPOMIX_NAME, ZCHAR); + lcdDrawSizedText(EXPO_LINE_INFOS_POS, y, ed->name, LEN_EXPOMIX_NAME, 0); else if (!ed->flightModes || ((ed->curve.value || ed->swtch) && ((get_tmr10ms() / 200) & 1))) displayExpoInfos(y, ed); else diff --git a/radio/src/gui/common/stdlcd/model_mixes.cpp b/radio/src/gui/common/stdlcd/model_mixes.cpp index 103083486..5d370e766 100644 --- a/radio/src/gui/common/stdlcd/model_mixes.cpp +++ b/radio/src/gui/common/stdlcd/model_mixes.cpp @@ -166,7 +166,7 @@ void onMixesMenu(const char * result) void displayHeaderChannelName(uint8_t ch) { if (g_model.limitData[ch].name[0] != '\0') { - lcdDrawSizedText(MIX_HDR_GAUGE_POS_X - FWNUM * 5 - 1, 1, g_model.limitData[ch].name, ZLEN(g_model.limitData[ch].name), ZCHAR|SMLSIZE|RIGHT); + lcdDrawSizedText(MIX_HDR_GAUGE_POS_X - FWNUM * 5 - 1, 1, g_model.limitData[ch].name, ZLEN(g_model.limitData[ch].name), SMLSIZE|RIGHT); } } @@ -182,7 +182,7 @@ void displayMixInfos(coord_t y, MixData * md) void displayMixLine(coord_t y, MixData * md) { if (md->name[0]) - lcdDrawSizedText(MIX_LINE_NAME_POS, y, md->name, sizeof(md->name), ZCHAR); + lcdDrawSizedText(MIX_LINE_NAME_POS, y, md->name, sizeof(md->name), 0); if (!md->flightModes || ((md->curve.value || md->swtch) && ((get_tmr10ms() / 200) & 1))) displayMixInfos(y, md); else @@ -208,7 +208,7 @@ void displayHeaderChannelName(uint8_t ch) { uint8_t len = zlen(g_model.limitData[ch].name, sizeof(g_model.limitData[ch].name)); if (len) { - lcdDrawSizedText(80, 1, g_model.limitData[ch].name, len, ZCHAR|SMLSIZE); + lcdDrawSizedText(80, 1, g_model.limitData[ch].name, len, SMLSIZE); } } @@ -231,7 +231,7 @@ void displayMixInfos(coord_t y, MixData * md) void displayMixLine(coord_t y, MixData * md, bool active) { if(active && md->name[0]) { - lcdDrawSizedText(FW*sizeof(TR_MIXES)+FW/2, 0, md->name, sizeof(md->name), ZCHAR); + lcdDrawSizedText(FW*sizeof(TR_MIXES)+FW/2, 0, md->name, sizeof(md->name), 0); if (!md->flightModes || ((md->curve.value || md->swtch) && ((get_tmr10ms() / 200) & 1))) displayMixInfos(y, md); else @@ -239,7 +239,7 @@ void displayMixLine(coord_t y, MixData * md, bool active) } else { if (md->name[0]) - lcdDrawSizedText(MIX_LINE_NAME_POS, y, md->name, sizeof(md->name), ZCHAR); + lcdDrawSizedText(MIX_LINE_NAME_POS, y, md->name, sizeof(md->name), 0); else if (!md->flightModes || ((md->curve.value || md->swtch) && ((get_tmr10ms() / 200) & 1))) displayMixInfos(y, md); else diff --git a/radio/src/gui/common/stdlcd/popups.cpp b/radio/src/gui/common/stdlcd/popups.cpp index 7a7fbe633..de2abfd1e 100644 --- a/radio/src/gui/common/stdlcd/popups.cpp +++ b/radio/src/gui/common/stdlcd/popups.cpp @@ -25,7 +25,7 @@ const char * warningInfoText; uint8_t warningInfoLength; uint8_t warningType; uint8_t warningResult = 0; -uint8_t warningInfoFlags = ZCHAR; +uint8_t warningInfoFlags = 0; uint8_t popupMenuOffsetType = MENU_OFFSET_INTERNAL; void (* popupFunc)(event_t event) = nullptr; diff --git a/radio/src/gui/common/stdlcd/radio_hardware.cpp b/radio/src/gui/common/stdlcd/radio_hardware.cpp index ff994b0a9..ef09d070e 100644 --- a/radio/src/gui/common/stdlcd/radio_hardware.cpp +++ b/radio/src/gui/common/stdlcd/radio_hardware.cpp @@ -323,6 +323,8 @@ void onFactoryResetConfirm(const char * result) void menuRadioHardware(event_t event) { + uint8_t old_editMode = s_editMode; + MENU(STR_HARDWARE, menuTabGeneral, MENU_RADIO_HARDWARE, HEADER_LINE + ITEM_RADIO_HARDWARE_MAX, { HEADER_LINE_COLUMNS 0 /* calibration button */, @@ -391,7 +393,9 @@ void menuRadioHardware(event_t event) case ITEM_RADIO_HARDWARE_STICK2: case ITEM_RADIO_HARDWARE_STICK3: case ITEM_RADIO_HARDWARE_STICK4: - editStickHardwareSettings(HW_SETTINGS_COLUMN1, y, k - ITEM_RADIO_HARDWARE_STICK1, event, attr); + editStickHardwareSettings(HW_SETTINGS_COLUMN1, y, + k - ITEM_RADIO_HARDWARE_STICK1, event, + attr, old_editMode); break; #if (NUM_POTS + NUM_SLIDERS) > 0 @@ -415,7 +419,9 @@ void menuRadioHardware(event_t event) uint8_t mask = (0x03 << shift); lcdDrawTextAtIndex(INDENT_WIDTH, y, STR_VSRCRAW, NUM_STICKS+idx+1, menuHorizontalPosition < 0 ? attr : 0); if (g_eeGeneral.anaNames[NUM_STICKS+idx][0] || (attr && s_editMode > 0 && menuHorizontalPosition == 0)) - editName(HW_SETTINGS_COLUMN1, y, g_eeGeneral.anaNames[NUM_STICKS+idx], LEN_ANA_NAME, event, attr && menuHorizontalPosition == 0); + editName(HW_SETTINGS_COLUMN1, y, + g_eeGeneral.anaNames[NUM_STICKS + idx], LEN_ANA_NAME, event, + attr && menuHorizontalPosition == 0, 0, old_editMode); else lcdDrawMMM(HW_SETTINGS_COLUMN1, y, menuHorizontalPosition==0 ? attr : 0); uint8_t potType = (g_eeGeneral.potsConfig & mask) >> shift; @@ -436,7 +442,10 @@ void menuRadioHardware(event_t event) int idx = k - ITEM_RADIO_HARDWARE_SLIDER1; lcdDrawTextAtIndex(INDENT_WIDTH, y, STR_VSRCRAW, NUM_STICKS+NUM_POTS+idx+1, menuHorizontalPosition < 0 ? attr : 0); if (ZEXIST(g_eeGeneral.anaNames[NUM_STICKS+NUM_POTS+idx]) || (attr && menuHorizontalPosition == 0 && s_editMode > 0)) - editName(HW_SETTINGS_COLUMN1, y, g_eeGeneral.anaNames[NUM_STICKS+NUM_POTS+idx], LEN_ANA_NAME, event, attr && menuHorizontalPosition == 0); + editName(HW_SETTINGS_COLUMN1, y, + g_eeGeneral.anaNames[NUM_STICKS + NUM_POTS + idx], + LEN_ANA_NAME, event, attr && menuHorizontalPosition == 0, + 0, old_editMode); else lcdDrawMMM(HW_SETTINGS_COLUMN1, y, menuHorizontalPosition == 0 ? attr : 0); uint8_t mask = (0x01 << idx); @@ -490,7 +499,9 @@ void menuRadioHardware(event_t event) int config = SWITCH_CONFIG(index); lcdDrawTextAtIndex(INDENT_WIDTH, y, STR_VSRCRAW, MIXSRC_FIRST_SWITCH - MIXSRC_Rud + index + 1, menuHorizontalPosition < 0 ? attr : 0); if (ZEXIST(g_eeGeneral.switchNames[index]) || (attr && s_editMode > 0 && menuHorizontalPosition == 0)) - editName(HW_SETTINGS_COLUMN1, y, g_eeGeneral.switchNames[index], LEN_SWITCH_NAME, event, menuHorizontalPosition == 0 ? attr : 0); + editName(HW_SETTINGS_COLUMN1, y, g_eeGeneral.switchNames[index], + LEN_SWITCH_NAME, event, + menuHorizontalPosition == 0 ? attr : 0, 0, old_editMode); else lcdDrawMMM(HW_SETTINGS_COLUMN1, y, menuHorizontalPosition == 0 ? attr : 0); config = editChoice(HW_SETTINGS_COLUMN2, y, "", STR_SWTYPES, config, SWITCH_NONE, SWITCH_TYPE_MAX(index), menuHorizontalPosition == 1 ? attr : 0, event); @@ -589,7 +600,8 @@ void menuRadioHardware(event_t event) case ITEM_RADIO_HARDWARE_BLUETOOTH_NAME: lcdDrawText(INDENT_WIDTH, y, STR_NAME); - editName(HW_SETTINGS_COLUMN2, y, g_eeGeneral.bluetoothName, LEN_BLUETOOTH_NAME, event, attr); + editName(HW_SETTINGS_COLUMN2, y, g_eeGeneral.bluetoothName, + LEN_BLUETOOTH_NAME, event, (attr != 0), attr, old_editMode); break; #endif diff --git a/radio/src/gui/common/stdlcd/radio_sdmanager.cpp b/radio/src/gui/common/stdlcd/radio_sdmanager.cpp index 3a84c6a2f..a7542d0af 100644 --- a/radio/src/gui/common/stdlcd/radio_sdmanager.cpp +++ b/radio/src/gui/common/stdlcd/radio_sdmanager.cpp @@ -313,6 +313,7 @@ void menuRadioSdManager(event_t _event) #endif event_t event = (EVT_KEY_MASK(_event) == KEY_ENTER ? 0 : _event); + uint8_t old_editMode = s_editMode; SIMPLE_MENU(SD_IS_HC() ? STR_SDHC_CARD : STR_SD_CARD, menuTabGeneral, MENU_RADIO_SD_MANAGER, HEADER_LINE + reusableBuffer.sdManager.count); switch (_event) { @@ -579,8 +580,13 @@ void menuRadioSdManager(event_t _event) if (s_editMode == EDIT_MODIFY_STRING && attr) { uint8_t extlen, efflen; const char * ext = getFileExtension(reusableBuffer.sdManager.originalName, 0, 0, nullptr, &extlen); - editName(lcdNextPos, y, reusableBuffer.sdManager.lines[i], SD_SCREEN_FILE_LENGTH - extlen, _event, attr, 0); - efflen = effectiveLen(reusableBuffer.sdManager.lines[i], SD_SCREEN_FILE_LENGTH - extlen); + + editName(lcdNextPos, y, reusableBuffer.sdManager.lines[i], + SD_SCREEN_FILE_LENGTH - extlen, _event, attr, 0, old_editMode); + + efflen = effectiveLen(reusableBuffer.sdManager.lines[i], + SD_SCREEN_FILE_LENGTH - extlen); + if (s_editMode == 0) { if (ext) { strAppend(&reusableBuffer.sdManager.lines[i][efflen], ext); diff --git a/radio/src/gui/gui_common.h b/radio/src/gui/gui_common.h index 9b005dbb8..dfc9d5bac 100644 --- a/radio/src/gui/gui_common.h +++ b/radio/src/gui/gui_common.h @@ -352,8 +352,10 @@ inline uint8_t MODULE_OPTION_ROW(uint8_t moduleIdx) { return MULTIMODULE_OPTIONS_ROW(moduleIdx); } -void editStickHardwareSettings(coord_t x, coord_t y, int idx, event_t event, LcdFlags flags); -const char * getMultiOptionTitle(uint8_t moduleIdx); +void editStickHardwareSettings(coord_t x, coord_t y, int idx, event_t event, + LcdFlags flags, uint8_t old_editMode); + +const char *getMultiOptionTitle(uint8_t moduleIdx); const char * writeScreenshot();