From aa19475c9058d41559423b8459a5ec82ad085695 Mon Sep 17 00:00:00 2001 From: 3djc Date: Tue, 24 Jan 2017 09:25:38 -0800 Subject: [PATCH] 3djc/x7 mixer screen rework (#4281) * Optimise display on 128x64 * Name if present are displayed (like now), but when the row is selected, the name moves on top and the display alternates between FM and other info * Compile fix --- radio/src/gui/common/stdlcd/model_mixes.cpp | 38 ++++++++++++++------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/radio/src/gui/common/stdlcd/model_mixes.cpp b/radio/src/gui/common/stdlcd/model_mixes.cpp index 2ee874ed4..39a28bb24 100644 --- a/radio/src/gui/common/stdlcd/model_mixes.cpp +++ b/radio/src/gui/common/stdlcd/model_mixes.cpp @@ -195,12 +195,12 @@ void displayMixLine(coord_t y, MixData * md) cs = (cs == 'S' ? '*' : 'D'); lcdDrawChar(MIX_LINE_DELAY_POS, y, cs); } -#else +#else // LCD_W >= 212 #define MIX_LINE_WEIGHT_POS 6*FW+8 #define MIX_LINE_SRC_POS 7*FW+3 -#define MIX_LINE_CURVE_POS 12*FW -#define MIX_LINE_SWITCH_POS 16*FW+4 -#define MIX_LINE_FM_POS 13*FW+3 +#define MIX_LINE_CURVE_POS 12*FW+3 +#define MIX_LINE_SWITCH_POS 16*FW+5 +#define MIX_LINE_FM_POS 19*FW #define MIX_LINE_DELAY_POS 20*FW+2 #define MIX_LINE_NAME_POS LCD_W-LEN_EXPOMIX_NAME*FW @@ -228,16 +228,25 @@ void displayMixInfos(coord_t y, MixData * md) lcdDrawChar(MIX_LINE_DELAY_POS, y, cs); } -void displayMixLine(coord_t y, MixData * md) +void displayMixLine(coord_t y, MixData * md, bool active) { - if (md->name[0]) - lcdDrawSizedText(MIX_LINE_NAME_POS, y, md->name, sizeof(md->name), ZCHAR); - else if (!md->flightModes || ((md->curve.value || md->swtch) && ((get_tmr10ms() / 200) & 1))) - displayMixInfos(y, md); - else - displayFlightModes(MIX_LINE_FM_POS, y, md->flightModes); + if(active && md->name[0]) { + lcdDrawSizedText(FW*sizeof(TR_MIXER), 0, md->name, sizeof(md->name), ZCHAR); + if (!md->flightModes || ((md->curve.value || md->swtch) && ((get_tmr10ms() / 200) & 1))) + displayMixInfos(y, md); + else + displayFlightModes(MIX_LINE_FM_POS, y, md->flightModes); + } + else { + if (md->name[0]) + lcdDrawSizedText(MIX_LINE_NAME_POS, y, md->name, sizeof(md->name), ZCHAR); + else if (!md->flightModes || ((md->curve.value || md->swtch) && ((get_tmr10ms() / 200) & 1))) + displayMixInfos(y, md); + else + displayFlightModes(MIX_LINE_FM_POS, y, md->flightModes); + } } -#endif +#endif // LCD_W >= 212 void menuModelMixAll(event_t event) { @@ -433,8 +442,11 @@ void menuModelMixAll(event_t event) drawSource(MIX_LINE_SRC_POS, y, md->srcRaw, 0); gvarWeightItem(MIX_LINE_WEIGHT_POS, y, md, RIGHT | attr | (isMixActive(i) ? BOLD : 0), 0); - +#if LCD_W >= 212 displayMixLine(y, md); +#else + displayMixLine(y, md, (sub == cur)); +#endif if (s_copyMode) { if ((s_copyMode==COPY_MODE || s_copyTgtOfs == 0) && s_copySrcCh == ch && i == (s_copySrcIdx + (s_copyTgtOfs<0))) {