From 484bbcc0b460cb28a33d61ee717346b6b9615681 Mon Sep 17 00:00:00 2001 From: 3djc Date: Mon, 28 Oct 2019 15:13:17 +0100 Subject: [PATCH] Switch autobold (#7000) Display switches in bold when active, but not on 128 and 212 main view --- radio/src/gui/128x64/lcd.cpp | 4 +++- radio/src/gui/128x64/lcd.h | 2 +- radio/src/gui/128x64/view_main.cpp | 10 +++++----- radio/src/gui/212x64/lcd.cpp | 4 +++- radio/src/gui/212x64/lcd.h | 2 +- radio/src/gui/212x64/view_main.cpp | 2 +- radio/src/gui/480x272/lcd.cpp | 4 +++- radio/src/gui/480x272/lcd.h | 2 +- radio/src/tests/lcd.cpp | 2 +- 9 files changed, 19 insertions(+), 13 deletions(-) diff --git a/radio/src/gui/128x64/lcd.cpp b/radio/src/gui/128x64/lcd.cpp index 4a21dc205..4c671b3ad 100644 --- a/radio/src/gui/128x64/lcd.cpp +++ b/radio/src/gui/128x64/lcd.cpp @@ -788,10 +788,12 @@ void putsModelName(coord_t x, coord_t y, char *name, uint8_t id, LcdFlags att) } } -void drawSwitch(coord_t x, coord_t y, swsrc_t idx, LcdFlags flags) +void drawSwitch(coord_t x, coord_t y, swsrc_t idx, LcdFlags flags, bool autoBold) { char s[8]; getSwitchPositionName(s, idx); + if (autoBold && idx != SWSRC_NONE && getSwitch(idx)) + flags |= BOLD; lcdDrawText(x, y, s, flags); } diff --git a/radio/src/gui/128x64/lcd.h b/radio/src/gui/128x64/lcd.h index 4f3da257a..b0e16cbd3 100644 --- a/radio/src/gui/128x64/lcd.h +++ b/radio/src/gui/128x64/lcd.h @@ -124,7 +124,7 @@ void lcdDraw8bitsNumber(coord_t x, coord_t y, int8_t val); void putsModelName(coord_t x, coord_t y, char * name, uint8_t id, LcdFlags att); #if !defined(BOOT) // TODO not here ... -void drawSwitch(coord_t x, coord_t y, swsrc_t swtch, LcdFlags att=0); +void drawSwitch(coord_t x, coord_t y, swsrc_t swtch, LcdFlags att=0, bool autoBold = true); void drawSource(coord_t x, coord_t y, mixsrc_t idx, LcdFlags att=0); #endif void drawCurveName(coord_t x, coord_t y, int8_t idx, LcdFlags att=0); diff --git a/radio/src/gui/128x64/view_main.cpp b/radio/src/gui/128x64/view_main.cpp index 8f95220ae..5cf5e059e 100644 --- a/radio/src/gui/128x64/view_main.cpp +++ b/radio/src/gui/128x64/view_main.cpp @@ -509,7 +509,7 @@ void menuMainView(event_t event) if (SWITCH_EXISTS(i)) { getvalue_t val = getValue(MIXSRC_FIRST_SWITCH + i); getvalue_t sw = ((val < 0) ? 3 * i + 1 : ((val == 0) ? 3 * i + 2 : 3 * i + 3)); - drawSwitch(x[i], y[i], sw, 0); + drawSwitch(x[i], y[i], sw, 0, false); } } drawSmallSwitch(29, 5*FH+1, 4, SW_SF); @@ -521,7 +521,7 @@ void menuMainView(event_t event) if (SWITCH_EXISTS(i)) { getvalue_t val = getValue(MIXSRC_FIRST_SWITCH + i); getvalue_t sw = ((val < 0) ? 3 * i + 1 : ((val == 0) ? 3 * i + 2 : 3 * i + 3)); - drawSwitch(x[i], y[i], sw, 0); + drawSwitch(x[i], y[i], sw, 0, false); } } #elif defined(PCBXLITES) @@ -531,7 +531,7 @@ void menuMainView(event_t event) if (SWITCH_EXISTS(i)) { getvalue_t val = getValue(MIXSRC_FIRST_SWITCH + i); getvalue_t sw = ((val < 0) ? 3 * i + 1 : ((val == 0) ? 3 * i + 2 : 3 * i + 3)); - drawSwitch(x[i], y[i], sw, 0); + drawSwitch(x[i], y[i], sw, 0, false); } } #elif defined(PCBTARANIS) @@ -545,7 +545,7 @@ void menuMainView(event_t event) } getvalue_t val = getValue(MIXSRC_FIRST_SWITCH+i); getvalue_t sw = ((val < 0) ? 3*i+1 : ((val == 0) ? 3*i+2 : 3*i+3)); - drawSwitch(x, y, sw, 0); + drawSwitch(x, y, sw, 0, false); } } #else @@ -557,7 +557,7 @@ void menuMainView(event_t event) x = 17*FW-1; y -= 3*FH; } - drawSwitch(x, y, sw, getSwitch(i) ? INVERS : 0); + drawSwitch(x, y, sw, getSwitch(i) ? INVERS : 0, false); } #endif } diff --git a/radio/src/gui/212x64/lcd.cpp b/radio/src/gui/212x64/lcd.cpp index 19bb40098..c523643bb 100644 --- a/radio/src/gui/212x64/lcd.cpp +++ b/radio/src/gui/212x64/lcd.cpp @@ -693,10 +693,12 @@ void putsModelName(coord_t x, coord_t y, char *name, uint8_t id, LcdFlags att) } } -void drawSwitch(coord_t x, coord_t y, int32_t idx, LcdFlags flags) +void drawSwitch(coord_t x, coord_t y, int32_t idx, LcdFlags flags, bool autoBold) { char s[8]; getSwitchPositionName(s, idx); + if (autoBold && idx != SWSRC_NONE && getSwitch(idx)) + flags |= BOLD; lcdDrawText(x, y, s, flags); } diff --git a/radio/src/gui/212x64/lcd.h b/radio/src/gui/212x64/lcd.h index 8d5fc785c..5c2e86410 100644 --- a/radio/src/gui/212x64/lcd.h +++ b/radio/src/gui/212x64/lcd.h @@ -118,7 +118,7 @@ void lcdDrawNumber(coord_t x, coord_t y, int32_t val, LcdFlags mode, uint8_t len void lcdDrawNumber(coord_t x, coord_t y, int32_t val, LcdFlags mode=0); void putsModelName(coord_t x, coord_t y, char *name, uint8_t id, LcdFlags att); -void drawSwitch(coord_t x, coord_t y, int32_t swtch, LcdFlags att=0); +void drawSwitch(coord_t x, coord_t y, int32_t swtch, LcdFlags att=0, bool autoBold = true); void putsStickName(coord_t x, coord_t y, uint8_t idx, LcdFlags att=0); void drawSource(coord_t x, coord_t y, uint32_t idx, LcdFlags att=0); void drawCurveName(coord_t x, coord_t y, int8_t idx, LcdFlags att=0); diff --git a/radio/src/gui/212x64/view_main.cpp b/radio/src/gui/212x64/view_main.cpp index eee71f097..56e4c22ae 100644 --- a/radio/src/gui/212x64/view_main.cpp +++ b/radio/src/gui/212x64/view_main.cpp @@ -532,7 +532,7 @@ void menuMainView(event_t event) if (SWITCH_EXISTS(i)) { getvalue_t val = getValue(MIXSRC_FIRST_SWITCH+i); getvalue_t sw = ((val < 0) ? 3*i+1 : ((val == 0) ? 3*i+2 : 3*i+3)); - drawSwitch((g_model.view == VIEW_INPUTS) ? (index<4 ? 8*FW+1 : 23*FW+2) : (index<4 ? 3*FW+1 : 8*FW-2), (index%4)*FH+3*FH, sw, 0); + drawSwitch((g_model.view == VIEW_INPUTS) ? (index<4 ? 8*FW+1 : 23*FW+2) : (index<4 ? 3*FW+1 : 8*FW-2), (index%4)*FH+3*FH, sw, 0, false); index++; } } diff --git a/radio/src/gui/480x272/lcd.cpp b/radio/src/gui/480x272/lcd.cpp index 3623aa955..eed5ed6d8 100644 --- a/radio/src/gui/480x272/lcd.cpp +++ b/radio/src/gui/480x272/lcd.cpp @@ -283,10 +283,12 @@ void putsModelName(coord_t x, coord_t y, char * name, uint8_t id, LcdFlags att) } } -void drawSwitch(coord_t x, coord_t y, swsrc_t idx, LcdFlags flags) +void drawSwitch(coord_t x, coord_t y, swsrc_t idx, LcdFlags flags, bool autoBold) { char s[8]; getSwitchPositionName(s, idx); + if (autoBold && idx != SWSRC_NONE && getSwitch(idx)) + flags |= BOLD; lcdDrawText(x, y, s, flags); } diff --git a/radio/src/gui/480x272/lcd.h b/radio/src/gui/480x272/lcd.h index adce60fbb..455eca8d2 100644 --- a/radio/src/gui/480x272/lcd.h +++ b/radio/src/gui/480x272/lcd.h @@ -147,7 +147,7 @@ void drawTimer(coord_t x, coord_t y, int32_t tme, LcdFlags att=0); void putsModelName(coord_t x, coord_t y, char *name, uint8_t id, LcdFlags att); void putsStickName(coord_t x, coord_t y, uint8_t idx, LcdFlags att=0); -void drawSwitch(coord_t x, coord_t y, swsrc_t swtch, LcdFlags flags=0); +void drawSwitch(coord_t x, coord_t y, swsrc_t swtch, LcdFlags flags=0, bool autoBold = true); void drawSource(coord_t x, coord_t y, mixsrc_t idx, LcdFlags att=0); void drawCurveName(coord_t x, coord_t y, int8_t idx, LcdFlags att=0); void drawTimerMode(coord_t x, coord_t y, swsrc_t mode, LcdFlags att=0); diff --git a/radio/src/tests/lcd.cpp b/radio/src/tests/lcd.cpp index 8375c6f63..5bce5d535 100644 --- a/radio/src/tests/lcd.cpp +++ b/radio/src/tests/lcd.cpp @@ -259,7 +259,7 @@ TEST(Lcd, Dblsize) TEST(Lcd, DrawSwitch) { lcdClear(); - drawSwitch(0, 10, SWSRC_SA0, 0); + drawSwitch(0, 10, SWSRC_SA0, 0, false); drawSwitch(30, 10, SWSRC_SA0, SMLSIZE); // drawSwitch(60, 10, SWSRC_SA0, MIDSIZE); missing arrows in this font drawSwitch(90, 10, SWSRC_SA0, DBLSIZE);