fix(bw128): improve logical switch navigation & editing (#5096)
This commit is contained in:
@@ -69,8 +69,6 @@ void menuModelLogicalSwitchOne(event_t event)
|
||||
|
||||
int8_t sub = menuVerticalPosition;
|
||||
|
||||
int v1_val = cs->v1;
|
||||
|
||||
for (uint8_t k=0; k<LCD_LINES-1; k++) {
|
||||
coord_t y = MENU_HEADER_HEIGHT + 1 + k*FH;
|
||||
uint8_t i = k + menuVerticalOffset;
|
||||
@@ -84,10 +82,11 @@ void menuModelLogicalSwitchOne(event_t event)
|
||||
cs->func = 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;
|
||||
|
||||
Reference in New Issue
Block a user