From 869a3ab39461d773843a1999199caa21a812f5a3 Mon Sep 17 00:00:00 2001 From: philmoz Date: Sun, 2 Jun 2024 08:39:44 +1000 Subject: [PATCH] fix(bw128): improve logical switch navigation & editing (#5096) --- .../src/gui/128x64/model_logical_switches.cpp | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/radio/src/gui/128x64/model_logical_switches.cpp b/radio/src/gui/128x64/model_logical_switches.cpp index f3ff737b8..43422a462 100644 --- a/radio/src/gui/128x64/model_logical_switches.cpp +++ b/radio/src/gui/128x64/model_logical_switches.cpp @@ -69,8 +69,6 @@ void menuModelLogicalSwitchOne(event_t event) int8_t sub = menuVerticalPosition; - int v1_val = cs->v1; - for (uint8_t k=0; kfunc = checkIncDec(event, cs->func, 0, LS_FUNC_MAX, EE_MODEL); uint8_t new_cstate = lswFamily(cs->func); if (cstate != new_cstate) { - if (new_cstate == LS_FAMILY_TIMER) { + cstate = new_cstate; + if (cstate == LS_FAMILY_TIMER) { cs->v1 = cs->v2 = -119; } - else if (new_cstate == LS_FAMILY_EDGE) { + else if (cstate == LS_FAMILY_EDGE) { cs->v1 = 0; cs->v2 = -129; cs->v3 = 0; } else { @@ -103,7 +102,7 @@ void menuModelLogicalSwitchOne(event_t event) lcdDrawTextAlignedLeft(y, STR_V1); int v1_min=0, v1_max=MIXSRC_LAST_TELEM; if (cstate == LS_FAMILY_BOOL || cstate == LS_FAMILY_STICKY || cstate == LS_FAMILY_EDGE) { - drawSwitch(CSWONE_2ND_COLUMN, y, v1_val, attr); + drawSwitch(CSWONE_2ND_COLUMN, y, cs->v1, attr); v1_min = SWSRC_FIRST_IN_LOGICAL_SWITCHES; v1_max = SWSRC_LAST_IN_LOGICAL_SWITCHES; INCDEC_SET_FLAG(EE_MODEL | INCDEC_SWITCH); INCDEC_ENABLE_CHECK(isSwitchAvailableInLogicalSwitches); @@ -114,13 +113,12 @@ void menuModelLogicalSwitchOne(event_t event) v1_max = 122; } else { - v1_val = cs->v1; - drawSource(CSWONE_2ND_COLUMN, y, v1_val, attr); + drawSource(CSWONE_2ND_COLUMN, y, cs->v1, attr); INCDEC_SET_FLAG(EE_MODEL | INCDEC_SOURCE | INCDEC_SOURCE_INVERT); INCDEC_ENABLE_CHECK(isSourceAvailable); } if (attr) { - cs->v1 = CHECK_INCDEC_PARAM(event, v1_val, v1_min, v1_max); + cs->v1 = CHECK_INCDEC_PARAM(event, cs->v1, v1_min, v1_max); } break; } @@ -156,9 +154,9 @@ void menuModelLogicalSwitchOne(event_t event) INCDEC_ENABLE_CHECK(isSourceAvailable); } else { - if (v1_val >= MIXSRC_FIRST_TELEM) { - drawSourceCustomValue(CSWONE_2ND_COLUMN, y, v1_val, convertLswTelemValue(cs), attr|LEFT); - v2_max = maxTelemValue(v1_val - MIXSRC_FIRST_TELEM + 1); + if (abs(cs->v1) >= MIXSRC_FIRST_TELEM) { + drawSourceCustomValue(CSWONE_2ND_COLUMN, y, cs->v1, convertLswTelemValue(cs), attr|LEFT); + v2_max = maxTelemValue(cs->v1 - MIXSRC_FIRST_TELEM + 1); if ((cs->func == LS_FUNC_APOS) || (cs->func == LS_FUNC_ANEG) || (cs->func == LS_FUNC_ADIFFEGREATER)) v2_min = 0; else @@ -172,10 +170,10 @@ void menuModelLogicalSwitchOne(event_t event) else { LcdFlags lf = attr | LEFT; - getMixSrcRange(v1_val, v2_min, v2_max, &lf); + getMixSrcRange(cs->v1, v2_min, v2_max, &lf); if ((cs->func == LS_FUNC_APOS) || (cs->func == LS_FUNC_ANEG) || (cs->func == LS_FUNC_ADIFFEGREATER)) v2_min = 0; - drawSourceCustomValue(CSWONE_2ND_COLUMN, y, v1_val, (abs(v1_val) <= MIXSRC_LAST_CH ? calc100toRESX(cs->v2) : cs->v2), lf); + drawSourceCustomValue(CSWONE_2ND_COLUMN, y, cs->v1, (abs(cs->v1) <= MIXSRC_LAST_CH ? calc100toRESX(cs->v2) : cs->v2), lf); } } @@ -256,7 +254,7 @@ void menuModelLogicalSwitches(event_t event) uint8_t k = 0; int8_t sub = menuVerticalPosition - HEADER_LINE; - if (event == EVT_KEY_BREAK(KEY_ENTER)) { + if ((event == EVT_KEY_BREAK(KEY_ENTER)) || (event == EVT_KEY_LONG(KEY_ENTER))) { LogicalSwitchData * cs = lswAddress(sub); if (cs->func) s_currIdx = sub;