From 9a0f609ff7e8dd0065197351fbfb1d01caae2666 Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Sun, 11 Apr 2021 12:33:08 +0200 Subject: [PATCH] Removed duplicated code --- radio/src/gui/colorlcd/layout.cpp | 32 ++------------------ radio/src/gui/colorlcd/layout.h | 4 +-- radio/src/gui/colorlcd/layouts/layout1x1.cpp | 6 +--- radio/src/gui/colorlcd/layouts/layout2+1.cpp | 4 +-- radio/src/gui/colorlcd/layouts/layout2x1.cpp | 4 +-- radio/src/gui/colorlcd/layouts/layout2x2.cpp | 4 +-- radio/src/gui/colorlcd/layouts/layout2x4.cpp | 4 +-- radio/src/gui/colorlcd/view_main.cpp | 16 ++++++++++ radio/src/gui/colorlcd/view_main.h | 4 +++ 9 files changed, 29 insertions(+), 49 deletions(-) diff --git a/radio/src/gui/colorlcd/layout.cpp b/radio/src/gui/colorlcd/layout.cpp index a56a29684..855e6c28d 100644 --- a/radio/src/gui/colorlcd/layout.cpp +++ b/radio/src/gui/colorlcd/layout.cpp @@ -127,35 +127,7 @@ void Layout::decorate() viewMain->invalidate(); } -rect_t Layout::getMainZone(rect_t zone) const +rect_t Layout::getMainZone() const { - if (hasTopbar()) { - zone.y += MENU_HEADER_HEIGHT; - zone.h -= MENU_HEADER_HEIGHT; - } - - if (hasFlightMode() || hasTrims()) { - zone.h -= TRIM_SQUARE_SIZE; - } - - if (hasSliders()) { -#if NUM_SLIDERS + NUM_POTS > 2 - zone.h -= TRIM_SQUARE_SIZE; -#endif - zone.w -= 2 * TRIM_SQUARE_SIZE; - zone.x += TRIM_SQUARE_SIZE; - } - - if (hasTrims()) { - zone.w -= 2 * TRIM_SQUARE_SIZE; - zone.x += TRIM_SQUARE_SIZE; - } - - if (zone.w % 2 != 0) - zone.w -= 1; - - if (zone.h % 2 != 0) - zone.h -= 1; - - return zone; + return ViewMain::instance()->getMainZone(); } diff --git a/radio/src/gui/colorlcd/layout.h b/radio/src/gui/colorlcd/layout.h index 8c0befb1c..98239f5ec 100644 --- a/radio/src/gui/colorlcd/layout.h +++ b/radio/src/gui/colorlcd/layout.h @@ -118,8 +118,8 @@ class Layout: public LayoutBase // Updates settings for trims, sliders, pots, etc... void decorate(); - // Get the Zone rect without decoration - rect_t getMainZone(rect_t zone) const; + // Get the available space for widgets + rect_t getMainZone() const; }; void registerLayout(const LayoutFactory * factory); diff --git a/radio/src/gui/colorlcd/layouts/layout1x1.cpp b/radio/src/gui/colorlcd/layouts/layout1x1.cpp index ee641b530..f2fc0524d 100644 --- a/radio/src/gui/colorlcd/layouts/layout1x1.cpp +++ b/radio/src/gui/colorlcd/layouts/layout1x1.cpp @@ -21,8 +21,6 @@ #include "opentx.h" #include "trims.h" -constexpr coord_t border = 10; - const uint8_t LBM_LAYOUT_1x1[] = { #include "mask_layout1x1.lbm" }; @@ -47,9 +45,7 @@ class Layout1x1: public Layout rect_t getZone(unsigned int index) const override { - rect_t zone = getMainZone({border, border, LCD_W - 2 * border, LCD_H - 2 * border}); - - return zone; + return getMainZone(); } }; diff --git a/radio/src/gui/colorlcd/layouts/layout2+1.cpp b/radio/src/gui/colorlcd/layouts/layout2+1.cpp index dddd3f5f8..29b8f7d5a 100644 --- a/radio/src/gui/colorlcd/layouts/layout2+1.cpp +++ b/radio/src/gui/colorlcd/layouts/layout2+1.cpp @@ -22,8 +22,6 @@ #include "sliders.h" #include "trims.h" -constexpr coord_t border = 10; - const uint8_t LBM_LAYOUT_2P1[] = { #include "mask_layout2+1.lbm" }; @@ -48,7 +46,7 @@ class Layout2P1: public Layout rect_t getZone(unsigned int index) const override { - rect_t zone = getMainZone({border, border, LCD_W - 2 * border, LCD_H - 2 * border}); + rect_t zone = getMainZone(); if (index == 0) { return {isMirrored() ? zone.x : zone.x + zone.w / 2, zone.y,zone.w / 2, zone.h}; diff --git a/radio/src/gui/colorlcd/layouts/layout2x1.cpp b/radio/src/gui/colorlcd/layouts/layout2x1.cpp index 7db4f8c02..c9bd5831b 100644 --- a/radio/src/gui/colorlcd/layouts/layout2x1.cpp +++ b/radio/src/gui/colorlcd/layouts/layout2x1.cpp @@ -22,8 +22,6 @@ #include "sliders.h" #include "trims.h" -constexpr coord_t border = 10; - const uint8_t LBM_LAYOUT_2x1[] = { #include "mask_layout2x1.lbm" }; @@ -48,7 +46,7 @@ class Layout2x1: public Layout rect_t getZone(unsigned int index) const override { - rect_t zone = getMainZone({border, border, LCD_W - 2 * border, LCD_H - 2 * border}); + rect_t zone = getMainZone(); if (index == 0) { return {isMirrored() ? zone.x + zone.w / 2 : zone.x, zone.y, zone.w / 2, zone.h}; diff --git a/radio/src/gui/colorlcd/layouts/layout2x2.cpp b/radio/src/gui/colorlcd/layouts/layout2x2.cpp index 05d973b62..6e8d78632 100644 --- a/radio/src/gui/colorlcd/layouts/layout2x2.cpp +++ b/radio/src/gui/colorlcd/layouts/layout2x2.cpp @@ -22,8 +22,6 @@ #include "sliders.h" #include "trims.h" -constexpr coord_t border = 10; - const uint8_t LBM_LAYOUT_2x2[] = { #include "mask_layout2x2.lbm" }; @@ -48,7 +46,7 @@ class Layout2x2: public Layout rect_t getZone(unsigned int index) const override { - rect_t zone = getMainZone({border, border, LCD_W - 2 * border, LCD_H - 2 * border}); + rect_t zone = getMainZone(); zone.w /= 2; zone.h /= 2; diff --git a/radio/src/gui/colorlcd/layouts/layout2x4.cpp b/radio/src/gui/colorlcd/layouts/layout2x4.cpp index b08009f83..c3e6a0d02 100644 --- a/radio/src/gui/colorlcd/layouts/layout2x4.cpp +++ b/radio/src/gui/colorlcd/layouts/layout2x4.cpp @@ -20,8 +20,6 @@ #include "opentx.h" -constexpr coord_t border = 10; - const uint8_t LBM_LAYOUT_2x4[] = { #include "mask_layout2x4.lbm" }; @@ -67,7 +65,7 @@ class Layout2x4: public Layout rect_t getZone(unsigned int index) const override { - rect_t zone = getMainZone({border, border, LCD_W - 2 * border, LCD_H - 2 * border}); + rect_t zone = getMainZone(); zone.w /= 2; zone.h /= 4; diff --git a/radio/src/gui/colorlcd/view_main.cpp b/radio/src/gui/colorlcd/view_main.cpp index c27536f92..55ca35c17 100644 --- a/radio/src/gui/colorlcd/view_main.cpp +++ b/radio/src/gui/colorlcd/view_main.cpp @@ -30,6 +30,8 @@ #include "layouts/trims.h" #include "opentx.h" +constexpr coord_t MAIN_ZONE_BORDER = 10; + Layout * customScreens[MAX_CUSTOM_SCREENS] = {}; int getMainViewsCount() @@ -239,6 +241,20 @@ void ViewMain::adjustDecoration() //TODO: find a proper place for the flight-mode text box } +rect_t ViewMain::getMainZone() const +{ + rect_t zone = { + trims[TRIMS_LV]->right() + MAIN_ZONE_BORDER, + topbar->bottom() + MAIN_ZONE_BORDER, + 0, 0 // let's compute them! + }; + + zone.w = trims[TRIMS_RV]->left() - MAIN_ZONE_BORDER - zone.x; + zone.h = trims[TRIMS_LH]->top() - MAIN_ZONE_BORDER - zone.y; + + return zone; +} + #if defined(HARDWARE_KEYS) void ViewMain::onEvent(event_t event) { diff --git a/radio/src/gui/colorlcd/view_main.h b/radio/src/gui/colorlcd/view_main.h index 2f5231a32..ee2b0915c 100644 --- a/radio/src/gui/colorlcd/view_main.h +++ b/radio/src/gui/colorlcd/view_main.h @@ -57,6 +57,10 @@ class ViewMain: public FormWindow // Re-calculate positions void adjustDecoration(); + + // Get the available space in the middle of the screen + // (without decoration) + rect_t getMainZone() const; protected: static ViewMain * _instance;