diff --git a/radio/src/gui/colorlcd/layout.h b/radio/src/gui/colorlcd/layout.h index b387c2fb6..bdaf18c30 100644 --- a/radio/src/gui/colorlcd/layout.h +++ b/radio/src/gui/colorlcd/layout.h @@ -56,7 +56,9 @@ class Layout: public LayoutBase OPTION_FM, OPTION_SLIDERS, OPTION_TRIMS, - OPTION_MIRRORED + OPTION_MIRRORED, + + OPTION_LAST_DEFAULT=OPTION_MIRRORED }; Layout(const LayoutFactory * factory, PersistentData * persistentData): @@ -66,6 +68,16 @@ class Layout: public LayoutBase decorate(); } + void create() override + { + setOptionValue(OPTION_TOPBAR, OPTION_VALUE_BOOL(true)); + setOptionValue(OPTION_FM, OPTION_VALUE_BOOL(true)); + setOptionValue(OPTION_SLIDERS, OPTION_VALUE_BOOL(true)); + setOptionValue(OPTION_TRIMS, OPTION_VALUE_BOOL(true)); + setOptionValue(OPTION_MIRRORED, OPTION_VALUE_BOOL(false)); + decorate(); + } + inline const LayoutFactory * getFactory() const { return factory; diff --git a/radio/src/gui/colorlcd/layouts/layout1x1.cpp b/radio/src/gui/colorlcd/layouts/layout1x1.cpp index e287c1a3f..ee641b530 100644 --- a/radio/src/gui/colorlcd/layouts/layout1x1.cpp +++ b/radio/src/gui/colorlcd/layouts/layout1x1.cpp @@ -40,21 +40,6 @@ class Layout1x1: public Layout { } - void create() override - { - Layout::create(); - // TODO: make this common to all layouts as well - persistentData->options[0].value.boolValue = true; - persistentData->options[1].value.boolValue = true; - persistentData->options[2].value.boolValue = true; - persistentData->options[3].value.boolValue = true; - persistentData->options[4].value.boolValue = false; - persistentData->options[5].value.boolValue = false; - - // TODO: really needed? - decorate(); - } - unsigned int getZonesCount() const override { return 1; diff --git a/radio/src/gui/colorlcd/layouts/layout2+1.cpp b/radio/src/gui/colorlcd/layouts/layout2+1.cpp index 85a4a341c..dddd3f5f8 100644 --- a/radio/src/gui/colorlcd/layouts/layout2+1.cpp +++ b/radio/src/gui/colorlcd/layouts/layout2+1.cpp @@ -41,18 +41,6 @@ class Layout2P1: public Layout { } - void create() override - { - Layout::create(); - persistentData->options[0].value.boolValue = true; - persistentData->options[1].value.boolValue = true; - persistentData->options[2].value.boolValue = true; - persistentData->options[3].value.boolValue = true; - persistentData->options[4].value.boolValue = false; - persistentData->options[5].value.boolValue = false; - decorate(); - } - unsigned int getZonesCount() const override { return 3; diff --git a/radio/src/gui/colorlcd/layouts/layout2x1.cpp b/radio/src/gui/colorlcd/layouts/layout2x1.cpp index 82887dbec..7db4f8c02 100644 --- a/radio/src/gui/colorlcd/layouts/layout2x1.cpp +++ b/radio/src/gui/colorlcd/layouts/layout2x1.cpp @@ -41,18 +41,6 @@ class Layout2x1: public Layout { } - void create() override - { - Layout::create(); - persistentData->options[0].value.boolValue = true; - persistentData->options[1].value.boolValue = true; - persistentData->options[2].value.boolValue = true; - persistentData->options[3].value.boolValue = true; - persistentData->options[4].value.boolValue = false; - persistentData->options[5].value.boolValue = false; - decorate(); - } - unsigned int getZonesCount() const override { return 2; diff --git a/radio/src/gui/colorlcd/layouts/layout2x2.cpp b/radio/src/gui/colorlcd/layouts/layout2x2.cpp index 7704ee2f7..05d973b62 100644 --- a/radio/src/gui/colorlcd/layouts/layout2x2.cpp +++ b/radio/src/gui/colorlcd/layouts/layout2x2.cpp @@ -41,18 +41,6 @@ class Layout2x2: public Layout { } - void create() override - { - Layout::create(); - persistentData->options[0].value.boolValue = true; - persistentData->options[1].value.boolValue = true; - persistentData->options[2].value.boolValue = true; - persistentData->options[3].value.boolValue = true; - persistentData->options[4].value.boolValue = false; - persistentData->options[5].value.boolValue = false; - decorate(); - } - unsigned int getZonesCount() const override { return 4; diff --git a/radio/src/gui/colorlcd/layouts/layout2x4.cpp b/radio/src/gui/colorlcd/layouts/layout2x4.cpp index 8cf6ceda5..b08009f83 100644 --- a/radio/src/gui/colorlcd/layouts/layout2x4.cpp +++ b/radio/src/gui/colorlcd/layouts/layout2x4.cpp @@ -38,6 +38,14 @@ const ZoneOption OPTIONS_LAYOUT_2x4[] = { class Layout2x4: public Layout { public: + + enum { + OPTION_PANEL1_BACKGROUND = OPTION_LAST_DEFAULT + 1, + OPTION_PANEL1_COLOR, + OPTION_PANEL2_BACKGROUND, + OPTION_PANEL2_COLOR + }; + Layout2x4(const LayoutFactory * factory, Layout::PersistentData * persistentData): Layout(factory, persistentData) { @@ -46,14 +54,10 @@ class Layout2x4: public Layout void create() override { Layout::create(); - persistentData->options[0] = ZoneOptionValueTyped { ZOV_Bool, OPTION_VALUE_BOOL(true) }; - persistentData->options[1] = ZoneOptionValueTyped { ZOV_Bool, OPTION_VALUE_BOOL(true) }; - persistentData->options[2] = ZoneOptionValueTyped { ZOV_Bool, OPTION_VALUE_BOOL(true) }; - persistentData->options[3] = ZoneOptionValueTyped { ZOV_Bool, OPTION_VALUE_BOOL(true) }; - persistentData->options[4] = ZoneOptionValueTyped { ZOV_Bool, OPTION_VALUE_BOOL(true) }; - persistentData->options[5] = ZoneOptionValueTyped { ZOV_Unsigned, OPTION_VALUE_UNSIGNED( RGB(77,112,203)) }; - persistentData->options[6] = ZoneOptionValueTyped { ZOV_Bool, OPTION_VALUE_BOOL(true) }; - persistentData->options[7] = ZoneOptionValueTyped { ZOV_Unsigned, OPTION_VALUE_UNSIGNED( RGB(77,112,203)) }; + setOptionValue(OPTION_PANEL1_BACKGROUND, OPTION_VALUE_BOOL(true)); + setOptionValue(OPTION_PANEL1_COLOR, OPTION_VALUE_UNSIGNED( RGB(77,112,203))); + setOptionValue(OPTION_PANEL2_BACKGROUND, OPTION_VALUE_BOOL(true)); + setOptionValue(OPTION_PANEL2_COLOR, OPTION_VALUE_UNSIGNED( RGB(77,112,203))); } unsigned int getZonesCount() const override diff --git a/radio/src/gui/colorlcd/widgets_container.h b/radio/src/gui/colorlcd/widgets_container.h index d1f020a5d..44302ba57 100644 --- a/radio/src/gui/colorlcd/widgets_container.h +++ b/radio/src/gui/colorlcd/widgets_container.h @@ -104,6 +104,11 @@ class WidgetsContainer: public FormGroup, public WidgetsContainerInterface return &persistentData->options[index].value; } + inline void setOptionValue(unsigned int index, const ZoneOptionValue& value) + { + persistentData->options[index].value = value; + } + unsigned int getZonesCount() const override = 0; rect_t getZone(unsigned int index) const override = 0;