From e4dd546053e117f5f12cb9c05b0fc0ce1564a9e4 Mon Sep 17 00:00:00 2001 From: philmoz Date: Tue, 12 Dec 2023 15:46:14 +1100 Subject: [PATCH] feat(el18): Add help popup showing mapping when using hats as keys (#4359) --- radio/src/gui/colorlcd/message_dialog.cpp | 19 +++++++++++++++++++ radio/src/gui/colorlcd/message_dialog.h | 16 ++++++++++++++++ radio/src/gui/colorlcd/radio_setup.cpp | 11 +++++++++-- radio/src/gui/colorlcd/trims_setup.cpp | 9 ++++++++- radio/src/translations.cpp | 1 + radio/src/translations.h | 1 + radio/src/translations/cn.h | 10 ++++++++++ radio/src/translations/cz.h | 10 ++++++++++ radio/src/translations/da.h | 10 ++++++++++ radio/src/translations/de.h | 10 ++++++++++ radio/src/translations/en.h | 10 ++++++++++ radio/src/translations/es.h | 10 ++++++++++ radio/src/translations/fi.h | 10 ++++++++++ radio/src/translations/fr.h | 10 ++++++++++ radio/src/translations/he.h | 10 ++++++++++ radio/src/translations/it.h | 10 ++++++++++ radio/src/translations/jp.h | 10 ++++++++++ radio/src/translations/nl.h | 10 ++++++++++ radio/src/translations/pl.h | 10 ++++++++++ radio/src/translations/pt.h | 10 ++++++++++ radio/src/translations/ru.h | 10 ++++++++++ radio/src/translations/se.h | 10 ++++++++++ radio/src/translations/tw.h | 10 ++++++++++ 23 files changed, 224 insertions(+), 3 deletions(-) diff --git a/radio/src/gui/colorlcd/message_dialog.cpp b/radio/src/gui/colorlcd/message_dialog.cpp index f0b9bafa0..0f312bbd0 100644 --- a/radio/src/gui/colorlcd/message_dialog.cpp +++ b/radio/src/gui/colorlcd/message_dialog.cpp @@ -42,6 +42,25 @@ void MessageDialog::onClicked() deleteLater(); } +HelpDialog::HelpDialog(Window* parent, rect_t rect, const char* title, + const char* message, + LcdFlags messageFlags) : + Dialog(parent, title, rect) +{ + messageWidget = new StaticText( + content, + {0, 33, content->width(), content->height() - 33}, + message, 0, messageFlags); + messageWidget->padAll(6); + + setCloseWhenClickOutside(true); +} + +void HelpDialog::onClicked() +{ + deleteLater(); +} + DynamicMessageDialog::DynamicMessageDialog( Window* parent, const char* title, std::function textHandler, const char* message, const int lineHeight, diff --git a/radio/src/gui/colorlcd/message_dialog.h b/radio/src/gui/colorlcd/message_dialog.h index e52f8a0c0..55bb5e419 100644 --- a/radio/src/gui/colorlcd/message_dialog.h +++ b/radio/src/gui/colorlcd/message_dialog.h @@ -44,6 +44,22 @@ class MessageDialog : public Dialog void onClicked() override; }; +class HelpDialog : public Dialog +{ + public: + HelpDialog(Window* parent, rect_t rect, const char* title, const char* message, + LcdFlags messageFlags = CENTERED); + + protected: + StaticText* messageWidget; + +#if defined(DEBUG_WINDOWS) + std::string getName() const override { return "HelpDialog"; } +#endif + + void onClicked() override; +}; + class DynamicMessageDialog : public Dialog { public: diff --git a/radio/src/gui/colorlcd/radio_setup.cpp b/radio/src/gui/colorlcd/radio_setup.cpp index 26beaff19..f9b2fa748 100644 --- a/radio/src/gui/colorlcd/radio_setup.cpp +++ b/radio/src/gui/colorlcd/radio_setup.cpp @@ -819,8 +819,15 @@ void RadioSetupPage::build(FormWindow * window) #if defined(USE_HATS_AS_KEYS) line = window->newLine(&grid); new StaticText(line, rect_t{}, STR_HATSMODE, 0, COLOR_THEME_PRIMARY1); - new Choice(line, rect_t{}, STR_HATSOPT, HATSMODE_TRIMS_ONLY, HATSMODE_SWITCHABLE, - GET_SET_DEFAULT(g_eeGeneral.hatsMode)); + auto box = new FormWindow(line, rect_t{}); + box->setFlexLayout(LV_FLEX_FLOW_ROW, 4); + new Choice(box, rect_t{}, STR_HATSOPT, HATSMODE_TRIMS_ONLY, + HATSMODE_SWITCHABLE, GET_SET_DEFAULT(g_eeGeneral.hatsMode)); + new TextButton(box, rect_t{}, "?", [=]() { + new HelpDialog(window, {50, 100, LCD_W - 100, LCD_H - 200}, + STR_HATSMODE_KEYS, STR_HATSMODE_KEYS_HELP, LEFT); + return 0; + }); #endif // RX channel order diff --git a/radio/src/gui/colorlcd/trims_setup.cpp b/radio/src/gui/colorlcd/trims_setup.cpp index d355bc1b9..24158f087 100644 --- a/radio/src/gui/colorlcd/trims_setup.cpp +++ b/radio/src/gui/colorlcd/trims_setup.cpp @@ -59,8 +59,15 @@ TrimsSetup::TrimsSetup() : Page(ICON_MODEL_SETUP) // Hats mode for NV14/EL18 line = body.newLine(&grid); new StaticText(line, rect_t{}, STR_HATSMODE, 0, COLOR_THEME_PRIMARY1); - new Choice(line, rect_t{}, STR_HATSOPT, HATSMODE_TRIMS_ONLY, HATSMODE_GLOBAL, + auto box = new FormWindow(line, rect_t{}); + box->setFlexLayout(LV_FLEX_FLOW_ROW, 4); + new Choice(box, rect_t{}, STR_HATSOPT, HATSMODE_TRIMS_ONLY, HATSMODE_GLOBAL, GET_SET_DEFAULT(g_model.hatsMode)); + new TextButton(box, rect_t{}, "?", [=]() { + new HelpDialog(this, {50, 100, LCD_W - 100, LCD_H - 200}, + STR_HATSMODE_KEYS, STR_HATSMODE_KEYS_HELP, LEFT); + return 0; + }); #endif // Trim step diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index 612e1e5b7..b3d82912a 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -545,6 +545,7 @@ const char STR_HATSMODE[] = TR_HATSMODE; ISTR(HATSOPT); const char STR_HATSMODE_TRIMS[] = TR_HATSMODE_TRIMS; const char STR_HATSMODE_KEYS[] = TR_HATSMODE_KEYS; +const char STR_HATSMODE_KEYS_HELP[] = TR_HATSMODE_KEYS_HELP; #endif const char STR_MIXERS_MONITOR[] = TR_MIXERS_MONITOR; diff --git a/radio/src/translations.h b/radio/src/translations.h index 54fa861fa..77b18527e 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -181,6 +181,7 @@ extern const char STR_HATSMODE[]; extern const char* const STR_HATSOPT[]; extern const char STR_HATSMODE_TRIMS[]; extern const char STR_HATSMODE_KEYS[]; +extern const char STR_HATSMODE_KEYS_HELP[]; #endif extern const char* const STR_VTMRMODES[]; diff --git a/radio/src/translations/cn.h b/radio/src/translations/cn.h index 4a5dd7216..39791c4d7 100644 --- a/radio/src/translations/cn.h +++ b/radio/src/translations/cn.h @@ -161,6 +161,16 @@ #define TR_HATSOPT "微调","导航键","可切换","全局" #define TR_HATSMODE_TRIMS "按键帽: 微调" #define TR_HATSMODE_KEYS "按键帽: 导航键" +#define TR_HATSMODE_KEYS_HELP "Left side:\n"\ + " Right = MDL\n"\ + " Up = SYS\n"\ + " Down = TELE\n"\ + "\n"\ + "Right side:\n"\ + " Left = PAGE<\n"\ + " Right = PAGE>\n"\ + " Up = PREV/INC\n"\ + " Down = NEXT/DEC" #endif #if defined(COLORLCD) diff --git a/radio/src/translations/cz.h b/radio/src/translations/cz.h index 07e81a8d1..d6e908dfa 100644 --- a/radio/src/translations/cz.h +++ b/radio/src/translations/cz.h @@ -173,6 +173,16 @@ #define TR_HATSOPT "Pouze trimy","Pouze tlačítka","Přepinatelné","Globální" #define TR_HATSMODE_TRIMS "Režim kloboučků: Trimy" #define TR_HATSMODE_KEYS "Režim kloboučků: Tlačítka" +#define TR_HATSMODE_KEYS_HELP "Left side:\n"\ + " Right = MDL\n"\ + " Up = SYS\n"\ + " Down = TELE\n"\ + "\n"\ + "Right side:\n"\ + " Left = PAGE<\n"\ + " Right = PAGE>\n"\ + " Up = PREV/INC\n"\ + " Down = NEXT/DEC" #endif #if defined(COLORLCD) diff --git a/radio/src/translations/da.h b/radio/src/translations/da.h index 8ec34bd5a..0b240db3c 100644 --- a/radio/src/translations/da.h +++ b/radio/src/translations/da.h @@ -168,6 +168,16 @@ #define TR_HATSOPT "Kun trim","Kun knap","Trim / Knap", "Global" #define TR_HATSMODE_TRIMS "Joystik: Trim" #define TR_HATSMODE_KEYS "Joystik: Knap" +#define TR_HATSMODE_KEYS_HELP "Left side:\n"\ + " Right = MDL\n"\ + " Up = SYS\n"\ + " Down = TELE\n"\ + "\n"\ + "Right side:\n"\ + " Left = PAGE<\n"\ + " Right = PAGE>\n"\ + " Up = PREV/INC\n"\ + " Down = NEXT/DEC" #endif #if defined(COLORLCD) diff --git a/radio/src/translations/de.h b/radio/src/translations/de.h index 9ef7e828f..e2db8d6f7 100644 --- a/radio/src/translations/de.h +++ b/radio/src/translations/de.h @@ -163,6 +163,16 @@ #define TR_HATSOPT "Nur Trimmung","Nur Tasten","Umschaltbar","Global" #define TR_HATSMODE_TRIMS "Joystick Modus: Trimmung" #define TR_HATSMODE_KEYS "Joystick Modus: Tasten" +#define TR_HATSMODE_KEYS_HELP "Left side:\n"\ + " Right = MDL\n"\ + " Up = SYS\n"\ + " Down = TELE\n"\ + "\n"\ + "Right side:\n"\ + " Left = PAGE<\n"\ + " Right = PAGE>\n"\ + " Up = PREV/INC\n"\ + " Down = NEXT/DEC" #endif #if defined(COLORLCD) diff --git a/radio/src/translations/en.h b/radio/src/translations/en.h index 705c1ed9a..d421b543a 100644 --- a/radio/src/translations/en.h +++ b/radio/src/translations/en.h @@ -165,6 +165,16 @@ #define TR_HATSOPT "Trims only","Keys only","Switchable","Global" #define TR_HATSMODE_TRIMS "Hats mode: Trims" #define TR_HATSMODE_KEYS "Hats mode: Keys" +#define TR_HATSMODE_KEYS_HELP "Left side:\n"\ + " Right = MDL\n"\ + " Up = SYS\n"\ + " Down = TELE\n"\ + "\n"\ + "Right side:\n"\ + " Left = PAGE<\n"\ + " Right = PAGE>\n"\ + " Up = PREV/INC\n"\ + " Down = NEXT/DEC" #endif #if defined(COLORLCD) diff --git a/radio/src/translations/es.h b/radio/src/translations/es.h index f080833ff..b448f2036 100644 --- a/radio/src/translations/es.h +++ b/radio/src/translations/es.h @@ -161,6 +161,16 @@ #define TR_HATSOPT "Trims only","Keys only","Switchable","Global" #define TR_HATSMODE_TRIMS "Hats mode: Trims" #define TR_HATSMODE_KEYS "Hats mode: Keys" +#define TR_HATSMODE_KEYS_HELP "Left side:\n"\ + " Right = MDL\n"\ + " Up = SYS\n"\ + " Down = TELE\n"\ + "\n"\ + "Right side:\n"\ + " Left = PAGE<\n"\ + " Right = PAGE>\n"\ + " Up = PREV/INC\n"\ + " Down = NEXT/DEC" #endif #if defined(COLORLCD) diff --git a/radio/src/translations/fi.h b/radio/src/translations/fi.h index 3be130de0..7929138a7 100644 --- a/radio/src/translations/fi.h +++ b/radio/src/translations/fi.h @@ -172,6 +172,16 @@ #define TR_HATSOPT "Trims only","Keys only","Switchable","Global" #define TR_HATSMODE_TRIMS "Hats mode: Trims" #define TR_HATSMODE_KEYS "Hats mode: Keys" +#define TR_HATSMODE_KEYS_HELP "Left side:\n"\ + " Right = MDL\n"\ + " Up = SYS\n"\ + " Down = TELE\n"\ + "\n"\ + "Right side:\n"\ + " Left = PAGE<\n"\ + " Right = PAGE>\n"\ + " Up = PREV/INC\n"\ + " Down = NEXT/DEC" #endif #if defined(COLORLCD) diff --git a/radio/src/translations/fr.h b/radio/src/translations/fr.h index 06e07408b..e40594fec 100644 --- a/radio/src/translations/fr.h +++ b/radio/src/translations/fr.h @@ -170,6 +170,16 @@ #define TR_HATSOPT "Trims uniquement","Touches uniquement","Commutable","Global" #define TR_HATSMODE_TRIMS "Mode joystick: trims" #define TR_HATSMODE_KEYS "Mode joystick: touches" +#define TR_HATSMODE_KEYS_HELP "Left side:\n"\ + " Right = MDL\n"\ + " Up = SYS\n"\ + " Down = TELE\n"\ + "\n"\ + "Right side:\n"\ + " Left = PAGE<\n"\ + " Right = PAGE>\n"\ + " Up = PREV/INC\n"\ + " Down = NEXT/DEC" #endif #if defined(COLORLCD) diff --git a/radio/src/translations/he.h b/radio/src/translations/he.h index 908fc5d2e..feafb6541 100644 --- a/radio/src/translations/he.h +++ b/radio/src/translations/he.h @@ -169,6 +169,16 @@ #define TR_HATSOPT "קיזוזים בלבד","ניווט בלבד","משולב","גלובאלי" #define TR_HATSMODE_TRIMS "מצב כובעונים: קיזוזים" #define TR_HATSMODE_KEYS "מצב כובעונים: ניווט" +#define TR_HATSMODE_KEYS_HELP "Left side:\n"\ + " Right = MDL\n"\ + " Up = SYS\n"\ + " Down = TELE\n"\ + "\n"\ + "Right side:\n"\ + " Left = PAGE<\n"\ + " Right = PAGE>\n"\ + " Up = PREV/INC\n"\ + " Down = NEXT/DEC" #endif #if defined(COLORLCD) diff --git a/radio/src/translations/it.h b/radio/src/translations/it.h index 216d9c6ae..3ba933997 100644 --- a/radio/src/translations/it.h +++ b/radio/src/translations/it.h @@ -166,6 +166,16 @@ #define TR_HATSOPT "Solo trims","Solo keys","Commutabile","Globale" #define TR_HATSMODE_TRIMS "Modo joystick: trims" #define TR_HATSMODE_KEYS "Modo joystick: keys" +#define TR_HATSMODE_KEYS_HELP "Left side:\n"\ + " Right = MDL\n"\ + " Up = SYS\n"\ + " Down = TELE\n"\ + "\n"\ + "Right side:\n"\ + " Left = PAGE<\n"\ + " Right = PAGE>\n"\ + " Up = PREV/INC\n"\ + " Down = NEXT/DEC" #endif #if defined(COLORLCD) diff --git a/radio/src/translations/jp.h b/radio/src/translations/jp.h index 6af900fe5..358a8003b 100644 --- a/radio/src/translations/jp.h +++ b/radio/src/translations/jp.h @@ -165,6 +165,16 @@ #define TR_HATSOPT "トリムのみ","キーのみ","スイッチ","すべて" #define TR_HATSMODE_TRIMS "アナログスティック: トリム" #define TR_HATSMODE_KEYS "アナログスティック: キー" +#define TR_HATSMODE_KEYS_HELP "Left side:\n"\ + " Right = MDL\n"\ + " Up = SYS\n"\ + " Down = TELE\n"\ + "\n"\ + "Right side:\n"\ + " Left = PAGE<\n"\ + " Right = PAGE>\n"\ + " Up = PREV/INC\n"\ + " Down = NEXT/DEC" #endif #if defined(COLORLCD) diff --git a/radio/src/translations/nl.h b/radio/src/translations/nl.h index aacf21333..814610358 100644 --- a/radio/src/translations/nl.h +++ b/radio/src/translations/nl.h @@ -162,6 +162,16 @@ #define TR_HATSOPT "Trims only","Keys only","Switchable","Global" #define TR_HATSMODE_TRIMS "Hats mode: Trims" #define TR_HATSMODE_KEYS "Hats mode: Keys" +#define TR_HATSMODE_KEYS_HELP "Left side:\n"\ + " Right = MDL\n"\ + " Up = SYS\n"\ + " Down = TELE\n"\ + "\n"\ + "Right side:\n"\ + " Left = PAGE<\n"\ + " Right = PAGE>\n"\ + " Up = PREV/INC\n"\ + " Down = NEXT/DEC" #endif #if defined(COLORLCD) diff --git a/radio/src/translations/pl.h b/radio/src/translations/pl.h index b2f8f421e..1072b62d4 100644 --- a/radio/src/translations/pl.h +++ b/radio/src/translations/pl.h @@ -161,6 +161,16 @@ #define TR_HATSOPT "Tylko trymy","Tylko przyciski","Przełączane","Globalne" #define TR_HATSMODE_TRIMS "Tryb grzybków: trymy" #define TR_HATSMODE_KEYS "Tryb grzybków: przyciski" +#define TR_HATSMODE_KEYS_HELP "Left side:\n"\ + " Right = MDL\n"\ + " Up = SYS\n"\ + " Down = TELE\n"\ + "\n"\ + "Right side:\n"\ + " Left = PAGE<\n"\ + " Right = PAGE>\n"\ + " Up = PREV/INC\n"\ + " Down = NEXT/DEC" #endif #if defined(COLORLCD) diff --git a/radio/src/translations/pt.h b/radio/src/translations/pt.h index 68089d839..be4e353d5 100644 --- a/radio/src/translations/pt.h +++ b/radio/src/translations/pt.h @@ -168,6 +168,16 @@ #define TR_HATSOPT "Trims only","Keys only","Switchable","Global" #define TR_HATSMODE_TRIMS "Hats mode: Trims" #define TR_HATSMODE_KEYS "Hats mode: Keys" +#define TR_HATSMODE_KEYS_HELP "Left side:\n"\ + " Right = MDL\n"\ + " Up = SYS\n"\ + " Down = TELE\n"\ + "\n"\ + "Right side:\n"\ + " Left = PAGE<\n"\ + " Right = PAGE>\n"\ + " Up = PREV/INC\n"\ + " Down = NEXT/DEC" #endif #if defined(COLORLCD) diff --git a/radio/src/translations/ru.h b/radio/src/translations/ru.h index ad260c4f8..6c1ed3fc4 100644 --- a/radio/src/translations/ru.h +++ b/radio/src/translations/ru.h @@ -167,6 +167,16 @@ #define TR_HATSOPT "Тримы","Кнопки","Тумбл","Глоб" #define TR_HATSMODE_TRIMS "Hats mode: Тримы" #define TR_HATSMODE_KEYS "Hats mode: Кнопки" +#define TR_HATSMODE_KEYS_HELP "Left side:\n"\ + " Right = MDL\n"\ + " Up = SYS\n"\ + " Down = TELE\n"\ + "\n"\ + "Right side:\n"\ + " Left = PAGE<\n"\ + " Right = PAGE>\n"\ + " Up = PREV/INC\n"\ + " Down = NEXT/DEC" #endif #if defined(COLORLCD) diff --git a/radio/src/translations/se.h b/radio/src/translations/se.h index 02143c11a..34151862f 100644 --- a/radio/src/translations/se.h +++ b/radio/src/translations/se.h @@ -183,6 +183,16 @@ #define TR_HATSOPT "Endast trimm","Endast knapp","Ändringsbar","Global" #define TR_HATSMODE_TRIMS "Hattläge: Trimmar" #define TR_HATSMODE_KEYS "Hattläge: Knappar" +#define TR_HATSMODE_KEYS_HELP "Left side:\n"\ + " Right = MDL\n"\ + " Up = SYS\n"\ + " Down = TELE\n"\ + "\n"\ + "Right side:\n"\ + " Left = PAGE<\n"\ + " Right = PAGE>\n"\ + " Up = PREV/INC\n"\ + " Down = NEXT/DEC" #endif #if defined(IMU) diff --git a/radio/src/translations/tw.h b/radio/src/translations/tw.h index ede93b28b..8c4e30133 100644 --- a/radio/src/translations/tw.h +++ b/radio/src/translations/tw.h @@ -166,6 +166,16 @@ #define TR_HATSOPT "微調","導航鍵","可切換","全局" #define TR_HATSMODE_TRIMS "按鍵帽: 微調" #define TR_HATSMODE_KEYS "按鍵帽: 導航鍵" +#define TR_HATSMODE_KEYS_HELP "Left side:\n"\ + " Right = MDL\n"\ + " Up = SYS\n"\ + " Down = TELE\n"\ + "\n"\ + "Right side:\n"\ + " Left = PAGE<\n"\ + " Right = PAGE>\n"\ + " Up = PREV/INC\n"\ + " Down = NEXT/DEC" #endif #if defined(COLORLCD)