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 <peter.feerick@gmail.com>
This commit is contained in:
eshifri
2022-03-30 12:08:16 +10:00
committed by GitHub
co-authored by Peter Feerick
parent 0eba9588b1
commit 5cdff72205
20 changed files with 159 additions and 29 deletions
+28 -9
View File
@@ -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;
});
}
+3
View File
@@ -33,6 +33,9 @@ class ModelMenu: public TabsGroup {
}
#endif
ModelMenu();
protected:
void addButton(TabsGroupHeader* headerPtr);
};
#endif // _MENU_MODEL_H_
+2 -3
View File
@@ -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)
+49 -14
View File
@@ -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 <algorithm>
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);
}
}
+8 -3
View File
@@ -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<PageTab *> tabs;
+1
View File
@@ -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;
+1
View File
@@ -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[];
+5
View File
@@ -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 "红"
+5
View File
@@ -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"
+5
View File
@@ -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"
+7
View File
@@ -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"
+5
View File
@@ -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"
+5
View File
@@ -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"
+5
View File
@@ -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"
+5
View File
@@ -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"
+5
View File
@@ -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"
+5
View File
@@ -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"
+5
View File
@@ -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"
+5
View File
@@ -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"
+5
View File
@@ -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 "紅"