diff --git a/radio/src/gui/colorlcd/curveedit.cpp b/radio/src/gui/colorlcd/curveedit.cpp index b0aae8692..3d0ff9e9b 100644 --- a/radio/src/gui/colorlcd/curveedit.cpp +++ b/radio/src/gui/colorlcd/curveedit.cpp @@ -374,10 +374,7 @@ void CurveEditWindow::buildHeader(Window * window) header.setTitle(STR_MENUCURVE); char s[16]; strAppendStringWithIndex(s, STR_CV, index + 1); - new StaticText(window, - {PAGE_TITLE_LEFT, PAGE_TITLE_TOP + PAGE_LINE_HEIGHT, - LCD_W - PAGE_TITLE_LEFT, PAGE_LINE_HEIGHT}, - s, 0, COLOR_THEME_PRIMARY2); + header.setTitle2(s); } void CurveEditWindow::buildBody(FormWindow * window) diff --git a/radio/src/gui/colorlcd/model_gvars.cpp b/radio/src/gui/colorlcd/model_gvars.cpp index 719deb3cc..d1387f542 100644 --- a/radio/src/gui/colorlcd/model_gvars.cpp +++ b/radio/src/gui/colorlcd/model_gvars.cpp @@ -194,11 +194,7 @@ class GVarEditWindow : public Page void buildHeader(Window* window) { header.setTitle(STR_GLOBAL_VAR); - gVarInHeader = - new StaticText(window, - {PAGE_TITLE_LEFT, PAGE_TITLE_TOP + PAGE_LINE_HEIGHT, - LCD_W - PAGE_TITLE_LEFT, PAGE_LINE_HEIGHT}, - "", 0, COLOR_THEME_PRIMARY2); + gVarInHeader = header.setTitle2(""); } void checkEvents() diff --git a/radio/src/gui/colorlcd/model_logical_switches.cpp b/radio/src/gui/colorlcd/model_logical_switches.cpp index 95ebaad52..0f0881b5a 100644 --- a/radio/src/gui/colorlcd/model_logical_switches.cpp +++ b/radio/src/gui/colorlcd/model_logical_switches.cpp @@ -72,11 +72,7 @@ class LogicalSwitchEditPage : public Page void buildHeader(Window* window) { header.setTitle(STR_MENULOGICALSWITCHES); - headerSwitchName = new StaticText( - window, - {PAGE_TITLE_LEFT, PAGE_TITLE_TOP + PAGE_LINE_HEIGHT, - LCD_W - PAGE_TITLE_LEFT, PAGE_LINE_HEIGHT}, - getSwitchPositionName(SWSRC_SW1 + index), 0, COLOR_THEME_PRIMARY2); + headerSwitchName = header.setTitle2(getSwitchPositionName(SWSRC_SW1 + index)); lv_obj_set_style_text_color(headerSwitchName->getLvObj(), makeLvColor(COLOR_THEME_ACTIVE), diff --git a/radio/src/gui/colorlcd/model_mixer_scripts.cpp b/radio/src/gui/colorlcd/model_mixer_scripts.cpp index 4cb1d1d96..36222e3ec 100644 --- a/radio/src/gui/colorlcd/model_mixer_scripts.cpp +++ b/radio/src/gui/colorlcd/model_mixer_scripts.cpp @@ -81,10 +81,7 @@ class ScriptEditWindow : public Page { void buildHeader(Window * window) { header.setTitle(STR_MENUCUSTOMSCRIPTS); - new StaticText(window, - {PAGE_TITLE_LEFT, PAGE_TITLE_TOP + PAGE_LINE_HEIGHT, - LCD_W - PAGE_TITLE_LEFT, PAGE_LINE_HEIGHT}, - std::string("LUA") + std::to_string(idx + 1), 0, COLOR_THEME_PRIMARY2); + header.setTitle2(std::string("LUA") + std::to_string(idx + 1)); } void buildBody(FormWindow * window, bool focusScript = false) diff --git a/radio/src/gui/colorlcd/model_telemetry.cpp b/radio/src/gui/colorlcd/model_telemetry.cpp index 99562aa0b..e2cacf803 100644 --- a/radio/src/gui/colorlcd/model_telemetry.cpp +++ b/radio/src/gui/colorlcd/model_telemetry.cpp @@ -261,11 +261,7 @@ class SensorEditWindow : public Page { { header.setTitle(STR_SENSOR + std::to_string(index + 1)); - headerValue = new StaticText( - window, - {PAGE_TITLE_LEFT, PAGE_TITLE_TOP + PAGE_LINE_HEIGHT, - LCD_W - PAGE_TITLE_LEFT, PAGE_LINE_HEIGHT}, - "", 0, COLOR_THEME_PRIMARY2); + headerValue = header.setTitle2(""); lv_obj_set_style_text_color(headerValue->getLvObj(), makeLvColor(COLOR_THEME_WARNING), LV_STATE_USER_1); } diff --git a/radio/src/gui/colorlcd/page.cpp b/radio/src/gui/colorlcd/page.cpp index 2852f79d6..724ad2e63 100644 --- a/radio/src/gui/colorlcd/page.cpp +++ b/radio/src/gui/colorlcd/page.cpp @@ -35,9 +35,22 @@ PageHeader::PageHeader(Page * parent, uint8_t icon): return 0; }, NO_FOCUS | FORM_NO_BORDER); #endif - title = new StaticText(this, rect_t{}, "", 0, COLOR_THEME_PRIMARY2); - title->setTop(PAGE_TITLE_TOP); - title->setLeft(PAGE_TITLE_LEFT); + title = new StaticText(this, + {PAGE_TITLE_LEFT, PAGE_TITLE_TOP, + LCD_W - PAGE_TITLE_LEFT, PAGE_LINE_HEIGHT}, + "", 0, COLOR_THEME_PRIMARY2); +} + +StaticText* PageHeader::setTitle2(std::string txt) +{ + if (title2 == nullptr) { + title2 = new StaticText(this, + {PAGE_TITLE_LEFT, PAGE_TITLE_TOP + PAGE_LINE_HEIGHT, + LCD_W - PAGE_TITLE_LEFT, PAGE_LINE_HEIGHT}, + "", 0, COLOR_THEME_PRIMARY2); + } + title2->setText(std::move(txt)); + return title2; } void PageHeader::paint(BitmapBuffer * dc) diff --git a/radio/src/gui/colorlcd/page.h b/radio/src/gui/colorlcd/page.h index e5aa8fe27..6ff2bb88f 100644 --- a/radio/src/gui/colorlcd/page.h +++ b/radio/src/gui/colorlcd/page.h @@ -35,12 +35,14 @@ class PageHeader : public FormGroup uint8_t getIcon() const { return icon; } void setTitle(std::string txt) { title->setText(std::move(txt)); } + StaticText* setTitle2(std::string txt); void paint(BitmapBuffer* dc) override; protected: uint8_t icon; StaticText* title; + StaticText* title2 = nullptr; }; class Page : public Window diff --git a/radio/src/gui/colorlcd/radio_calibration.cpp b/radio/src/gui/colorlcd/radio_calibration.cpp index b36cf6c9d..4aec22dcc 100644 --- a/radio/src/gui/colorlcd/radio_calibration.cpp +++ b/radio/src/gui/colorlcd/radio_calibration.cpp @@ -68,11 +68,7 @@ RadioCalibrationPage::RadioCalibrationPage(bool initial): void RadioCalibrationPage::buildHeader(Window * window) { header.setTitle(STR_MENUCALIBRATION); - - text = new StaticText(window, - {PAGE_TITLE_LEFT, PAGE_TITLE_TOP + PAGE_LINE_HEIGHT, - LCD_W - PAGE_TITLE_LEFT, PAGE_LINE_HEIGHT}, - STR_MENUTOSTART, 0, COLOR_THEME_PRIMARY2); + text = header.setTitle2(STR_MENUTOSTART); } void RadioCalibrationPage::buildBody(FormWindow * window) diff --git a/radio/src/gui/colorlcd/radio_diagkeys.cpp b/radio/src/gui/colorlcd/radio_diagkeys.cpp index 3a57d85c7..cf89e32f2 100644 --- a/radio/src/gui/colorlcd/radio_diagkeys.cpp +++ b/radio/src/gui/colorlcd/radio_diagkeys.cpp @@ -125,7 +125,7 @@ class RadioKeyDiagsWindow : public Window void RadioKeyDiagsPage::buildHeader(Window * window) { - new StaticText(window, {PAGE_TITLE_LEFT, PAGE_TITLE_TOP + 10, LCD_W - PAGE_TITLE_LEFT, PAGE_LINE_HEIGHT}, STR_MENU_RADIO_SWITCHES, 0, COLOR_THEME_PRIMARY2); + header.setTitle(STR_MENU_RADIO_SWITCHES); } void RadioKeyDiagsPage::buildBody(Window * window) diff --git a/radio/src/gui/colorlcd/radio_ghost_module_config.cpp b/radio/src/gui/colorlcd/radio_ghost_module_config.cpp index f21bdd045..61e80f973 100644 --- a/radio/src/gui/colorlcd/radio_ghost_module_config.cpp +++ b/radio/src/gui/colorlcd/radio_ghost_module_config.cpp @@ -137,7 +137,7 @@ RadioGhostModuleConfig::RadioGhostModuleConfig(uint8_t moduleIdx) : void RadioGhostModuleConfig::buildHeader(Window * window) { - new StaticText(window, {PAGE_TITLE_LEFT, PAGE_TITLE_TOP + 10, LCD_W - PAGE_TITLE_LEFT, PAGE_LINE_HEIGHT}, "GHOST MODULE", 0, COLOR_THEME_SECONDARY1); + header.setTitle("GHOST MODULE"); } void RadioGhostModuleConfig::buildBody(FormWindow * window) diff --git a/radio/src/gui/colorlcd/radio_sdmanager.cpp b/radio/src/gui/colorlcd/radio_sdmanager.cpp index 6dbc74caf..84a70b78f 100644 --- a/radio/src/gui/colorlcd/radio_sdmanager.cpp +++ b/radio/src/gui/colorlcd/radio_sdmanager.cpp @@ -55,7 +55,7 @@ class FileNameEditWindow : public Page void buildHeader(Window *window) { - new StaticText(window, {PAGE_TITLE_LEFT, PAGE_TITLE_TOP + 10, LCD_W - PAGE_TITLE_LEFT, PAGE_LINE_HEIGHT}, STR_RENAME_FILE, 0, COLOR_THEME_PRIMARY2); + header.setTitle(STR_RENAME_FILE); } void buildBody(Window *window) diff --git a/radio/src/gui/colorlcd/radio_setup.cpp b/radio/src/gui/colorlcd/radio_setup.cpp index e59efe670..1cf2a4d88 100644 --- a/radio/src/gui/colorlcd/radio_setup.cpp +++ b/radio/src/gui/colorlcd/radio_setup.cpp @@ -252,10 +252,7 @@ class SoundPage : public Page { void build() { - new StaticText(&header, - {PAGE_TITLE_LEFT, PAGE_TITLE_TOP, LCD_W - PAGE_TITLE_LEFT, - PAGE_LINE_HEIGHT}, - STR_SOUND_LABEL, 0, COLOR_THEME_PRIMARY2); + header.setTitle(STR_SOUND_LABEL); body.setFlexLayout(); FlexGridLayout grid(col_two_dsc, row_dsc, 2); @@ -321,10 +318,7 @@ class VarioPage : public Page { void build() { - new StaticText(&header, - {PAGE_TITLE_LEFT, PAGE_TITLE_TOP, LCD_W - PAGE_TITLE_LEFT, - PAGE_LINE_HEIGHT}, - STR_VARIO, 0, COLOR_THEME_PRIMARY2); + header.setTitle(STR_VARIO); body.setFlexLayout(); FlexGridLayout grid(col_two_dsc, row_dsc, 2); @@ -376,10 +370,7 @@ class HapticPage : public Page { void build() { - new StaticText(&header, - {PAGE_TITLE_LEFT, PAGE_TITLE_TOP, LCD_W - PAGE_TITLE_LEFT, - PAGE_LINE_HEIGHT}, - STR_HAPTIC_LABEL, 0, COLOR_THEME_PRIMARY2); + header.setTitle(STR_HAPTIC_LABEL); body.setFlexLayout(); FlexGridLayout grid(col_two_dsc, row_dsc, 2); @@ -416,10 +407,7 @@ class AlarmsPage : public Page { void build() { - new StaticText(&header, - {PAGE_TITLE_LEFT, PAGE_TITLE_TOP, LCD_W - PAGE_TITLE_LEFT, - PAGE_LINE_HEIGHT}, - STR_ALARMS_LABEL, 0, COLOR_THEME_PRIMARY2); + header.setTitle(STR_ALARMS_LABEL); body.setFlexLayout(); FlexGridLayout grid(col_two_dsc, row_dsc, 2); @@ -491,10 +479,7 @@ class BacklightPage : public Page { void build() { - new StaticText(&header, - {PAGE_TITLE_LEFT, PAGE_TITLE_TOP, LCD_W - PAGE_TITLE_LEFT, - PAGE_LINE_HEIGHT}, - STR_BACKLIGHT_LABEL, 0, COLOR_THEME_PRIMARY2); + header.setTitle(STR_BACKLIGHT_LABEL); body.setFlexLayout(); FlexGridLayout grid(col_three_dsc, row_dsc, 2); @@ -614,10 +599,7 @@ class GpsPage : public Page { void build() { - new StaticText(&header, - {PAGE_TITLE_LEFT, PAGE_TITLE_TOP, LCD_W - PAGE_TITLE_LEFT, - PAGE_LINE_HEIGHT}, - STR_GPS, 0, COLOR_THEME_PRIMARY2); + header.setTitle(STR_GPS); body.setFlexLayout(); FlexGridLayout grid(col_two_dsc, row_dsc, 2); diff --git a/radio/src/gui/colorlcd/radio_theme.cpp b/radio/src/gui/colorlcd/radio_theme.cpp index 9919f321b..2ed4092dc 100644 --- a/radio/src/gui/colorlcd/radio_theme.cpp +++ b/radio/src/gui/colorlcd/radio_theme.cpp @@ -327,10 +327,10 @@ class ColorEditPage : public Page { // page title header.setTitle(STR_EDIT_COLOR); - new StaticText(window, - { PAGE_TITLE_LEFT, PAGE_TITLE_TOP + PAGE_LINE_HEIGHT, - LCD_W - PAGE_TITLE_LEFT, PAGE_LINE_HEIGHT }, - ThemePersistance::getColorNames()[(int)_indexOfColor], 0, COLOR_THEME_PRIMARY2); + auto t2 = header.setTitle2(ThemePersistance::getColorNames()[(int)_indexOfColor]); +#if LCD_H > LCD_W + t2->setFont(FONT(XS)); +#endif // page tabs rect_t r = { LCD_W - 2*(BUTTON_WIDTH + 5), 6, BUTTON_WIDTH, BUTTON_HEIGHT }; @@ -404,19 +404,12 @@ class ThemeEditPage : public Page void buildHeader(FormGroup *window) { -#if LCD_W > LCD_H - LcdFlags flags = 0; -#else - LcdFlags flags = FONT(XS); -#endif - // page title header.setTitle(STR_EDIT_THEME); - _themeName = new StaticText(window, - {PAGE_TITLE_LEFT, PAGE_TITLE_TOP + PAGE_LINE_HEIGHT, - LCD_W - PAGE_TITLE_LEFT, PAGE_LINE_HEIGHT}, - "", 0, COLOR_THEME_PRIMARY2 | flags); - lv_label_set_long_mode(_themeName->getLvObj(), LV_LABEL_LONG_DOT); + _themeName = header.setTitle2(_theme.getName()); +#if LCD_H > LCD_W + _themeName->setFont(FONT(XS)); +#endif // save and cancel rect_t r = {LCD_W - (BUTTON_WIDTH + 5), 6, BUTTON_WIDTH, BUTTON_HEIGHT }; diff --git a/radio/src/gui/colorlcd/special_functions.cpp b/radio/src/gui/colorlcd/special_functions.cpp index 7ddd44729..779ab776e 100644 --- a/radio/src/gui/colorlcd/special_functions.cpp +++ b/radio/src/gui/colorlcd/special_functions.cpp @@ -81,12 +81,7 @@ class SpecialFunctionEditPage : public Page void buildHeader(Window *window) { header.setTitle(functions == g_model.customFn ? STR_MENUCUSTOMFUNC : STR_MENUSPECIALFUNCS); - headerSF = new StaticText( - window, - {PAGE_TITLE_LEFT, PAGE_TITLE_TOP + PAGE_LINE_HEIGHT, - LCD_W - PAGE_TITLE_LEFT, 20}, - (functions == g_model.customFn ? "SF" : "GF") + std::to_string(index+1), - 0, COLOR_THEME_PRIMARY2); + headerSF = header.setTitle2((functions == g_model.customFn ? "SF" : "GF") + std::to_string(index+1)); lv_obj_set_style_text_color(headerSF->getLvObj(), makeLvColor(COLOR_THEME_ACTIVE), LV_STATE_USER_1); lv_obj_set_style_text_font(headerSF->getLvObj(), getFont(FONT(BOLD)), LV_STATE_USER_1); diff --git a/radio/src/gui/colorlcd/throttle_params.cpp b/radio/src/gui/colorlcd/throttle_params.cpp index 657a7b772..45dc74738 100644 --- a/radio/src/gui/colorlcd/throttle_params.cpp +++ b/radio/src/gui/colorlcd/throttle_params.cpp @@ -55,10 +55,7 @@ static void setThrottleTrimSource(int16_t src) ThrottleParams::ThrottleParams() : Page(ICON_MODEL_SETUP) { - new StaticText(&header, - {PAGE_TITLE_LEFT, PAGE_TITLE_TOP, LCD_W - PAGE_TITLE_LEFT, - PAGE_LINE_HEIGHT}, - STR_THROTTLE_LABEL, 0, COLOR_THEME_PRIMARY2); + header.setTitle(STR_THROTTLE_LABEL); body.setFlexLayout(); FlexGridLayout grid(line_col_dsc, line_row_dsc, 2); diff --git a/radio/src/gui/colorlcd/trims_setup.cpp b/radio/src/gui/colorlcd/trims_setup.cpp index 84abcd664..21746914d 100644 --- a/radio/src/gui/colorlcd/trims_setup.cpp +++ b/radio/src/gui/colorlcd/trims_setup.cpp @@ -38,10 +38,7 @@ static void resetTrims() TrimsSetup::TrimsSetup() : Page(ICON_MODEL_SETUP) { - new StaticText(&header, - {PAGE_TITLE_LEFT, PAGE_TITLE_TOP, LCD_W - PAGE_TITLE_LEFT, - PAGE_LINE_HEIGHT}, - STR_TRIMS, 0, COLOR_THEME_PRIMARY2); + header.setTitle(STR_TRIMS); body.setFlexLayout(); FlexGridLayout grid(line_col_dsc, line_row_dsc, 2);