diff --git a/radio/src/gui/colorlcd/colors.cpp b/radio/src/gui/colorlcd/colors.cpp index 14b33cc8c..b2807ead4 100644 --- a/radio/src/gui/colorlcd/colors.cpp +++ b/radio/src/gui/colorlcd/colors.cpp @@ -38,6 +38,8 @@ const uint16_t defaultColors[] = { RGB(255, 222, 0), // ACTIVE RGB(224, 0, 0), // WARNING RGB(140, 140, 140), // DISABLED + RGB(0, 0, 0), // Quick Menu Background + RGB(255, 255, 255), // Quick Menu Foreground RGB(170, 85, 0), // CUSTOM // Fixed RGB(0x00, 0x00, 0x00), // BLACK @@ -76,6 +78,8 @@ uint16_t lcdColorTable[] = { RGB(255, 222, 0), // ACTIVE RGB(224, 0, 0), // WARNING RGB(140, 140, 140), // DISABLED + RGB(0, 0, 0), // Quick Menu Background + RGB(255, 255, 255), // Quick Menu Foreground RGB(170, 85, 0), // CUSTOM // Fixed RGB(0x00, 0x00, 0x00), // BLACK diff --git a/radio/src/gui/colorlcd/colors.h b/radio/src/gui/colorlcd/colors.h index e5264c213..05129195e 100644 --- a/radio/src/gui/colorlcd/colors.h +++ b/radio/src/gui/colorlcd/colors.h @@ -40,6 +40,8 @@ enum LcdColorIndex { COLOR_THEME_ACTIVE_INDEX, COLOR_THEME_WARNING_INDEX, COLOR_THEME_DISABLED_INDEX, + COLOR_THEME_QM_BG_INDEX, + COLOR_THEME_QM_FG_INDEX, CUSTOM_COLOR_INDEX, // Variable count @@ -136,6 +138,8 @@ extern const uint16_t defaultColors[]; #define COLOR_THEME_ACTIVE COLOR(COLOR_THEME_ACTIVE_INDEX) #define COLOR_THEME_WARNING COLOR(COLOR_THEME_WARNING_INDEX) #define COLOR_THEME_DISABLED COLOR(COLOR_THEME_DISABLED_INDEX) +#define COLOR_THEME_QM_BG COLOR(COLOR_THEME_QM_BG_INDEX) +#define COLOR_THEME_QM_FG COLOR(COLOR_THEME_QM_FG_INDEX) #define CUSTOM_COLOR COLOR(CUSTOM_COLOR_INDEX) constexpr int MAX_SATURATION = 100; diff --git a/radio/src/gui/colorlcd/controls/color_editor.cpp b/radio/src/gui/colorlcd/controls/color_editor.cpp index 6b5eb1bf4..fc1c9ff3d 100644 --- a/radio/src/gui/colorlcd/controls/color_editor.cpp +++ b/radio/src/gui/colorlcd/controls/color_editor.cpp @@ -365,7 +365,7 @@ class ThemeColorType : public ColorType m_color = color; auto vbox = new Window(parent, rect_t{}); - vbox->setFlexLayout(LV_FLEX_FLOW_COLUMN, PAD_MEDIUM); + vbox->setFlexLayout(LV_FLEX_FLOW_COLUMN, PAD_ZERO); makeButtonsRow(vbox, COLOR_THEME_PRIMARY1_INDEX, COLOR_THEME_PRIMARY2_INDEX, COLOR_THEME_PRIMARY3_INDEX); @@ -375,6 +375,8 @@ class ThemeColorType : public ColorType COLOR_THEME_ACTIVE_INDEX); makeButtonsRow(vbox, COLOR_THEME_WARNING_INDEX, COLOR_THEME_DISABLED_INDEX, COLOR_THEME_DISABLED_INDEX); + makeButtonsRow(vbox, COLOR_THEME_QM_BG_INDEX, COLOR_THEME_QM_FG_INDEX, + COLOR_THEME_QM_FG_INDEX); } uint32_t getRGB() { return m_color; } @@ -397,13 +399,13 @@ class ThemeColorType : public ColorType void makeButtonsRow(Window* parent, uint16_t c1, uint16_t c2, uint16_t c3) { auto hbox = new Window(parent, rect_t{}); - hbox->padAll(PAD_TINY); - hbox->setFlexLayout(LV_FLEX_FLOW_ROW, PAD_MEDIUM); + hbox->padAll(PAD_OUTLINE); + hbox->setFlexLayout(LV_FLEX_FLOW_ROW, PAD_OUTLINE); lv_obj_set_flex_align(hbox->getLvObj(), LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_SPACE_AROUND); makeButton(hbox, c1); - makeButton(hbox, c2); + if (c2 != c1) makeButton(hbox, c2); if (c3 != c2) makeButton(hbox, c3); } diff --git a/radio/src/gui/colorlcd/libui/etx_lv_theme.cpp b/radio/src/gui/colorlcd/libui/etx_lv_theme.cpp index bb4272dbb..08637d85d 100644 --- a/radio/src/gui/colorlcd/libui/etx_lv_theme.cpp +++ b/radio/src/gui/colorlcd/libui/etx_lv_theme.cpp @@ -217,19 +217,19 @@ const lv_style_const_prop_t disabled_props[] = { }; LV_STYLE_CONST_MULTI_INIT(EdgeTxStyles::disabled, disabled_props); -static lv_color_t darkgrey_filter_cb(const lv_color_filter_dsc_t* f, +static lv_color_t qm_disabled_filter_cb(const lv_color_filter_dsc_t* f, lv_color_t color, lv_opa_t opa) { LV_UNUSED(f); - return lv_color_mix(lv_palette_darken(LV_PALETTE_GREY, 2), color, opa); + return lv_color_mix(makeLvColor(COLOR_THEME_QM_FG_INDEX), color, opa); } -const lv_color_filter_dsc_t darkgrey_filter = {.filter_cb = darkgrey_filter_cb, +const lv_color_filter_dsc_t qm_disabled_filter = {.filter_cb = qm_disabled_filter_cb, .user_data = 0}; const lv_style_const_prop_t qm_disabled_props[] = { - LV_STYLE_CONST_COLOR_FILTER_DSC(&darkgrey_filter), - LV_STYLE_CONST_COLOR_FILTER_OPA(LV_OPA_90), + LV_STYLE_CONST_COLOR_FILTER_DSC(&qm_disabled_filter), + LV_STYLE_CONST_COLOR_FILTER_OPA(LV_OPA_60), LV_STYLE_PROP_INV, }; LV_STYLE_CONST_MULTI_INIT(EdgeTxStyles::qmdisabled, qm_disabled_props); diff --git a/radio/src/gui/colorlcd/radio/preview_window.cpp b/radio/src/gui/colorlcd/radio/preview_window.cpp index b0ecba375..c6a72c244 100644 --- a/radio/src/gui/colorlcd/radio/preview_window.cpp +++ b/radio/src/gui/colorlcd/radio/preview_window.cpp @@ -26,10 +26,7 @@ #include "etx_lv_theme.h" #include "trims.h" #include "topbar.h" - -extern inline tmr10ms_t getTicks() { return g_tmr10ms; } - -#define PREVIEW_WINDOW_REFRESH_INTERVAL ((1000 / 10) * 1) +#include "quick_menu_group.h" // class to hold a color list and apply / restore it while drawing standard // controls @@ -146,35 +143,56 @@ PreviewWindow::PreviewWindow(Window *window, rect_t rect, etx_solid_bg(lvobj, COLOR_THEME_SECONDARY3_INDEX); - auto topbar = new Window(this, {0, 0, LV_PCT(100), TopBar::TOPBAR_ZONE_HEIGHT}); + auto topbar = new Window(this, {0, 0, LV_PCT(100), EdgeTxStyles::MENU_HEADER_HEIGHT}); etx_solid_bg(topbar->getLvObj(), COLOR_THEME_SECONDARY1_INDEX); - new StaticIcon(topbar, ICON_X1, ICON_Y, ICON_RADIO, - COLOR_THEME_PRIMARY2_INDEX); - new StaticIcon(topbar, ICON_X2, ICON_Y, ICON_RADIO_TOOLS, - COLOR_THEME_PRIMARY2_INDEX); - new StaticIcon(topbar, ICON_X3, ICON_Y, ICON_RADIO_SETUP, - COLOR_THEME_PRIMARY2_INDEX); + new HeaderIcon(topbar, ICON_EDGETX); - new StaticText(this, {ICON_X1, CBT_Y, CBT_W, EdgeTxStyles::STD_FONT_HEIGHT}, STR_THEME_CHECKBOX); + new StaticText(this, {CBT_X, CBT_Y, CBT_W, EdgeTxStyles::STD_FONT_HEIGHT}, STR_THEME_CHECKBOX); new ThemedCheckBox(this, {CB1_X, CB_Y, CB_W, 0}, true); new ThemedCheckBox(this, {CB2_X, CB_Y, CB_W, 0}, false); (new ThemedButton(this, {BTN_X, BTN1_Y, BTN_W, 0}, STR_THEME_ACTIVE, true)) ->check(true); new ThemedButton(this, {BTN_X, BTN2_Y, BTN_W, 0}, STR_THEME_REGULAR, false); - new MainViewTrim(this, {ICON_X1, TRIM_Y, MainViewSlider::HORIZONTAL_SLIDERS_WIDTH, EdgeTxStyles::STD_FONT_HEIGHT}, 0, false); - new MainViewSlider(this, {ICON_X1, SLIDER_Y, MainViewSlider::HORIZONTAL_SLIDERS_WIDTH, EdgeTxStyles::STD_FONT_HEIGHT}, 0, false); - new StaticText(this, {ICON_X1, TXT1_Y, TXT_W, EdgeTxStyles::STD_FONT_HEIGHT}, STR_THEME_WARNING, + new MainViewTrim(this, {CBT_X, TRIM_Y, MainViewSlider::HORIZONTAL_SLIDERS_WIDTH, EdgeTxStyles::STD_FONT_HEIGHT}, 0, false); + new MainViewSlider(this, {CBT_X, SLIDER_Y, MainViewSlider::HORIZONTAL_SLIDERS_WIDTH, EdgeTxStyles::STD_FONT_HEIGHT}, 0, false); + new StaticText(this, {CBT_X, TXT1_Y, TXT_W, EdgeTxStyles::STD_FONT_HEIGHT}, STR_THEME_WARNING, COLOR_THEME_WARNING_INDEX); - new StaticText(this, {ICON_X1, TXT2_Y, TXT_W, EdgeTxStyles::STD_FONT_HEIGHT}, STR_THEME_DISABLED, + new StaticText(this, {CBT_X, TXT2_Y, TXT_W, EdgeTxStyles::STD_FONT_HEIGHT}, STR_THEME_DISABLED, COLOR_THEME_DISABLED_INDEX); - new ThemedTextEdit(this, {ICON_X1, EDT_Y, TXT_W, 0}, STR_THEME_EDIT, true); - new ThemedTextEdit(this, {EDT2_X, EDT_Y, TXT_W, 0}, STR_THEME_FOCUS, false); - ticks = 0; + new ThemedTextEdit(this, {CBT_X, EDT_Y, EDY_W, 0}, STR_THEME_EDIT, true); + new ThemedTextEdit(this, {EDT2_X, EDT_Y, EDY_W, 0}, STR_THEME_FOCUS, false); new HeaderDateTime(this, width() - DATE_XO, PAD_SMALL); + auto qm = new Window(this, {QM_X, QM_Y, QM_W, QM_H}); + etx_solid_bg(qm->getLvObj(), COLOR_THEME_QM_BG_INDEX); + etx_obj_add_style(qm->getLvObj(), styles->bg_opacity_90, LV_PART_MAIN); + auto sep = lv_obj_create(qm->getLvObj()); + etx_solid_bg(sep, COLOR_THEME_QM_FG_INDEX); + lv_obj_set_size(sep, LCD_W, PAD_THREE); + auto mask = getBuiltinIcon(ICON_TOP_LOGO); + new StaticIcon(qm, (QM_W - mask->width) / 2, 0, ICON_TOP_LOGO, COLOR_THEME_QM_FG_INDEX); + + auto qmb = new Window(qm, {PAD_SMALL, mask->height + PAD_SMALL, QuickMenuGroup::QM_BUTTON_WIDTH, QuickMenuGroup::QM_BUTTON_HEIGHT}); + etx_obj_add_style(qmb->getLvObj(), styles->rounded, LV_PART_MAIN); + etx_txt_color(qmb->getLvObj(), COLOR_THEME_QM_FG_INDEX, LV_PART_MAIN); + etx_solid_bg(qmb->getLvObj(), COLOR_THEME_QM_BG_INDEX, LV_PART_MAIN); + auto iconPtr = new StaticIcon(qmb, (QuickMenuGroup::QM_BUTTON_WIDTH - QuickMenuGroup::QM_ICON_SIZE) / 2, PAD_SMALL, + ICON_MODEL_SELECT, COLOR_THEME_QM_FG_INDEX); + auto textPtr = new StaticText(qmb, {0, QuickMenuGroup::QM_ICON_SIZE + PAD_TINY * 2, QuickMenuGroup::QM_BUTTON_WIDTH - 1, 0}, + STR_QM_MANAGE_MODELS, COLOR_THEME_QM_FG_INDEX, CENTERED | FONT(XS)); + + qmb = new Window(qm, {QuickMenuGroup::QM_BUTTON_WIDTH + PAD_SMALL * 2, mask->height + PAD_SMALL, QuickMenuGroup::QM_BUTTON_WIDTH, QuickMenuGroup::QM_BUTTON_HEIGHT}); + etx_obj_add_style(qmb->getLvObj(), styles->rounded, LV_PART_MAIN); + etx_txt_color(qmb->getLvObj(), COLOR_THEME_QM_BG_INDEX, LV_PART_MAIN); + etx_solid_bg(qmb->getLvObj(), COLOR_THEME_QM_FG_INDEX, LV_PART_MAIN); + iconPtr = new StaticIcon(qmb, (QuickMenuGroup::QM_BUTTON_WIDTH - QuickMenuGroup::QM_ICON_SIZE) / 2, PAD_SMALL, + ICON_MODEL, COLOR_THEME_QM_BG_INDEX); + textPtr = new StaticText(qmb, {0, QuickMenuGroup::QM_ICON_SIZE + PAD_TINY * 2, QuickMenuGroup::QM_BUTTON_WIDTH - 1, 0}, + STR_QM_MODEL_SETUP, COLOR_THEME_QM_BG_INDEX, CENTERED | FONT(XS)); + lv_group_set_default(def_group); colorMaintainer.restoreColorValues(); diff --git a/radio/src/gui/colorlcd/radio/preview_window.h b/radio/src/gui/colorlcd/radio/preview_window.h index e0c115fd9..2366fb9ee 100644 --- a/radio/src/gui/colorlcd/radio/preview_window.h +++ b/radio/src/gui/colorlcd/radio/preview_window.h @@ -34,29 +34,28 @@ class PreviewWindow : public Window void setColorList(std::vector colorList); - static LAYOUT_VAL_SCALED(ICON_X1, 5) - static LAYOUT_VAL_SCALED(ICON_X2, 38) - static LAYOUT_VAL_SCALED(ICON_X3, 71) - static LAYOUT_VAL_SCALED(ICON_Y, 5) static LAYOUT_VAL_SCALED(DATE_XO, 46) - static LAYOUT_VAL_SCALED(CBT_Y, 44) + static LAYOUT_VAL_SCALED(CBT_X, 5) + static LAYOUT_VAL_SCALED(CBT_Y, 54) static LAYOUT_VAL_SCALED(CBT_W, 100) static LAYOUT_VAL_SCALED(CB1_X, 100) static LAYOUT_VAL_SCALED(CB2_X, 154) - static LAYOUT_VAL_SCALED(CB_Y, 40) + static LAYOUT_VAL_SCALED(CB_Y, 50) static LAYOUT_VAL_SCALED(CB_W, 50) static LAYOUT_VAL_SCALED(BTN_X, 210) - static LAYOUT_VAL_SCALED(BTN1_Y, 40) - static LAYOUT_VAL_SCALED(BTN2_Y, 79) + static LAYOUT_VAL_SCALED(BTN1_Y, 48) + static LAYOUT_VAL_SCALED(BTN2_Y, 82) static LAYOUT_VAL_SCALED(BTN_W, 100) - static LAYOUT_VAL_SCALED(TRIM_Y, 79) - static LAYOUT_VAL_SCALED(SLIDER_Y, 101) - static LAYOUT_VAL_SCALED(TXT1_Y, 122) - static LAYOUT_VAL_SCALED(TXT2_Y, 144) + static LAYOUT_VAL_SCALED(TRIM_Y, 89) + static LAYOUT_VAL_SCALED(SLIDER_Y, 111) + static LAYOUT_VAL_SCALED(TXT1_Y, 132) + static LAYOUT_VAL_SCALED(TXT2_Y, 154) static LAYOUT_VAL_SCALED(TXT_W, 100) - static LAYOUT_VAL_SCALED(EDT2_X, 114) - static LAYOUT_VAL_SCALED(EDT_Y, 170) - - protected: - tmr10ms_t ticks; + static LAYOUT_VAL_SCALED(EDT2_X, 94) + static LAYOUT_VAL_SCALED(EDT_Y, 180) + static LAYOUT_VAL_SCALED(EDY_W, 80) + static LAYOUT_VAL_SCALED(QM_X, 180) + static LAYOUT_VAL_SCALED(QM_Y, 117) + static LAYOUT_VAL_SCALED(QM_W, 140) + static LAYOUT_VAL_SCALED(QM_H, 104) }; diff --git a/radio/src/gui/colorlcd/setup_menus/quick_menu.cpp b/radio/src/gui/colorlcd/setup_menus/quick_menu.cpp index 0e3cf79b6..a671f7b14 100644 --- a/radio/src/gui/colorlcd/setup_menus/quick_menu.cpp +++ b/radio/src/gui/colorlcd/setup_menus/quick_menu.cpp @@ -226,14 +226,14 @@ QuickMenu::QuickMenu() : setWindowFlag(OPAQUE); etx_obj_add_style(lvobj, styles->bg_opacity_90, LV_PART_MAIN); - etx_bg_color(lvobj, COLOR_BLACK_INDEX); + etx_bg_color(lvobj, COLOR_THEME_QM_BG_INDEX); auto sep = lv_obj_create(lvobj); - etx_solid_bg(sep, COLOR_WHITE_INDEX); + etx_solid_bg(sep, COLOR_THEME_QM_FG_INDEX); lv_obj_set_size(sep, LCD_W, PAD_THREE); auto mask = getBuiltinIcon(ICON_TOP_LOGO); - new StaticIcon(this, (LCD_W - mask->width) / 2, 0, ICON_TOP_LOGO, COLOR_WHITE_INDEX); + new StaticIcon(this, (LCD_W - mask->width) / 2, 0, ICON_TOP_LOGO, COLOR_THEME_QM_FG_INDEX); new ButtonBase( this, {0, 0, LCD_W, EdgeTxStyles::UI_ELEMENT_HEIGHT}, diff --git a/radio/src/gui/colorlcd/setup_menus/quick_menu_group.cpp b/radio/src/gui/colorlcd/setup_menus/quick_menu_group.cpp index 4bf9d84d4..130d0e28e 100644 --- a/radio/src/gui/colorlcd/setup_menus/quick_menu_group.cpp +++ b/radio/src/gui/colorlcd/setup_menus/quick_menu_group.cpp @@ -29,11 +29,11 @@ static void etx_quick_button_constructor(const lv_obj_class_t* class_p, lv_obj_t* obj) { etx_obj_add_style(obj, styles->rounded, LV_PART_MAIN); - etx_txt_color(obj, COLOR_WHITE_INDEX, LV_PART_MAIN); - etx_obj_add_style(obj, styles->pad_medium, LV_PART_MAIN); - etx_solid_bg(obj, COLOR_BLACK_INDEX, LV_PART_MAIN); + etx_txt_color(obj, COLOR_THEME_QM_FG_INDEX, LV_PART_MAIN); + etx_obj_add_style(obj, styles->pad_zero, LV_PART_MAIN); + etx_solid_bg(obj, COLOR_THEME_QM_BG_INDEX, LV_PART_MAIN); - etx_solid_bg(obj, COLOR_WHITE_INDEX, LV_PART_MAIN | LV_STATE_FOCUSED); + etx_solid_bg(obj, COLOR_THEME_QM_FG_INDEX, LV_PART_MAIN | LV_STATE_FOCUSED); } static const lv_obj_class_t etx_quick_button_class = { @@ -63,16 +63,14 @@ class QuickMenuButton : public ButtonBase ButtonBase(parent, {}, pressHandler, etx_quick_button_create), visibleHandler(std::move(visibleHandler)) { - padAll(PAD_ZERO); - - iconPtr = new StaticIcon(this, (QuickMenuGroup::QM_BUTTON_WIDTH - QuickMenuGroup::QM_ICON_SIZE) / 2, PAD_SMALL, icon, COLOR_WHITE_INDEX); + iconPtr = new StaticIcon(this, (QuickMenuGroup::QM_BUTTON_WIDTH - QuickMenuGroup::QM_ICON_SIZE) / 2, PAD_SMALL, icon, COLOR_THEME_QM_FG_INDEX); etx_obj_add_style(iconPtr->getLvObj(), styles->qmdisabled, LV_PART_MAIN | LV_STATE_DISABLED); - etx_img_color(iconPtr->getLvObj(), COLOR_BLACK_INDEX, LV_STATE_USER_1); + etx_img_color(iconPtr->getLvObj(), COLOR_THEME_QM_BG_INDEX, LV_STATE_USER_1); textPtr = new StaticText(this, {0, QuickMenuGroup::QM_ICON_SIZE + PAD_TINY * 2, QuickMenuGroup::QM_BUTTON_WIDTH - 1, 0}, - title, COLOR_WHITE_INDEX, CENTERED | FONT(XS)); + title, COLOR_THEME_QM_FG_INDEX, CENTERED | FONT(XS)); etx_obj_add_style(textPtr->getLvObj(), styles->qmdisabled, LV_PART_MAIN | LV_STATE_DISABLED); - etx_txt_color(textPtr->getLvObj(), COLOR_BLACK_INDEX, LV_STATE_USER_1); + etx_txt_color(textPtr->getLvObj(), COLOR_THEME_QM_BG_INDEX, LV_STATE_USER_1); lv_obj_add_event_cb(lvobj, QuickMenuButton::focused_cb, LV_EVENT_FOCUSED, nullptr); lv_obj_add_event_cb(lvobj, QuickMenuButton::defocused_cb, LV_EVENT_DEFOCUSED, nullptr); diff --git a/radio/src/gui/colorlcd/themes/theme_manager.cpp b/radio/src/gui/colorlcd/themes/theme_manager.cpp index eea8a01fd..93cc5eead 100644 --- a/radio/src/gui/colorlcd/themes/theme_manager.cpp +++ b/radio/src/gui/colorlcd/themes/theme_manager.cpp @@ -104,6 +104,8 @@ static const struct YamlNode struct_YAMLThemeColors[] = { YAML_UNSIGNED_CUST("ACTIVE", 32, r_color, w_color), YAML_UNSIGNED_CUST("WARNING", 32, r_color, w_color), YAML_UNSIGNED_CUST("DISABLED", 32, r_color, w_color), + YAML_UNSIGNED_CUST("QM_BG", 32, r_color, w_color), + YAML_UNSIGNED_CUST("QM_FG", 32, r_color, w_color), YAML_END}; // This hack is required to ensure the YAML file written is backward compatible @@ -131,7 +133,8 @@ static const char* const colorNames[THEME_COLOR_COUNT] = { STR_THEME_COLOR_SECONDARY2, STR_THEME_COLOR_SECONDARY3, STR_THEME_COLOR_FOCUS, STR_THEME_COLOR_EDIT, STR_THEME_COLOR_ACTIVE, STR_THEME_COLOR_WARNING, - STR_THEME_COLOR_DISABLED, STR_THEME_COLOR_CUSTOM, + STR_THEME_COLOR_DISABLED, STR_THEME_COLOR_QM_BG, + STR_THEME_COLOR_QM_FG, STR_THEME_COLOR_CUSTOM, }; ThemeFile::ThemeFile(std::string themePath, bool loadYAML) : path(themePath) @@ -201,6 +204,10 @@ void ThemeFile::deSerialize() struct YAMLTheme yt; struct YamlNode themeRootNode = YAML_ROOT(r_struct_YAMLTheme); + // initialize the color table to defaults (in case of missing entries) + for (uint8_t i = COLOR_THEME_PRIMARY1_INDEX; i < THEME_COLOR_COUNT - 1; i += 1) + yt.colors.colors[i] = defaultColors[i]; + YamlTreeWalker tree; tree.reset(&themeRootNode, (uint8_t*)&yt); auto err = readYamlFile(path.c_str(), YamlTreeWalker::get_parser_calls(), @@ -475,9 +482,8 @@ class DefaultEdgeTxTheme : public ThemeFile setAuthor("EdgeTX Team"); setInfo("Default EdgeTX Color Scheme"); - // initializze the default color table - for (uint8_t i = COLOR_THEME_PRIMARY1_INDEX; - i <= COLOR_THEME_DISABLED_INDEX; i += 1) + // initialize the default color table + for (uint8_t i = COLOR_THEME_PRIMARY1_INDEX; i < THEME_COLOR_COUNT - 1; i += 1) colorList.emplace_back(ColorEntry{(LcdColorIndex)i, defaultColors[i]}); } }; diff --git a/radio/src/translations/i18n/cn.h b/radio/src/translations/i18n/cn.h index 8931d8dfa..1f0a7e193 100644 --- a/radio/src/translations/i18n/cn.h +++ b/radio/src/translations/i18n/cn.h @@ -1260,6 +1260,8 @@ #define TR_THEME_COLOR_ACTIVE "激活" #define TR_THEME_COLOR_WARNING "警告" #define TR_THEME_COLOR_DISABLED "禁用" +#define TR_THEME_COLOR_QM_BG "Quick Menu BG" +#define TR_THEME_COLOR_QM_FG "Quick Menu FG" #define TR_THEME_COLOR_CUSTOM "自定义" #define TR_THEME_CHECKBOX "复选框" #define TR_THEME_ACTIVE "激活" diff --git a/radio/src/translations/i18n/cz.h b/radio/src/translations/i18n/cz.h index 41ebcdfa2..946bfcfe2 100644 --- a/radio/src/translations/i18n/cz.h +++ b/radio/src/translations/i18n/cz.h @@ -1264,6 +1264,8 @@ #define TR_THEME_COLOR_ACTIVE "AKTIVNÍ" #define TR_THEME_COLOR_WARNING "VAROVÁNÍ" #define TR_THEME_COLOR_DISABLED "VYPNUTÉ" +#define TR_THEME_COLOR_QM_BG "Quick Menu BG" +#define TR_THEME_COLOR_QM_FG "Quick Menu FG" #define TR_THEME_COLOR_CUSTOM "VLASTNÍ" #define TR_THEME_CHECKBOX "Pole výběru" #define TR_THEME_ACTIVE "Aktivní" diff --git a/radio/src/translations/i18n/da.h b/radio/src/translations/i18n/da.h index 0e3ecc747..9df58371c 100644 --- a/radio/src/translations/i18n/da.h +++ b/radio/src/translations/i18n/da.h @@ -1274,6 +1274,8 @@ #define TR_THEME_COLOR_ACTIVE "AKTIV" #define TR_THEME_COLOR_WARNING "ADVARSEL" #define TR_THEME_COLOR_DISABLED "DEAKTIV" +#define TR_THEME_COLOR_QM_BG "Quick Menu BG" +#define TR_THEME_COLOR_QM_FG "Quick Menu FG" #define TR_THEME_COLOR_CUSTOM "BRUGER STYRET" #define TR_THEME_CHECKBOX "Checkbox" #define TR_THEME_ACTIVE "Aktiv" diff --git a/radio/src/translations/i18n/de.h b/radio/src/translations/i18n/de.h index ccd1ee62f..286425755 100644 --- a/radio/src/translations/i18n/de.h +++ b/radio/src/translations/i18n/de.h @@ -1263,6 +1263,8 @@ #define TR_THEME_COLOR_ACTIVE "Aktiv" #define TR_THEME_COLOR_WARNING "Warnung" #define TR_THEME_COLOR_DISABLED "Deaktiviert" +#define TR_THEME_COLOR_QM_BG "Quick Menu BG" +#define TR_THEME_COLOR_QM_FG "Quick Menu FG" #define TR_THEME_COLOR_CUSTOM "Eigene" #define TR_THEME_CHECKBOX "Schalter" #define TR_THEME_ACTIVE "Aktiv" diff --git a/radio/src/translations/i18n/en.h b/radio/src/translations/i18n/en.h index fb9e8c096..d0e548d92 100644 --- a/radio/src/translations/i18n/en.h +++ b/radio/src/translations/i18n/en.h @@ -1261,6 +1261,8 @@ #define TR_THEME_COLOR_ACTIVE "ACTIVE" #define TR_THEME_COLOR_WARNING "WARNING" #define TR_THEME_COLOR_DISABLED "DISABLED" +#define TR_THEME_COLOR_QM_BG "Quick Menu BG" +#define TR_THEME_COLOR_QM_FG "Quick Menu FG" #define TR_THEME_COLOR_CUSTOM "CUSTOM" #define TR_THEME_CHECKBOX "Checkbox" #define TR_THEME_ACTIVE "Active" diff --git a/radio/src/translations/i18n/es.h b/radio/src/translations/i18n/es.h index 405a8f340..212b4ec88 100644 --- a/radio/src/translations/i18n/es.h +++ b/radio/src/translations/i18n/es.h @@ -1264,6 +1264,8 @@ #define TR_THEME_COLOR_ACTIVE "ACTIVE" #define TR_THEME_COLOR_WARNING "WARNING" #define TR_THEME_COLOR_DISABLED "DISABLED" +#define TR_THEME_COLOR_QM_BG "Quick Menu BG" +#define TR_THEME_COLOR_QM_FG "Quick Menu FG" #define TR_THEME_COLOR_CUSTOM "CUSTOM" #define TR_THEME_CHECKBOX "Checkbox" #define TR_THEME_ACTIVE "Active" diff --git a/radio/src/translations/i18n/fi.h b/radio/src/translations/i18n/fi.h index ff7e98fdb..9d9189f7a 100644 --- a/radio/src/translations/i18n/fi.h +++ b/radio/src/translations/i18n/fi.h @@ -1266,6 +1266,8 @@ #define TR_THEME_COLOR_ACTIVE "ACTIVE" #define TR_THEME_COLOR_WARNING "WARNING" #define TR_THEME_COLOR_DISABLED "DISABLED" +#define TR_THEME_COLOR_QM_BG "Quick Menu BG" +#define TR_THEME_COLOR_QM_FG "Quick Menu FG" #define TR_THEME_COLOR_CUSTOM "CUSTOM" #define TR_THEME_CHECKBOX "Checkbox" #define TR_THEME_ACTIVE "Active" diff --git a/radio/src/translations/i18n/fr.h b/radio/src/translations/i18n/fr.h index 4509dea7b..fcbbc0815 100644 --- a/radio/src/translations/i18n/fr.h +++ b/radio/src/translations/i18n/fr.h @@ -1269,6 +1269,8 @@ #define TR_THEME_COLOR_ACTIVE "ACTIF" #define TR_THEME_COLOR_WARNING "ATTENTION" #define TR_THEME_COLOR_DISABLED "DESACTIVE" +#define TR_THEME_COLOR_QM_BG "Quick Menu BG" +#define TR_THEME_COLOR_QM_FG "Quick Menu FG" #define TR_THEME_COLOR_CUSTOM "PERSO" #define TR_THEME_CHECKBOX "Case à cocher" #define TR_THEME_ACTIVE "Actif" diff --git a/radio/src/translations/i18n/he.h b/radio/src/translations/i18n/he.h index 8d7c83127..0eef8303c 100644 --- a/radio/src/translations/i18n/he.h +++ b/radio/src/translations/i18n/he.h @@ -1263,6 +1263,8 @@ #define TR_THEME_COLOR_ACTIVE "פעיל" #define TR_THEME_COLOR_WARNING "אזהרה" #define TR_THEME_COLOR_DISABLED "לא פעיל" +#define TR_THEME_COLOR_QM_BG "Quick Menu BG" +#define TR_THEME_COLOR_QM_FG "Quick Menu FG" #define TR_THEME_COLOR_CUSTOM "מתקדם" #define TR_THEME_CHECKBOX "Checkbox" #define TR_THEME_ACTIVE "פעיל" diff --git a/radio/src/translations/i18n/it.h b/radio/src/translations/i18n/it.h index a51e2a7e9..9d2202bcc 100644 --- a/radio/src/translations/i18n/it.h +++ b/radio/src/translations/i18n/it.h @@ -1260,6 +1260,8 @@ #define TR_THEME_COLOR_ACTIVE "ATTIVO" #define TR_THEME_COLOR_WARNING "ATTENZIONE" #define TR_THEME_COLOR_DISABLED "DISABILITATO" +#define TR_THEME_COLOR_QM_BG "Quick Menu BG" +#define TR_THEME_COLOR_QM_FG "Quick Menu FG" #define TR_THEME_COLOR_CUSTOM "PERSONALE" #define TR_THEME_CHECKBOX "Casella di spunta" #define TR_THEME_ACTIVE "Attivo" diff --git a/radio/src/translations/i18n/jp.h b/radio/src/translations/i18n/jp.h index e70fac579..536ac1624 100644 --- a/radio/src/translations/i18n/jp.h +++ b/radio/src/translations/i18n/jp.h @@ -1259,6 +1259,8 @@ #define TR_THEME_COLOR_ACTIVE "有効" #define TR_THEME_COLOR_WARNING "警告" #define TR_THEME_COLOR_DISABLED "無効" +#define TR_THEME_COLOR_QM_BG "Quick Menu BG" +#define TR_THEME_COLOR_QM_FG "Quick Menu FG" #define TR_THEME_COLOR_CUSTOM "カスタム" #define TR_THEME_CHECKBOX "チェック" #define TR_THEME_ACTIVE "有効" diff --git a/radio/src/translations/i18n/ko.h b/radio/src/translations/i18n/ko.h index 00f3771cc..b5b1bf7ba 100644 --- a/radio/src/translations/i18n/ko.h +++ b/radio/src/translations/i18n/ko.h @@ -1305,6 +1305,8 @@ #define TR_THEME_COLOR_ACTIVE "활성 항목" #define TR_THEME_COLOR_WARNING "경고" #define TR_THEME_COLOR_DISABLED "비활성" +#define TR_THEME_COLOR_QM_BG "Quick Menu BG" +#define TR_THEME_COLOR_QM_FG "Quick Menu FG" #define TR_THEME_COLOR_CUSTOM "사용자 정의" #define TR_THEME_CHECKBOX "체크박스" #define TR_THEME_ACTIVE "활성" diff --git a/radio/src/translations/i18n/nl.h b/radio/src/translations/i18n/nl.h index ecce46a00..c11e11136 100644 --- a/radio/src/translations/i18n/nl.h +++ b/radio/src/translations/i18n/nl.h @@ -1265,6 +1265,8 @@ #define TR_THEME_COLOR_ACTIVE "ACTIVE" #define TR_THEME_COLOR_WARNING "WARNING" #define TR_THEME_COLOR_DISABLED "DISABLED" +#define TR_THEME_COLOR_QM_BG "Quick Menu BG" +#define TR_THEME_COLOR_QM_FG "Quick Menu FG" #define TR_THEME_COLOR_CUSTOM "CUSTOM" #define TR_THEME_CHECKBOX "Checkbox" #define TR_THEME_ACTIVE "Active" diff --git a/radio/src/translations/i18n/pl.h b/radio/src/translations/i18n/pl.h index 725c9990f..bcfaa798a 100644 --- a/radio/src/translations/i18n/pl.h +++ b/radio/src/translations/i18n/pl.h @@ -1260,6 +1260,8 @@ #define TR_THEME_COLOR_ACTIVE "AKTYWNY" #define TR_THEME_COLOR_WARNING "OSTRZEŻENIE" #define TR_THEME_COLOR_DISABLED "WYŁĄCZONY" +#define TR_THEME_COLOR_QM_BG "Quick Menu BG" +#define TR_THEME_COLOR_QM_FG "Quick Menu FG" #define TR_THEME_COLOR_CUSTOM "WŁASNY" #define TR_THEME_CHECKBOX "Pole wyboru" #define TR_THEME_ACTIVE "Aktywny" diff --git a/radio/src/translations/i18n/pt.h b/radio/src/translations/i18n/pt.h index bc969e951..e92835a24 100644 --- a/radio/src/translations/i18n/pt.h +++ b/radio/src/translations/i18n/pt.h @@ -1261,6 +1261,8 @@ #define TR_THEME_COLOR_ACTIVE "ACTIVE" #define TR_THEME_COLOR_WARNING "WARNING" #define TR_THEME_COLOR_DISABLED "DISABLED" +#define TR_THEME_COLOR_QM_BG "Quick Menu BG" +#define TR_THEME_COLOR_QM_FG "Quick Menu FG" #define TR_THEME_COLOR_CUSTOM "CUSTOM" #define TR_THEME_CHECKBOX "Checkbox" #define TR_THEME_ACTIVE "Active" diff --git a/radio/src/translations/i18n/ru.h b/radio/src/translations/i18n/ru.h index 388102581..13b4bb0a6 100644 --- a/radio/src/translations/i18n/ru.h +++ b/radio/src/translations/i18n/ru.h @@ -1262,6 +1262,8 @@ #define TR_THEME_COLOR_ACTIVE "АКТИВНАЯ" #define TR_THEME_COLOR_WARNING "ПРЕД-НИЕ" #define TR_THEME_COLOR_DISABLED "ОТКЛ-НАЯ" +#define TR_THEME_COLOR_QM_BG "Quick Menu BG" +#define TR_THEME_COLOR_QM_FG "Quick Menu FG" #define TR_THEME_COLOR_CUSTOM "ПОЛ-КАЯ" #define TR_THEME_CHECKBOX "Checkbox" #define TR_THEME_ACTIVE "АКТИВНАЯ" diff --git a/radio/src/translations/i18n/se.h b/radio/src/translations/i18n/se.h index c9a7ad38a..f2038588e 100644 --- a/radio/src/translations/i18n/se.h +++ b/radio/src/translations/i18n/se.h @@ -1277,6 +1277,8 @@ #define TR_THEME_COLOR_ACTIVE "AKTIV" #define TR_THEME_COLOR_WARNING "VARNING" #define TR_THEME_COLOR_DISABLED "INAKTIV" +#define TR_THEME_COLOR_QM_BG "Quick Menu BG" +#define TR_THEME_COLOR_QM_FG "Quick Menu FG" #define TR_THEME_COLOR_CUSTOM "ANPASSAD" #define TR_THEME_CHECKBOX "Kryssruta" #define TR_THEME_ACTIVE "Aktiv" diff --git a/radio/src/translations/i18n/tw.h b/radio/src/translations/i18n/tw.h index 9ab9c1995..df113e3ea 100644 --- a/radio/src/translations/i18n/tw.h +++ b/radio/src/translations/i18n/tw.h @@ -1258,6 +1258,8 @@ #define TR_THEME_COLOR_ACTIVE "激活" #define TR_THEME_COLOR_WARNING "警告" #define TR_THEME_COLOR_DISABLED "禁用" +#define TR_THEME_COLOR_QM_BG "Quick Menu BG" +#define TR_THEME_COLOR_QM_FG "Quick Menu FG" #define TR_THEME_COLOR_CUSTOM "自定義" #define TR_THEME_CHECKBOX "復選框" #define TR_THEME_ACTIVE "激活" diff --git a/radio/src/translations/i18n/ua.h b/radio/src/translations/i18n/ua.h index 15211d8e0..ce435b902 100644 --- a/radio/src/translations/i18n/ua.h +++ b/radio/src/translations/i18n/ua.h @@ -1261,6 +1261,8 @@ #define TR_THEME_COLOR_ACTIVE "АКТИВНИЙ" #define TR_THEME_COLOR_WARNING "WARNING" #define TR_THEME_COLOR_DISABLED "ДЕАКТИВОВАНИЙ" +#define TR_THEME_COLOR_QM_BG "Quick Menu BG" +#define TR_THEME_COLOR_QM_FG "Quick Menu FG" #define TR_THEME_COLOR_CUSTOM "КОРИСТУВАЦЬКИЙ" #define TR_THEME_CHECKBOX "Checkbox" #define TR_THEME_ACTIVE "Активний" diff --git a/radio/src/translations/sim_string_list.h b/radio/src/translations/sim_string_list.h index cee761249..feccc4fb0 100644 --- a/radio/src/translations/sim_string_list.h +++ b/radio/src/translations/sim_string_list.h @@ -157,6 +157,8 @@ #define STR_THEME_COLOR_SECONDARY2 currentLangStrings->STR_THEME_COLOR_SECONDARY2 #define STR_THEME_COLOR_SECONDARY3 currentLangStrings->STR_THEME_COLOR_SECONDARY3 #define STR_THEME_COLOR_WARNING currentLangStrings->STR_THEME_COLOR_WARNING +#define STR_THEME_COLOR_QM_BG currentLangStrings->STR_THEME_COLOR_QM_BG +#define STR_THEME_COLOR_QM_FG currentLangStrings->STR_THEME_COLOR_QM_FG #define STR_THEME_DISABLED currentLangStrings->STR_THEME_DISABLED #define STR_THEME_EDIT currentLangStrings->STR_THEME_EDIT #define STR_THEME_EXISTS currentLangStrings->STR_THEME_EXISTS diff --git a/radio/src/translations/string_list.h b/radio/src/translations/string_list.h index 147e964dc..8311b75e2 100644 --- a/radio/src/translations/string_list.h +++ b/radio/src/translations/string_list.h @@ -156,6 +156,8 @@ STR(THEME_COLOR_SECONDARY1) STR(THEME_COLOR_SECONDARY2) STR(THEME_COLOR_SECONDARY3) STR(THEME_COLOR_WARNING) +STR(THEME_COLOR_QM_BG) +STR(THEME_COLOR_QM_FG) STR(THEME_DISABLED) STR(THEME_EDIT) STR(THEME_EXISTS)