From 32208a733f27ef39352dc3ceb474105c39e7acfc Mon Sep 17 00:00:00 2001 From: Peter Feerick Date: Sat, 10 Jan 2026 12:30:28 +1000 Subject: [PATCH] chore(color): remove redundant layout, correct layout formatting, add comments for layout construction (#6968) --- radio/src/gui/colorlcd/layouts/layout1+2.cpp | 14 ++- radio/src/gui/colorlcd/layouts/layout1+3.cpp | 16 ++- radio/src/gui/colorlcd/layouts/layout1+4.cpp | 19 +-- radio/src/gui/colorlcd/layouts/layout1x1.cpp | 8 +- .../gui/colorlcd/layouts/layout1x1AppMode.cpp | 16 ++- radio/src/gui/colorlcd/layouts/layout1x2.cpp | 11 +- radio/src/gui/colorlcd/layouts/layout1x3.cpp | 13 +- radio/src/gui/colorlcd/layouts/layout1x4.cpp | 15 ++- radio/src/gui/colorlcd/layouts/layout2+1.cpp | 14 ++- radio/src/gui/colorlcd/layouts/layout2+3.cpp | 18 +-- radio/src/gui/colorlcd/layouts/layout2x1.cpp | 11 +- radio/src/gui/colorlcd/layouts/layout2x2.cpp | 15 ++- radio/src/gui/colorlcd/layouts/layout2x3.cpp | 20 +-- radio/src/gui/colorlcd/layouts/layout2x4.cpp | 36 +++--- radio/src/gui/colorlcd/layouts/layout4+2.cpp | 20 +-- radio/src/gui/colorlcd/layouts/layout4+2b.cpp | 20 +-- radio/src/gui/colorlcd/layouts/layout4x2.cpp | 119 ------------------ radio/src/gui/colorlcd/layouts/layout6x1.cpp | 19 ++- 18 files changed, 170 insertions(+), 234 deletions(-) delete mode 100644 radio/src/gui/colorlcd/layouts/layout4x2.cpp diff --git a/radio/src/gui/colorlcd/layouts/layout1+2.cpp b/radio/src/gui/colorlcd/layouts/layout1+2.cpp index b2de73190..df6658a10 100644 --- a/radio/src/gui/colorlcd/layouts/layout1+2.cpp +++ b/radio/src/gui/colorlcd/layouts/layout1+2.cpp @@ -21,12 +21,16 @@ #include "layout.h" +// Zone map: 1+2 (1 large zone + 2 small zones) +// Top: 1 zone (full width, 1/2 height), Bottom: 2 zones (full width, 1/4 height +// each) +// clang-format off static const uint8_t zmap[] = { - LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_FULL, LAYOUT_MAP_HALF, - LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_FULL, LAYOUT_MAP_1QTR, - LAYOUT_MAP_0, LAYOUT_MAP_3QTR, LAYOUT_MAP_FULL, LAYOUT_MAP_1QTR, + LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_FULL, LAYOUT_MAP_HALF, // Top zone (1/2 height) + LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_FULL, LAYOUT_MAP_1QTR, // Bottom upper (1/4 height) + LAYOUT_MAP_0, LAYOUT_MAP_3QTR, LAYOUT_MAP_FULL, LAYOUT_MAP_1QTR, // Bottom lower (1/4 height) }; +// clang-format on -BaseLayoutFactory Layout1P2("Layout1P2", "1 + 2", - defaultLayoutOptions, +BaseLayoutFactory Layout1P2("Layout1P2", "1 + 2", defaultLayoutOptions, 3, (uint8_t*)zmap); diff --git a/radio/src/gui/colorlcd/layouts/layout1+3.cpp b/radio/src/gui/colorlcd/layouts/layout1+3.cpp index e086ce546..ccdd65779 100644 --- a/radio/src/gui/colorlcd/layouts/layout1+3.cpp +++ b/radio/src/gui/colorlcd/layouts/layout1+3.cpp @@ -21,13 +21,17 @@ #include "layout.h" +// Zone map: 1+3 (1 large zone + 3 small zones) +// Left: 1 full-height zone (1/2 width), Right: 3 zones stacked (1/2 width, 1/3 +// height each) +// clang-format off static const uint8_t zmap[] = { - LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_FULL, - LAYOUT_MAP_HALF, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_1THIRD, - LAYOUT_MAP_HALF, LAYOUT_MAP_1THIRD, LAYOUT_MAP_HALF, LAYOUT_MAP_1THIRD, - LAYOUT_MAP_HALF, LAYOUT_MAP_2THIRD, LAYOUT_MAP_HALF, LAYOUT_MAP_1THIRD, + LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_FULL, // Left zone (full height) + LAYOUT_MAP_HALF, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_1THIRD, // Right top + LAYOUT_MAP_HALF, LAYOUT_MAP_1THIRD, LAYOUT_MAP_HALF, LAYOUT_MAP_1THIRD, // Right middle + LAYOUT_MAP_HALF, LAYOUT_MAP_2THIRD, LAYOUT_MAP_HALF, LAYOUT_MAP_1THIRD, // Right bottom }; +// clang-format on -BaseLayoutFactory Layout1P3("Layout1P3", "1 + 3", - defaultLayoutOptions, +BaseLayoutFactory Layout1P3("Layout1P3", "1 + 3", defaultLayoutOptions, 4, (uint8_t*)zmap); diff --git a/radio/src/gui/colorlcd/layouts/layout1+4.cpp b/radio/src/gui/colorlcd/layouts/layout1+4.cpp index 5687824d9..c817f7364 100644 --- a/radio/src/gui/colorlcd/layouts/layout1+4.cpp +++ b/radio/src/gui/colorlcd/layouts/layout1+4.cpp @@ -21,13 +21,18 @@ #include "layout.h" +// Zone map: 1+4 (1 large zone + 4 small zones) +// Left: 1 full-height zone (1/2 width), Right: 4 zones stacked (1/2 width, 1/4 +// height each) +// clang-format off static const uint8_t zmap[] = { - LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_FULL, - LAYOUT_MAP_HALF, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, - LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, - LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, - LAYOUT_MAP_HALF, LAYOUT_MAP_3QTR, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, + LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_FULL, // Left zone (full height) + LAYOUT_MAP_HALF, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, // Right top + LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, // Right 2nd + LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, // Right 3rd + LAYOUT_MAP_HALF, LAYOUT_MAP_3QTR, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, // Right bottom }; +// clang-format on -BaseLayoutFactory Layout1P4("Layout1P4", "1 + 4", defaultLayoutOptions, 5, - (uint8_t*)zmap); +BaseLayoutFactory Layout1P4("Layout1P4", "1 + 4", defaultLayoutOptions, + 5, (uint8_t*)zmap); diff --git a/radio/src/gui/colorlcd/layouts/layout1x1.cpp b/radio/src/gui/colorlcd/layouts/layout1x1.cpp index 1c07010da..c8a48886b 100644 --- a/radio/src/gui/colorlcd/layouts/layout1x1.cpp +++ b/radio/src/gui/colorlcd/layouts/layout1x1.cpp @@ -22,10 +22,12 @@ #include "layout.h" #include "translations/translations.h" +// Zone map: 1x1 (single full-screen zone) +// clang-format off static const uint8_t zmap[] = { - LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_FULL, LAYOUT_MAP_FULL, + LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_FULL, LAYOUT_MAP_FULL, // Full screen }; +// clang-format on BaseLayoutFactory layout1x1("Layout1x1", STR_WIDGET_FULLSCREEN, - defaultLayoutOptions, - 1, (uint8_t*)zmap); + defaultLayoutOptions, 1, (uint8_t*)zmap); diff --git a/radio/src/gui/colorlcd/layouts/layout1x1AppMode.cpp b/radio/src/gui/colorlcd/layouts/layout1x1AppMode.cpp index 9353eaa3e..4f795d4e9 100644 --- a/radio/src/gui/colorlcd/layouts/layout1x1AppMode.cpp +++ b/radio/src/gui/colorlcd/layouts/layout1x1AppMode.cpp @@ -26,9 +26,8 @@ const LayoutOption OPTIONS_LAYOUT_APPMODE[] = {LAYOUT_OPTIONS_END}; class LayoutAppMode : public Layout { public: - LayoutAppMode(Window* parent, const LayoutFactory* factory, - int screenNum, uint8_t zoneCount, - uint8_t* zoneMap) : + LayoutAppMode(Window* parent, const LayoutFactory* factory, int screenNum, + uint8_t zoneCount, uint8_t* zoneMap) : Layout(parent, factory, screenNum, zoneCount, zoneMap) { } @@ -43,9 +42,14 @@ class LayoutAppMode : public Layout protected: }; +// Zone map: 1x1 App Mode (single full-screen zone for app mode - disables all +// other UI elements) +// clang-format off static const uint8_t zmap[] = { - LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_FULL, LAYOUT_MAP_FULL, + LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_FULL, LAYOUT_MAP_FULL, // Full screen }; +// clang-format on -BaseLayoutFactory layoutAppMode("Layout1x1AM", "App mode", OPTIONS_LAYOUT_APPMODE, - 1, (uint8_t*)zmap); +BaseLayoutFactory layoutAppMode("Layout1x1AM", "App mode", + OPTIONS_LAYOUT_APPMODE, 1, + (uint8_t*)zmap); diff --git a/radio/src/gui/colorlcd/layouts/layout1x2.cpp b/radio/src/gui/colorlcd/layouts/layout1x2.cpp index 1d355c2cb..889a64193 100644 --- a/radio/src/gui/colorlcd/layouts/layout1x2.cpp +++ b/radio/src/gui/colorlcd/layouts/layout1x2.cpp @@ -21,11 +21,14 @@ #include "layout.h" +// Zone map: 1x2 (1 column, 2 rows) +// Each zone is full width, 1/2 height +// clang-format off static const uint8_t zmap[] = { - LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_FULL, LAYOUT_MAP_HALF, - LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_FULL, LAYOUT_MAP_HALF, + LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_FULL, LAYOUT_MAP_HALF, // Top + LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_FULL, LAYOUT_MAP_HALF, // Bottom }; +// clang-format on -BaseLayoutFactory Layout1x2("Layout1x2", "1 x 2", - defaultLayoutOptions, +BaseLayoutFactory Layout1x2("Layout1x2", "1 x 2", defaultLayoutOptions, 2, (uint8_t*)zmap); diff --git a/radio/src/gui/colorlcd/layouts/layout1x3.cpp b/radio/src/gui/colorlcd/layouts/layout1x3.cpp index c8894f6e8..cb1cdfeef 100644 --- a/radio/src/gui/colorlcd/layouts/layout1x3.cpp +++ b/radio/src/gui/colorlcd/layouts/layout1x3.cpp @@ -21,12 +21,15 @@ #include "layout.h" +// Zone map: 1x3 (1 column, 3 rows) +// Each zone is full width, 1/3 height +// clang-format off static const uint8_t zmap[] = { - LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_FULL, LAYOUT_MAP_1THIRD, - LAYOUT_MAP_0, LAYOUT_MAP_1THIRD, LAYOUT_MAP_FULL, LAYOUT_MAP_1THIRD, - LAYOUT_MAP_0, LAYOUT_MAP_2THIRD, LAYOUT_MAP_FULL, LAYOUT_MAP_1THIRD, + LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_FULL, LAYOUT_MAP_1THIRD, // Top + LAYOUT_MAP_0, LAYOUT_MAP_1THIRD, LAYOUT_MAP_FULL, LAYOUT_MAP_1THIRD, // Middle + LAYOUT_MAP_0, LAYOUT_MAP_2THIRD, LAYOUT_MAP_FULL, LAYOUT_MAP_1THIRD, // Bottom }; +// clang-format on -BaseLayoutFactory Layout1x3("Layout1x3", "1 x 3", - defaultLayoutOptions, +BaseLayoutFactory Layout1x3("Layout1x3", "1 x 3", defaultLayoutOptions, 3, (uint8_t*)zmap); diff --git a/radio/src/gui/colorlcd/layouts/layout1x4.cpp b/radio/src/gui/colorlcd/layouts/layout1x4.cpp index 6de643e98..d519bf85a 100644 --- a/radio/src/gui/colorlcd/layouts/layout1x4.cpp +++ b/radio/src/gui/colorlcd/layouts/layout1x4.cpp @@ -21,13 +21,16 @@ #include "layout.h" +// Zone map: 1x4 (1 column, 4 rows) +// Each zone is full width, 1/4 height +// clang-format off static const uint8_t zmap[] = { - LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_FULL, LAYOUT_MAP_1QTR, - LAYOUT_MAP_0, LAYOUT_MAP_1QTR, LAYOUT_MAP_FULL, LAYOUT_MAP_1QTR, - LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_FULL, LAYOUT_MAP_1QTR, - LAYOUT_MAP_0, LAYOUT_MAP_3QTR, LAYOUT_MAP_FULL, LAYOUT_MAP_1QTR, + LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_FULL, LAYOUT_MAP_1QTR, // Top + LAYOUT_MAP_0, LAYOUT_MAP_1QTR, LAYOUT_MAP_FULL, LAYOUT_MAP_1QTR, // 2nd + LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_FULL, LAYOUT_MAP_1QTR, // 3rd + LAYOUT_MAP_0, LAYOUT_MAP_3QTR, LAYOUT_MAP_FULL, LAYOUT_MAP_1QTR, // Bottom }; +// clang-format on -BaseLayoutFactory Layout1x4("Layout1x4", "1 x 4", - defaultLayoutOptions, +BaseLayoutFactory Layout1x4("Layout1x4", "1 x 4", defaultLayoutOptions, 4, (uint8_t*)zmap); diff --git a/radio/src/gui/colorlcd/layouts/layout2+1.cpp b/radio/src/gui/colorlcd/layouts/layout2+1.cpp index 71e132314..a82f02cb6 100644 --- a/radio/src/gui/colorlcd/layouts/layout2+1.cpp +++ b/radio/src/gui/colorlcd/layouts/layout2+1.cpp @@ -21,14 +21,18 @@ #include "layout.h" +// Zone map: 2+1 (2 small zones + 1 large zone) +// Left: 2 zones stacked (1/2 width, 1/2 height each), Right: 1 full-height zone +// (1/2 width) +// clang-format off static const uint8_t zmap[] = { - LAYOUT_MAP_HALF, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_FULL, // ordered to match previous implementation - LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, - LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, + LAYOUT_MAP_HALF, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_FULL, // Right zone (full height) - ordered to match previous implementation + LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, // Left top + LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, // Left bottom }; +// clang-format on -BaseLayoutFactory layout2P1("Layout2P1", "2 + 1", - defaultLayoutOptions, +BaseLayoutFactory layout2P1("Layout2P1", "2 + 1", defaultLayoutOptions, 3, (uint8_t*)zmap); const LayoutFactory* defaultLayout = &layout2P1; diff --git a/radio/src/gui/colorlcd/layouts/layout2+3.cpp b/radio/src/gui/colorlcd/layouts/layout2+3.cpp index 81d92755c..14b67a7a4 100644 --- a/radio/src/gui/colorlcd/layouts/layout2+3.cpp +++ b/radio/src/gui/colorlcd/layouts/layout2+3.cpp @@ -21,14 +21,18 @@ #include "layout.h" +// Zone map: 2+3 (2 large zones + 3 small zones) +// Left: 2 zones stacked (1/2 width, 1/2 height each), Right: 3 zones stacked +// (1/2 width, 1/3 height each) +// clang-format off static const uint8_t zmap[] = { - LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, - LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, - LAYOUT_MAP_HALF, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_1THIRD, - LAYOUT_MAP_HALF, LAYOUT_MAP_1THIRD, LAYOUT_MAP_HALF, LAYOUT_MAP_1THIRD, - LAYOUT_MAP_HALF, LAYOUT_MAP_2THIRD, LAYOUT_MAP_HALF, LAYOUT_MAP_1THIRD, + LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, // Left top + LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, // Left bottom + LAYOUT_MAP_HALF, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_1THIRD, // Right top + LAYOUT_MAP_HALF, LAYOUT_MAP_1THIRD, LAYOUT_MAP_HALF, LAYOUT_MAP_1THIRD, // Right middle + LAYOUT_MAP_HALF, LAYOUT_MAP_2THIRD, LAYOUT_MAP_HALF, LAYOUT_MAP_1THIRD, // Right bottom }; +// clang-format on -BaseLayoutFactory Layout2P3("Layout2P3", "2 + 3", - defaultLayoutOptions, +BaseLayoutFactory Layout2P3("Layout2P3", "2 + 3", defaultLayoutOptions, 5, (uint8_t*)zmap); diff --git a/radio/src/gui/colorlcd/layouts/layout2x1.cpp b/radio/src/gui/colorlcd/layouts/layout2x1.cpp index 3acc51277..44c52ee5a 100644 --- a/radio/src/gui/colorlcd/layouts/layout2x1.cpp +++ b/radio/src/gui/colorlcd/layouts/layout2x1.cpp @@ -21,11 +21,14 @@ #include "layout.h" +// Zone map: 2x1 (2 columns, 1 row) +// Each zone is 1/2 width, full height +// clang-format off static const uint8_t zmap[] = { - LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_FULL, - LAYOUT_MAP_HALF, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_FULL, + LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_FULL, // Left + LAYOUT_MAP_HALF, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_FULL, // Right }; +// clang-format on -BaseLayoutFactory Layout2x1("Layout2x1", "2 x 1", - defaultLayoutOptions, +BaseLayoutFactory Layout2x1("Layout2x1", "2 x 1", defaultLayoutOptions, 2, (uint8_t*)zmap); diff --git a/radio/src/gui/colorlcd/layouts/layout2x2.cpp b/radio/src/gui/colorlcd/layouts/layout2x2.cpp index 680070669..bc59ade6d 100644 --- a/radio/src/gui/colorlcd/layouts/layout2x2.cpp +++ b/radio/src/gui/colorlcd/layouts/layout2x2.cpp @@ -21,13 +21,16 @@ #include "layout.h" +// Zone map: 2x2 (2 columns, 2 rows) +// Each zone is 1/2 width, 1/2 height +// clang-format off static const uint8_t zmap[] = { - LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, - LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, - LAYOUT_MAP_HALF, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, - LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, + LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, // Top-left + LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, // Bottom-left + LAYOUT_MAP_HALF, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, // Top-right + LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, // Bottom-right }; +// clang-format on -BaseLayoutFactory layout2x2("Layout2x2", "2 x 2", - defaultLayoutOptions, +BaseLayoutFactory layout2x2("Layout2x2", "2 x 2", defaultLayoutOptions, 4, (uint8_t*)zmap); diff --git a/radio/src/gui/colorlcd/layouts/layout2x3.cpp b/radio/src/gui/colorlcd/layouts/layout2x3.cpp index 7fe73e532..e8f5ca6d6 100644 --- a/radio/src/gui/colorlcd/layouts/layout2x3.cpp +++ b/radio/src/gui/colorlcd/layouts/layout2x3.cpp @@ -21,15 +21,19 @@ #include "layout.h" +// Zone map: 2x3 (2 columns, 3 rows) +// Each zone is 1/2 width, 1/3 height +// Zones ordered to match previous implementation +// clang-format off static const uint8_t zmap[] = { - LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_1THIRD, - LAYOUT_MAP_0, LAYOUT_MAP_1THIRD, LAYOUT_MAP_HALF, LAYOUT_MAP_1THIRD, - LAYOUT_MAP_0, LAYOUT_MAP_2THIRD, LAYOUT_MAP_HALF, LAYOUT_MAP_1THIRD, - LAYOUT_MAP_HALF, LAYOUT_MAP_1THIRD, LAYOUT_MAP_HALF, LAYOUT_MAP_1THIRD, - LAYOUT_MAP_HALF, LAYOUT_MAP_2THIRD, LAYOUT_MAP_HALF, LAYOUT_MAP_1THIRD, - LAYOUT_MAP_HALF, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_1THIRD, // ordered to match previous implementation + LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_1THIRD, // Left top + LAYOUT_MAP_0, LAYOUT_MAP_1THIRD, LAYOUT_MAP_HALF, LAYOUT_MAP_1THIRD, // Left middle + LAYOUT_MAP_0, LAYOUT_MAP_2THIRD, LAYOUT_MAP_HALF, LAYOUT_MAP_1THIRD, // Left bottom + LAYOUT_MAP_HALF, LAYOUT_MAP_1THIRD, LAYOUT_MAP_HALF, LAYOUT_MAP_1THIRD, // Right middle - ordered to match previous implementation + LAYOUT_MAP_HALF, LAYOUT_MAP_2THIRD, LAYOUT_MAP_HALF, LAYOUT_MAP_1THIRD, // Right bottom + LAYOUT_MAP_HALF, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_1THIRD, // Right top }; +// clang-format on -BaseLayoutFactory layout2x3("Layout2x3", "2 x 3", - defaultLayoutOptions, +BaseLayoutFactory layout2x3("Layout2x3", "2 x 3", defaultLayoutOptions, 6, (uint8_t*)zmap); diff --git a/radio/src/gui/colorlcd/layouts/layout2x4.cpp b/radio/src/gui/colorlcd/layouts/layout2x4.cpp index e0210da0d..0e3f9e71c 100644 --- a/radio/src/gui/colorlcd/layouts/layout2x4.cpp +++ b/radio/src/gui/colorlcd/layouts/layout2x4.cpp @@ -40,9 +40,8 @@ class Layout2x4 : public Layout OPTION_PANEL2_COLOR }; - Layout2x4(Window* parent, const LayoutFactory* factory, - int screenNum, uint8_t zoneCount, - uint8_t* zoneMap) : + Layout2x4(Window* parent, const LayoutFactory* factory, int screenNum, + uint8_t zoneCount, uint8_t* zoneMap) : Layout(parent, factory, screenNum, zoneCount, zoneMap) { panel1 = lv_obj_create(lvobj); @@ -56,8 +55,6 @@ class Layout2x4 : public Layout rect_t mainZone = {0, 0, 0, 0}; lv_obj_t* panel1 = nullptr; lv_obj_t* panel2 = nullptr; - LcdFlags panel1Color = -1; - LcdFlags panel2Color = -1; void checkEvents() override { @@ -92,21 +89,28 @@ class Layout2x4 : public Layout lv_obj_add_flag(panel2, LV_OBJ_FLAG_HIDDEN); } - etx_bg_color_from_flags(panel1, getOptionValue(OPTION_PANEL1_COLOR)->unsignedValue); - etx_bg_color_from_flags(panel2, getOptionValue(OPTION_PANEL2_COLOR)->unsignedValue); + etx_bg_color_from_flags(panel1, + getOptionValue(OPTION_PANEL1_COLOR)->unsignedValue); + etx_bg_color_from_flags(panel2, + getOptionValue(OPTION_PANEL2_COLOR)->unsignedValue); } }; +// Zone map: 2x4 (2 columns, 4 rows) +// Each zone is 1/2 width, 1/4 height +// Zones ordered column-by-column (left column first, then right column) +// clang-format off static const uint8_t zmap[] = { - LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, - LAYOUT_MAP_0, LAYOUT_MAP_1QTR, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, - LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, - LAYOUT_MAP_0, LAYOUT_MAP_3QTR, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, - LAYOUT_MAP_HALF, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, - LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, - LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, - LAYOUT_MAP_HALF, LAYOUT_MAP_3QTR, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, + // Zone positions: x, y, w, h (using LAYOUT_MAP constants) + LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, // Left column, top + LAYOUT_MAP_0, LAYOUT_MAP_1QTR, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, // Left column, 2nd row + LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, // Left column, 3rd row + LAYOUT_MAP_0, LAYOUT_MAP_3QTR, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, // Left column, bottom + LAYOUT_MAP_HALF, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, // Right column, top + LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, // Right column, 2nd row + LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, // Right column, 3rd row + LAYOUT_MAP_HALF, LAYOUT_MAP_3QTR, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, // Right column, bottom }; - +// clang-format on BaseLayoutFactory layout2x4("Layout2x4", "2 x 4", OPTIONS_LAYOUT_2x4, 8, (uint8_t*)zmap); diff --git a/radio/src/gui/colorlcd/layouts/layout4+2.cpp b/radio/src/gui/colorlcd/layouts/layout4+2.cpp index ebb02ee16..27b3b64a6 100644 --- a/radio/src/gui/colorlcd/layouts/layout4+2.cpp +++ b/radio/src/gui/colorlcd/layouts/layout4+2.cpp @@ -21,15 +21,19 @@ #include "layout.h" +// Zone map: 4+2 (4 small zones + 2 large zones) +// Left: 4 zones stacked (1/2 width, 1/4 height each), Right: 2 zones stacked +// (1/2 width, 1/2 height each) +// clang-format off static const uint8_t zmap[] = { - LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, - LAYOUT_MAP_0, LAYOUT_MAP_1QTR, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, - LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, - LAYOUT_MAP_0, LAYOUT_MAP_3QTR, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, - LAYOUT_MAP_HALF, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, - LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, + LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, // Left top + LAYOUT_MAP_0, LAYOUT_MAP_1QTR, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, // Left 2nd + LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, // Left 3rd + LAYOUT_MAP_0, LAYOUT_MAP_3QTR, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, // Left bottom + LAYOUT_MAP_HALF, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, // Right top + LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, // Right bottom }; +// clang-format on -BaseLayoutFactory layout4P2("Layout4P2", "4 + 2", - defaultLayoutOptions, +BaseLayoutFactory layout4P2("Layout4P2", "4 + 2", defaultLayoutOptions, 6, (uint8_t*)zmap); diff --git a/radio/src/gui/colorlcd/layouts/layout4+2b.cpp b/radio/src/gui/colorlcd/layouts/layout4+2b.cpp index d77f5f3c1..3fe59ba93 100644 --- a/radio/src/gui/colorlcd/layouts/layout4+2b.cpp +++ b/radio/src/gui/colorlcd/layouts/layout4+2b.cpp @@ -21,15 +21,19 @@ #include "layout.h" +// Zone map: 4+2B (4 small zones + 2 zones, bottom-biased) +// Left: 4 zones stacked (1/2 width, 1/4 height each), Right: 1 large zone (3/4 +// height) + 1 small zone (1/4 height) +// clang-format off static const uint8_t zmap[] = { - LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, - LAYOUT_MAP_0, LAYOUT_MAP_1QTR, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, - LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, - LAYOUT_MAP_0, LAYOUT_MAP_3QTR, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, - LAYOUT_MAP_HALF, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_3QTR, - LAYOUT_MAP_HALF, LAYOUT_MAP_3QTR, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, + LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, // Left top + LAYOUT_MAP_0, LAYOUT_MAP_1QTR, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, // Left 2nd + LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, // Left 3rd + LAYOUT_MAP_0, LAYOUT_MAP_3QTR, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, // Left bottom + LAYOUT_MAP_HALF, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_3QTR, // Right large (3/4 height) + LAYOUT_MAP_HALF, LAYOUT_MAP_3QTR, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, // Right small (1/4 height) }; +// clang-format on BaseLayoutFactory layout4P2B("Layout4P2B", "4 + 2B", - defaultLayoutOptions, - 6, (uint8_t*)zmap); + defaultLayoutOptions, 6, (uint8_t*)zmap); diff --git a/radio/src/gui/colorlcd/layouts/layout4x2.cpp b/radio/src/gui/colorlcd/layouts/layout4x2.cpp deleted file mode 100644 index d3686eb0b..000000000 --- a/radio/src/gui/colorlcd/layouts/layout4x2.cpp +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright (C) EdgeTX - * - * Based on code named - * opentx - https://github.com/opentx/opentx - * th9x - http://code.google.com/p/th9x - * er9x - http://code.google.com/p/er9x - * gruvin9x - http://code.google.com/p/gruvin9x - * - * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -#include "layout.h" -#include "translations/translations.h" - -// 4x2 layout: 4 rows, 2 columns -// Suitable for portrait screens and vertical screen usage - -const LayoutOption OPTIONS_LAYOUT_4x2[] = { - LAYOUT_COMMON_OPTIONS, - {STR_DEF(STR_PANEL1_BACKGROUND), LayoutOption::Bool, true}, - {STR_DEF(STR_PANEL_COLOR), LayoutOption::Color, RGB2FLAGS(77, 112, 203)}, - {STR_DEF(STR_PANEL2_BACKGROUND), LayoutOption::Bool, true}, - {STR_DEF(STR_PANEL_COLOR), LayoutOption::Color, RGB2FLAGS(77, 112, 203)}, - LAYOUT_OPTIONS_END}; - -class Layout4x2 : public Layout -{ - public: - enum { - OPTION_PANEL1_BACKGROUND = LAYOUT_OPTION_LAST_DEFAULT + 1, - OPTION_PANEL1_COLOR, - OPTION_PANEL2_BACKGROUND, - OPTION_PANEL2_COLOR - }; - - Layout4x2(Window* parent, const LayoutFactory* factory, - int screenNum, uint8_t zoneCount, - uint8_t* zoneMap) : - Layout(parent, factory, screenNum, zoneCount, zoneMap) - { - panel1 = lv_obj_create(lvobj); - lv_obj_set_style_bg_opa(panel1, LV_OPA_COVER, LV_PART_MAIN); - panel2 = lv_obj_create(lvobj); - lv_obj_set_style_bg_opa(panel2, LV_OPA_COVER, LV_PART_MAIN); - setPanels(); - } - - protected: - rect_t mainZone = {0, 0, 0, 0}; - lv_obj_t* panel1 = nullptr; - lv_obj_t* panel2 = nullptr; - - void checkEvents() override - { - setPanels(); - Layout::checkEvents(); - } - - void setPanels() - { - rect_t zone = Layout::getMainZone(); - if (mainZone.x != zone.x || mainZone.y != zone.y || mainZone.w != zone.w || - mainZone.h != zone.h) { - mainZone = zone; - // Left column panel - lv_obj_set_pos(panel1, mainZone.x, mainZone.y); - lv_obj_set_size(panel1, mainZone.w / 2, mainZone.h); - // Right column panel - lv_obj_set_pos(panel2, mainZone.x + mainZone.w / 2, mainZone.y); - lv_obj_set_size(panel2, mainZone.w / 2, mainZone.h); - } - - bool vis = getOptionValue(OPTION_PANEL1_BACKGROUND)->boolValue; - if (vis == lv_obj_has_flag(panel1, LV_OBJ_FLAG_HIDDEN)) { - if (vis) - lv_obj_clear_flag(panel1, LV_OBJ_FLAG_HIDDEN); - else - lv_obj_add_flag(panel1, LV_OBJ_FLAG_HIDDEN); - } - vis = getOptionValue(OPTION_PANEL2_BACKGROUND)->boolValue; - if (vis == lv_obj_has_flag(panel2, LV_OBJ_FLAG_HIDDEN)) { - if (vis) - lv_obj_clear_flag(panel2, LV_OBJ_FLAG_HIDDEN); - else - lv_obj_add_flag(panel2, LV_OBJ_FLAG_HIDDEN); - } - - etx_bg_color_from_flags(panel1, getOptionValue(OPTION_PANEL1_COLOR)->unsignedValue); - etx_bg_color_from_flags(panel2, getOptionValue(OPTION_PANEL2_COLOR)->unsignedValue); - } -}; - -// Zone map: 4x2 (4 rows, 2 columns) -// Each zone is 1/4 height, 1/2 width -static const uint8_t zmap[] = { - // Zone positions: x, y, w, h (using LAYOUT_MAP constants) - LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, // Top-left - LAYOUT_MAP_HALF, LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, // Top-right - LAYOUT_MAP_0, LAYOUT_MAP_1QTR, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, // 2nd row left - LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, // 2nd row right - LAYOUT_MAP_0, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, // 3rd row left - LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, // 3rd row right - LAYOUT_MAP_0, LAYOUT_MAP_3QTR, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, // Bottom-left - LAYOUT_MAP_HALF, LAYOUT_MAP_3QTR, LAYOUT_MAP_HALF, LAYOUT_MAP_1QTR, // Bottom-right -}; - -BaseLayoutFactory layout4x2("Layout4x2", "4 x 2", - OPTIONS_LAYOUT_4x2, - 8, (uint8_t*)zmap); diff --git a/radio/src/gui/colorlcd/layouts/layout6x1.cpp b/radio/src/gui/colorlcd/layouts/layout6x1.cpp index 5ebb7e722..98097a7a4 100644 --- a/radio/src/gui/colorlcd/layouts/layout6x1.cpp +++ b/radio/src/gui/colorlcd/layouts/layout6x1.cpp @@ -34,14 +34,10 @@ const LayoutOption OPTIONS_LAYOUT_6x1[] = { class Layout6x1 : public Layout { public: - enum { - OPTION_BACKGROUND = LAYOUT_OPTION_LAST_DEFAULT + 1, - OPTION_COLOR - }; + enum { OPTION_BACKGROUND = LAYOUT_OPTION_LAST_DEFAULT + 1, OPTION_COLOR }; - Layout6x1(Window* parent, const LayoutFactory* factory, - int screenNum, uint8_t zoneCount, - uint8_t* zoneMap) : + Layout6x1(Window* parent, const LayoutFactory* factory, int screenNum, + uint8_t zoneCount, uint8_t* zoneMap) : Layout(parent, factory, screenNum, zoneCount, zoneMap) { panel = lv_obj_create(lvobj); @@ -83,8 +79,9 @@ class Layout6x1 : public Layout // Zone map: 6x1 (6 rows, 1 column) // Each zone is 1/6 height, full width -#define LAYOUT_MAP_1_6TH 10 // 1/6 of full dimension (60/6 = 10) +#define LAYOUT_MAP_1_6TH 10 // 1/6 of full dimension (60/6 = 10) +// clang-format off static const uint8_t zmap[] = { // Zone positions: x, y, w, h LAYOUT_MAP_0, LAYOUT_MAP_0, LAYOUT_MAP_FULL, LAYOUT_MAP_1_6TH, // Zone 1 @@ -94,7 +91,7 @@ static const uint8_t zmap[] = { LAYOUT_MAP_0, LAYOUT_MAP_1_6TH*4,LAYOUT_MAP_FULL, LAYOUT_MAP_1_6TH, // Zone 5 LAYOUT_MAP_0, LAYOUT_MAP_1_6TH*5,LAYOUT_MAP_FULL, LAYOUT_MAP_1_6TH, // Zone 6 }; +// clang-format on -BaseLayoutFactory layout6x1("Layout6x1", "6 x 1", - OPTIONS_LAYOUT_6x1, - 6, (uint8_t*)zmap); +BaseLayoutFactory layout6x1("Layout6x1", "6 x 1", OPTIONS_LAYOUT_6x1, + 6, (uint8_t*)zmap);