From 27252a41ac863442df977e6ebff2d076e47ed02c Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Sat, 5 Jun 2021 00:10:17 +0200 Subject: [PATCH] Fixed editName() 128x64 --- radio/src/gui/128x64/menu_model.cpp | 9 ++++---- radio/src/gui/128x64/model_curve_edit.cpp | 7 +++++-- radio/src/gui/128x64/model_custom_scripts.cpp | 21 +++++++++++-------- radio/src/gui/128x64/model_flightmodes.cpp | 5 ++++- radio/src/gui/128x64/model_gvars.cpp | 5 ++++- radio/src/gui/128x64/model_input_edit.cpp | 12 ++++++++--- radio/src/gui/128x64/model_mix_edit.cpp | 6 +++++- radio/src/gui/128x64/model_outputs.cpp | 5 ++++- radio/src/gui/128x64/model_setup.cpp | 10 ++++++--- .../src/gui/128x64/model_telemetry_sensor.cpp | 5 ++++- 10 files changed, 59 insertions(+), 26 deletions(-) diff --git a/radio/src/gui/128x64/menu_model.cpp b/radio/src/gui/128x64/menu_model.cpp index b98372bd3..85649ae33 100644 --- a/radio/src/gui/128x64/menu_model.cpp +++ b/radio/src/gui/128x64/menu_model.cpp @@ -35,13 +35,14 @@ uint8_t s_maxLines = 8; uint8_t s_copySrcIdx; uint8_t s_copySrcCh; - uint8_t editNameCursorPos = 0; +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); - 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/128x64/model_curve_edit.cpp b/radio/src/gui/128x64/model_curve_edit.cpp index 267745864..add5f9956 100644 --- a/radio/src/gui/128x64/model_curve_edit.cpp +++ b/radio/src/gui/128x64/model_curve_edit.cpp @@ -93,13 +93,16 @@ void menuModelCurveOne(event_t event) int8_t * points = curveAddress(s_currIdxSubMenu); drawStringWithIndex(PSIZE(TR_MENUCURVES)*FW+FW, 0, STR_CV, s_currIdxSubMenu+1); + + 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/128x64/model_custom_scripts.cpp b/radio/src/gui/128x64/model_custom_scripts.cpp index ebc9961eb..8bb90859a 100644 --- a/radio/src/gui/128x64/model_custom_scripts.cpp +++ b/radio/src/gui/128x64/model_custom_scripts.cpp @@ -61,6 +61,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, 0); + uint8_t old_editMode = s_editMode; + SUBMENU(STR_MENUCUSTOMSCRIPTS, 3+scriptInputsOutputs[s_currIdx].inputsCount+scriptInputsOutputs[s_currIdx].outputsCount + 1 /*outputs label*/, { 0, 0, LABEL(inputs), 0/*repeated*/ }); int8_t sub = menuVerticalPosition; @@ -88,12 +90,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) { @@ -111,14 +113,15 @@ void menuModelCustomScriptOne(event_t event) CHECK_INCDEC_MODELSOURCE(event, g_model.scriptsData[s_currIdx].inputs[inputIdx].source, 0, MIXSRC_LAST_TELEM); } } - } - else if (i == ITEM_MODEL_CUSTOMSCRIPT_PARAMS_LABEL+scriptInputsOutputs[s_currIdx].inputsCount+1) { + } else if (i == ITEM_MODEL_CUSTOMSCRIPT_PARAMS_LABEL + + scriptInputsOutputs[s_currIdx].inputsCount + 1) { lcdDrawTextAlignedLeft(y, STR_OUTPUTS); if (attr) { REPEAT_LAST_CURSOR_MOVE(); } - } - else if (i <= ITEM_MODEL_CUSTOMSCRIPT_PARAMS_LABEL+scriptInputsOutputs[s_currIdx].inputsCount+scriptInputsOutputs[s_currIdx].outputsCount+1) { + } else if (i <= ITEM_MODEL_CUSTOMSCRIPT_PARAMS_LABEL + + scriptInputsOutputs[s_currIdx].inputsCount + + scriptInputsOutputs[s_currIdx].outputsCount + 1) { int outputIdx = i-(ITEM_MODEL_CUSTOMSCRIPT_PARAMS_LABEL+scriptInputsOutputs[s_currIdx].inputsCount)-2; lcdDrawSizedText(INDENT_WIDTH, y, scriptInputsOutputs[s_currIdx].outputs[outputIdx].name, 10, 0); lcdDrawNumber(SCRIPT_ONE_2ND_COLUMN_POS, y, calcRESXto1000(scriptInputsOutputs[s_currIdx].outputs[outputIdx].value), attr|PREC1|LEFT); diff --git a/radio/src/gui/128x64/model_flightmodes.cpp b/radio/src/gui/128x64/model_flightmodes.cpp index 435d4be74..cd118da8d 100644 --- a/radio/src/gui/128x64/model_flightmodes.cpp +++ b/radio/src/gui/128x64/model_flightmodes.cpp @@ -63,6 +63,8 @@ void menuModelFlightModeOne(event_t event) FlightModeData * fm = flightModeAddress(s_currIdx); drawFlightMode(13*FW, 0, s_currIdx+1, (getFlightMode()==s_currIdx ? BOLD : 0)); + uint8_t old_editMode = s_editMode; + #if defined(GVARS) && !defined(GVARS_IN_CURVES_SCREEN) #define VERTICAL_SHIFT (ITEM_MODEL_FLIGHT_MODE_FADE_IN-ITEM_MODEL_FLIGHT_MODE_TRIMS) static const uint8_t mstate_tab_fm1[] = {0, 3, 0, 0, (uint8_t)-1, 1, 1, 1, 1, 1, 1}; @@ -98,7 +100,8 @@ void menuModelFlightModeOne(event_t event) #endif switch (i) { case ITEM_MODEL_FLIGHT_MODE_NAME: - editSingleName(MIXES_2ND_COLUMN, y, STR_PHASENAME, fm->name, sizeof(fm->name), event, attr); + editSingleName(MIXES_2ND_COLUMN, y, STR_PHASENAME, fm->name, + sizeof(fm->name), event, attr, old_editMode); break; case ITEM_MODEL_FLIGHT_MODE_SWITCH: diff --git a/radio/src/gui/128x64/model_gvars.cpp b/radio/src/gui/128x64/model_gvars.cpp index d0e651fd2..c98791ff6 100644 --- a/radio/src/gui/128x64/model_gvars.cpp +++ b/radio/src/gui/128x64/model_gvars.cpp @@ -70,6 +70,8 @@ void menuModelGVarOne(event_t event) drawGVarValue(32*FW, 0, s_currIdxSubMenu, getGVarValue(s_currIdxSubMenu, getFlightMode())); lcdDrawFilledRect(0, 0, LCD_W, FH, SOLID); + 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/128x64/model_input_edit.cpp b/radio/src/gui/128x64/model_input_edit.cpp index bac85677e..44ed86a2a 100644 --- a/radio/src/gui/128x64/model_input_edit.cpp +++ b/radio/src/gui/128x64/model_input_edit.cpp @@ -67,7 +67,9 @@ void menuModelExpoOne(event_t event) #endif ExpoData * ed = expoAddress(s_currIdx); drawSource(PSIZE(TR_MENUINPUTS)*FW+FW, 0, MIXSRC_FIRST_INPUT+ed->chn, 0); - + + 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, LABEL(Curve), 1, CASE_FLIGHT_MODES(LABEL(Flight Mode)) CASE_FLIGHT_MODES((MAX_FLIGHT_MODES-1) | NAVIGATION_LINE_BY_LINE) 0 /*, ...*/}); int8_t sub = menuVerticalPosition; @@ -85,11 +87,15 @@ void menuModelExpoOne(event_t event) switch (i) { case EXPO_FIELD_INPUT_NAME: - editSingleName(EXPO_ONE_2ND_COLUMN-LEN_INPUT_NAME*FW, y, STR_INPUTNAME, g_model.inputNames[ed->chn], LEN_INPUT_NAME, event, attr); + editSingleName(EXPO_ONE_2ND_COLUMN - LEN_INPUT_NAME * FW, y, + STR_INPUTNAME, g_model.inputNames[ed->chn], + LEN_INPUT_NAME, event, (attr != 0), old_editMode); break; case EXPO_FIELD_LINE_NAME: - editSingleName(EXPO_ONE_2ND_COLUMN-LEN_EXPOMIX_NAME*FW, y, STR_EXPONAME, ed->name, LEN_EXPOMIX_NAME, event, attr); + editSingleName(EXPO_ONE_2ND_COLUMN - LEN_EXPOMIX_NAME * FW, y, + STR_EXPONAME, ed->name, LEN_EXPOMIX_NAME, event, + (attr != 0), old_editMode); break; case EXPO_FIELD_SOURCE: diff --git a/radio/src/gui/128x64/model_mix_edit.cpp b/radio/src/gui/128x64/model_mix_edit.cpp index 671ba55f9..b1e38736c 100644 --- a/radio/src/gui/128x64/model_mix_edit.cpp +++ b/radio/src/gui/128x64/model_mix_edit.cpp @@ -103,6 +103,8 @@ void menuModelMixOne(event_t event) #endif MixData * md2 = mixAddress(s_currIdx) ; putsChn(PSIZE(TR_MIXES)*FW+FW, 0, md2->destCh+1,0); + + 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 /*, ...*/}); @@ -122,7 +124,9 @@ void menuModelMixOne(event_t event) LcdFlags attr = (sub==i ? (editMode>0 ? BLINK|INVERS : INVERS) : 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 != 0), + old_editMode); break; case MIX_FIELD_SOURCE: diff --git a/radio/src/gui/128x64/model_outputs.cpp b/radio/src/gui/128x64/model_outputs.cpp index 63b7bba1a..89f5a08cb 100644 --- a/radio/src/gui/128x64/model_outputs.cpp +++ b/radio/src/gui/128x64/model_outputs.cpp @@ -105,6 +105,8 @@ void menuModelLimitsOne(event_t event) lcdDrawNumber(19*FW, 0, PPM_CH_CENTER(s_currIdx)+channelOutputs[s_currIdx]/2, RIGHT); lcdDrawText(19*FW, 0, STR_US); + uint8_t old_editMode = s_editMode; + SUBMENU_NOTITLE(ITEM_OUTPUTONE_MAXROW, { 0, 0, 0, 0, 0, 0 , 0 /*, 0...*/ }); int8_t sub = menuVerticalPosition; @@ -118,7 +120,8 @@ void menuModelLimitsOne(event_t event) switch (i) { case ITEM_OUTPUTONE_CH_NAME: - editSingleName(LIMITS_ONE_2ND_COLUMN, y, STR_NAME, ld->name, sizeof(ld->name), event, attr); + editSingleName(LIMITS_ONE_2ND_COLUMN, y, STR_NAME, ld->name, + sizeof(ld->name), event, attr, old_editMode); break; case ITEM_OUTPUTONE_OFFSET: diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index 66adac2cd..5e6853cae 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -485,8 +485,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_TIMER1: @@ -543,7 +546,8 @@ void menuModelSetup(event_t event) case ITEM_MODEL_SETUP_TIMER3_NAME: { TimerData * timer = &g_model.timers[k>=ITEM_MODEL_SETUP_TIMER3 ? 2 : (k>=ITEM_MODEL_SETUP_TIMER2 ? 1 : 0)]; - editSingleName(MODEL_SETUP_2ND_COLUMN, y, INDENT TR_NAME, timer->name, sizeof(timer->name), event, attr); + editSingleName(MODEL_SETUP_2ND_COLUMN, y, INDENT TR_NAME, timer->name, + sizeof(timer->name), event, attr, old_editMode); break; } diff --git a/radio/src/gui/128x64/model_telemetry_sensor.cpp b/radio/src/gui/128x64/model_telemetry_sensor.cpp index 304ddc8bb..2b9714505 100644 --- a/radio/src/gui/128x64/model_telemetry_sensor.cpp +++ b/radio/src/gui/128x64/model_telemetry_sensor.cpp @@ -47,6 +47,8 @@ void menuModelSensor(event_t event) { TelemetrySensor * sensor = & g_model.telemetrySensors[s_currIdx]; + uint8_t old_editMode = s_editMode; + SUBMENU(STR_MENUSENSOR, SENSOR_FIELD_MAX, { 0, // Name 0, // Type @@ -85,7 +87,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: