From 5cdff7220559d8a04a2759d4bcb205465ba433a2 Mon Sep 17 00:00:00 2001 From: eshifri <46511024+eshifri@users.noreply.github.com> Date: Tue, 29 Mar 2022 19:08:16 -0700 Subject: [PATCH] feat: Jump to channel monitor from any model page. (#1748) * Jump from mixes/outputs to channel monitor * remove unnecessary headers * Add Button names to translations * jump from any model page to channel monitor * Use TELEM short press instead of long press. * Support TXs with pure touch interface * Change to KEY_MODEL, whitespace cleanup, git eol Co-authored-by: Peter Feerick --- radio/src/gui/colorlcd/menu_model.cpp | 37 ++++++++++---- radio/src/gui/colorlcd/menu_model.h | 3 ++ radio/src/gui/colorlcd/model_outputs.cpp | 5 +- radio/src/gui/colorlcd/tabsgroup.cpp | 63 ++++++++++++++++++------ radio/src/gui/colorlcd/tabsgroup.h | 11 +++-- radio/src/translations.cpp | 1 + radio/src/translations.h | 1 + radio/src/translations/cn.h.txt | 5 ++ radio/src/translations/cz.h.txt | 5 ++ radio/src/translations/de.h.txt | 5 ++ radio/src/translations/en.h.txt | 7 +++ radio/src/translations/es.h.txt | 5 ++ radio/src/translations/fi.h.txt | 5 ++ radio/src/translations/fr.h.txt | 5 ++ radio/src/translations/it.h.txt | 5 ++ radio/src/translations/nl.h.txt | 5 ++ radio/src/translations/pl.h.txt | 5 ++ radio/src/translations/pt.h.txt | 5 ++ radio/src/translations/se.h.txt | 5 ++ radio/src/translations/tw.h.txt | 5 ++ 20 files changed, 159 insertions(+), 29 deletions(-) diff --git a/radio/src/gui/colorlcd/menu_model.cpp b/radio/src/gui/colorlcd/menu_model.cpp index 5a656a1fa..1d0ec0c46 100644 --- a/radio/src/gui/colorlcd/menu_model.cpp +++ b/radio/src/gui/colorlcd/menu_model.cpp @@ -19,20 +19,23 @@ * GNU General Public License for more details. */ -#include "opentx.h" #include "menu_model.h" -#include "model_setup.h" -#include "model_heli.h" -#include "model_flightmodes.h" -#include "model_mixes.h" -#include "model_inputs.h" -#include "model_outputs.h" -#include "model_gvars.h" + +#include "translations.h" +#include "view_channels.h" #include "model_curves.h" +#include "model_flightmodes.h" +#include "model_gvars.h" +#include "model_heli.h" +#include "model_inputs.h" #include "model_logical_switches.h" #include "model_mixer_scripts.h" -#include "special_functions.h" +#include "model_mixes.h" +#include "model_outputs.h" +#include "model_setup.h" #include "model_telemetry.h" +#include "opentx.h" +#include "special_functions.h" ModelMenu::ModelMenu(): TabsGroup(ICON_MODEL) @@ -57,4 +60,20 @@ ModelMenu::ModelMenu(): addTab(new ModelMixerScriptsPage()); #endif addTab(new ModelTelemetryPage()); + + addButton(&header); +} + +void ModelMenu::addButton(TabsGroupHeader* header) +{ + OpenTxTheme::instance()->createTextButton( + header, {LCD_W / 2 + 5, MENU_TITLE_TOP, LCD_W / 2 - 5, MENU_TITLE_HEIGHT}, + STR_OPEN_CHANNEL_MONITORS, [=]() { + calledFromModel = 1; + retTab = header->getCarousel()->getCurrentIndex(); + // TRACE("currentTab=%d %s", calledFromModel, typeid(*currentTab).name()); + new ChannelsViewMenu(); + deleteLater(); + return 0; + }); } diff --git a/radio/src/gui/colorlcd/menu_model.h b/radio/src/gui/colorlcd/menu_model.h index 74e487536..8fcfd5644 100644 --- a/radio/src/gui/colorlcd/menu_model.h +++ b/radio/src/gui/colorlcd/menu_model.h @@ -33,6 +33,9 @@ class ModelMenu: public TabsGroup { } #endif ModelMenu(); + + protected: + void addButton(TabsGroupHeader* headerPtr); }; #endif // _MENU_MODEL_H_ diff --git a/radio/src/gui/colorlcd/model_outputs.cpp b/radio/src/gui/colorlcd/model_outputs.cpp index d007996af..9e6e552af 100644 --- a/radio/src/gui/colorlcd/model_outputs.cpp +++ b/radio/src/gui/colorlcd/model_outputs.cpp @@ -21,11 +21,10 @@ #include "model_outputs.h" -#include "opentx.h" -#include "libopenui.h" - #include "channel_bar.h" #include "gvar_numberedit.h" +#include "libopenui.h" +#include "opentx.h" #define SET_DIRTY() storageDirty(EE_MODEL) diff --git a/radio/src/gui/colorlcd/tabsgroup.cpp b/radio/src/gui/colorlcd/tabsgroup.cpp index 9251092f6..0fd68bc22 100644 --- a/radio/src/gui/colorlcd/tabsgroup.cpp +++ b/radio/src/gui/colorlcd/tabsgroup.cpp @@ -20,8 +20,14 @@ */ #include "tabsgroup.h" + #include "mainwindow.h" +#include "view_channels.h" #include "view_main.h" +#include "model_outputs.h" +#include "model_mixes.h" +#include "static.h" +#include "menu_model.h" #if defined(HARDWARE_TOUCH) #include "keyboard_base.h" @@ -31,22 +37,34 @@ #include -TabsGroupHeader::TabsGroupHeader(TabsGroup * parent, uint8_t icon): - FormGroup(parent, { 0, 0, LCD_W, MENU_BODY_TOP }, OPAQUE), +int TabsGroup::calledFromModel = 0; +int TabsGroup::retTab = 0; + +TabsGroupHeader::TabsGroupHeader(TabsGroup* parent, uint8_t icon) : + FormGroup(parent, {0, 0, LCD_W, MENU_BODY_TOP}, OPAQUE), #if defined(HARDWARE_TOUCH) - back(this, { 0, 0, MENU_HEADER_BACK_BUTTON_WIDTH, MENU_HEADER_BACK_BUTTON_HEIGHT }, - [=]() -> uint8_t { - parent->deleteLater(); - ViewMain::instance()->setFocus((SET_FOCUS_DEFAULT)); - return 1; - }, NO_FOCUS | FORM_NO_BORDER), + back( + this, + {0, 0, MENU_HEADER_BACK_BUTTON_WIDTH, MENU_HEADER_BACK_BUTTON_HEIGHT}, + [=]() -> uint8_t { + if (!parent->calledFromModel) { + ViewMain::instance()->setFocus(SET_FOCUS_DEFAULT); + } else { + auto menu = new ModelMenu(); + menu->setCurrentTab(parent->retTab); + parent->calledFromModel = 0; + } + parent->deleteLater(); + return 1; + }, + NO_FOCUS | FORM_NO_BORDER), #endif - icon(icon), - carousel(this, parent) + icon(icon), + carousel(this, parent) { } -void TabsGroupHeader::paint(BitmapBuffer * dc) +void TabsGroupHeader::paint(BitmapBuffer* dc) { OpenTxTheme::instance()->drawPageHeaderBackground(dc, icon, title); } @@ -217,10 +235,27 @@ void TabsGroup::onEvent(event_t event) } else if (event == EVT_KEY_FIRST(KEY_EXIT)) { killEvents(event); - ViewMain::instance()->setFocus(SET_FOCUS_DEFAULT); + if (!calledFromModel) { + ViewMain::instance()->setFocus(SET_FOCUS_DEFAULT); + } + else { + auto menu = new ModelMenu(); + menu->setCurrentTab(retTab); + calledFromModel = 0; + // TRACE("currentTab=%d %s", retTab, typeid(*currentTab).name()); + } deleteLater(); - } - else if (parent) { + } else if (event == EVT_KEY_FIRST(KEY_MODEL)) { + TRACE("TabGroup %s", typeid(*this).name()); + if (typeid(*this) == typeid(ModelMenu) ) { + killEvents(event); + calledFromModel = 1; + retTab = header.carousel.getCurrentIndex(); + // TRACE("currentTab=%d %s", calledFromModel, typeid(*currentTab).name()); + new ChannelsViewMenu(); + deleteLater(); + } + } else if (parent) { parent->onEvent(event); } } diff --git a/radio/src/gui/colorlcd/tabsgroup.h b/radio/src/gui/colorlcd/tabsgroup.h index ecbb72093..c820b2e22 100644 --- a/radio/src/gui/colorlcd/tabsgroup.h +++ b/radio/src/gui/colorlcd/tabsgroup.h @@ -150,9 +150,11 @@ class TabsGroupHeader: public FormGroup { title = value; } - protected: + TabsCarousel* getCarousel() {return &carousel;} + + protected: #if defined(HARDWARE_TOUCH) - Button back; + Button back; #endif uint8_t icon; TabsCarousel carousel; @@ -225,7 +227,10 @@ class TabsGroup: public Window bool onTouchEnd(coord_t x, coord_t y) override; #endif - protected: + static int calledFromModel; + static int retTab; + + protected: TabsGroupHeader header; FormWindow body; std::vector tabs; diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index 65d021c12..baa8aff82 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -718,6 +718,7 @@ const char STR_PRESET[] = TR_PRESET; const char STR_CLEAR[] = TR_CLEAR; const char STR_RESET[] = TR_RESET; const char STR_ADD_ALL_TRIMS_TO_SUBTRIMS[] = TR_ADD_ALL_TRIMS_TO_SUBTRIMS; +const char STR_OPEN_CHANNEL_MONITORS[] = TR_OPEN_CHANNEL_MONITORS; const char STR_COUNT[] = TR_COUNT; const char STR_PT[] = TR_PT; const char STR_PTS[] = TR_PTS; diff --git a/radio/src/translations.h b/radio/src/translations.h index 4b55de949..4e0282c00 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -1062,6 +1062,7 @@ extern const char STR_PRESET[]; extern const char STR_CLEAR[]; extern const char STR_RESET[]; extern const char STR_ADD_ALL_TRIMS_TO_SUBTRIMS[]; +extern const char STR_OPEN_CHANNEL_MONITORS[]; extern const char STR_COUNT[]; extern const char STR_PT[]; extern const char STR_PTS[]; diff --git a/radio/src/translations/cn.h.txt b/radio/src/translations/cn.h.txt index c91d343c5..9823dfd89 100644 --- a/radio/src/translations/cn.h.txt +++ b/radio/src/translations/cn.h.txt @@ -1316,6 +1316,11 @@ #define TR_USE_THEME_COLOR "使用主题颜色" #define TR_ADD_ALL_TRIMS_TO_SUBTRIMS "将所有微调导入中点偏移值" +#if LCD_W > LCD_H + #define TR_OPEN_CHANNEL_MONITORS "Open Channel Monitor" +#else + #define TR_OPEN_CHANNEL_MONITORS "Open Channel Mon." +#endif #define TR_DUPLICATE "复制" #define TR_ACTIVATE "启用" #define TR_RED "红" diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 0313ecaa8..8b8875f2b 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -1365,6 +1365,11 @@ #define TR_USE_THEME_COLOR "Use theme color" #define TR_ADD_ALL_TRIMS_TO_SUBTRIMS "Add all Trims to Subtrims" +#if LCD_W > LCD_H + #define TR_OPEN_CHANNEL_MONITORS "Open Channel Monitor" +#else + #define TR_OPEN_CHANNEL_MONITORS "Open Channel Mon." +#endif #define TR_DUPLICATE "Duplicate" #define TR_ACTIVATE "Set Active" #define TR_RED "Red" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 73d8ee774..1cb0b011b 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -1372,6 +1372,11 @@ #define TR_USE_THEME_COLOR "Use theme color" #define TR_ADD_ALL_TRIMS_TO_SUBTRIMS "Add all Trims to Subtrims" +#if LCD_W > LCD_H + #define TR_OPEN_CHANNEL_MONITORS "Open Channel Monitor" +#else + #define TR_OPEN_CHANNEL_MONITORS "Open Channel Mon." +#endif #define TR_DUPLICATE "Duplicate" #define TR_ACTIVATE "Set Active" #define TR_RED "Red" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 06e382d94..7e9fb76bd 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -1367,6 +1367,13 @@ #define TR_USE_THEME_COLOR "Use theme color" #define TR_ADD_ALL_TRIMS_TO_SUBTRIMS "Add all Trims to Subtrims" + +#if LCD_W > LCD_H + #define TR_OPEN_CHANNEL_MONITORS "Open Channel Monitor" +#else + #define TR_OPEN_CHANNEL_MONITORS "Open Channel Mon." +#endif + #define TR_DUPLICATE "Duplicate" #define TR_ACTIVATE "Set Active" #define TR_RED "Red" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index c89eec0d8..c22a77ffa 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -1371,6 +1371,11 @@ #define TR_USE_THEME_COLOR "Use theme color" #define TR_ADD_ALL_TRIMS_TO_SUBTRIMS "Add all Trims to Subtrims" +#if LCD_W > LCD_H + #define TR_OPEN_CHANNEL_MONITORS "Open Channel Monitor" +#else + #define TR_OPEN_CHANNEL_MONITORS "Open Channel Mon." +#endif #define TR_DUPLICATE "Duplicate" #define TR_ACTIVATE "Set Active" #define TR_RED "Red" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index ea0454524..f8eb06c7c 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -1376,6 +1376,11 @@ #define TR_USE_THEME_COLOR "Use theme color" #define TR_ADD_ALL_TRIMS_TO_SUBTRIMS "Add all Trims to Subtrims" +#if LCD_W > LCD_H + #define TR_OPEN_CHANNEL_MONITORS "Open Channel Monitor" +#else + #define TR_OPEN_CHANNEL_MONITORS "Open Channel Mon." +#endif #define TR_DUPLICATE "Duplicate" #define TR_ACTIVATE "Set Active" #define TR_RED "Red" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 666ad315c..0b4c5daa1 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -1394,6 +1394,11 @@ #define TR_USE_THEME_COLOR "Use theme color" #define TR_ADD_ALL_TRIMS_TO_SUBTRIMS "Add all Trims to Subtrims" +#if LCD_W > LCD_H + #define TR_OPEN_CHANNEL_MONITORS "Open Channel Monitor" +#else + #define TR_OPEN_CHANNEL_MONITORS "Open Channel Mon." +#endif #define TR_DUPLICATE "Duplicate" #define TR_ACTIVATE "Set Active" #define TR_RED "Red" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index a410268f5..d87bed35d 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -1390,6 +1390,11 @@ #define TR_USE_THEME_COLOR "Use theme color" #define TR_ADD_ALL_TRIMS_TO_SUBTRIMS "Add all Trims to Subtrims" +#if LCD_W > LCD_H + #define TR_OPEN_CHANNEL_MONITORS "Open Channel Monitor" +#else + #define TR_OPEN_CHANNEL_MONITORS "Open Channel Mon." +#endif #define TR_DUPLICATE "Duplicate" #define TR_ACTIVATE "Set Active" #define TR_RED "Red" diff --git a/radio/src/translations/nl.h.txt b/radio/src/translations/nl.h.txt index 6fa17bd22..a12a51298 100644 --- a/radio/src/translations/nl.h.txt +++ b/radio/src/translations/nl.h.txt @@ -1381,6 +1381,11 @@ #define TR_USE_THEME_COLOR "Use theme color" #define TR_ADD_ALL_TRIMS_TO_SUBTRIMS "Add all Trims to Subtrims" +#if LCD_W > LCD_H + #define TR_OPEN_CHANNEL_MONITORS "Open Channel Monitor" +#else + #define TR_OPEN_CHANNEL_MONITORS "Open Channel Mon." +#endif #define TR_DUPLICATE "Duplicate" #define TR_ACTIVATE "Set Active" #define TR_RED "Red" diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index dfae2d53a..cd894063f 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -1386,6 +1386,11 @@ #define TR_USE_THEME_COLOR "Use theme color" #define TR_ADD_ALL_TRIMS_TO_SUBTRIMS "Add all Trims to Subtrims" +#if LCD_W > LCD_H + #define TR_OPEN_CHANNEL_MONITORS "Open Channel Monitor" +#else + #define TR_OPEN_CHANNEL_MONITORS "Open Channel Mon." +#endif #define TR_DUPLICATE "Duplicate" #define TR_ACTIVATE "Set Active" #define TR_RED "Red" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 32f347f34..b69fef997 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -1392,6 +1392,11 @@ #define TR_USE_THEME_COLOR "Use theme color" #define TR_ADD_ALL_TRIMS_TO_SUBTRIMS "Add all Trims to Subtrims" +#if LCD_W > LCD_H + #define TR_OPEN_CHANNEL_MONITORS "Open Channel Monitor" +#else + #define TR_OPEN_CHANNEL_MONITORS "Open Channel Mon." +#endif #define TR_DUPLICATE "Duplicate" #define TR_ACTIVATE "Set Active" #define TR_RED "Red" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index 12aa7a06f..6decac6f0 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -1394,6 +1394,11 @@ #define TR_USE_THEME_COLOR "Use theme color" #define TR_ADD_ALL_TRIMS_TO_SUBTRIMS "Add all Trims to Subtrims" +#if LCD_W > LCD_H + #define TR_OPEN_CHANNEL_MONITORS "Open Channel Monitor" +#else + #define TR_OPEN_CHANNEL_MONITORS "Open Channel Mon." +#endif #define TR_DUPLICATE "Duplicate" #define TR_ACTIVATE "Set Active" #define TR_RED "Red" diff --git a/radio/src/translations/tw.h.txt b/radio/src/translations/tw.h.txt index 94bdb2cbf..e71e1c71b 100644 --- a/radio/src/translations/tw.h.txt +++ b/radio/src/translations/tw.h.txt @@ -1308,6 +1308,11 @@ #define TR_USE_THEME_COLOR "使用主題顏色" #define TR_ADD_ALL_TRIMS_TO_SUBTRIMS "将將所有微調導入中點偏移值" +#if LCD_W > LCD_H + #define TR_OPEN_CHANNEL_MONITORS "Open Channel Monitor" +#else + #define TR_OPEN_CHANNEL_MONITORS "Open Channel Mon." +#endif #define TR_DUPLICATE "複製" #define TR_ACTIVATE "啟用" #define TR_RED "紅"