From ad845a5d6b39114df5e9874333fc8b8e2c9b6c91 Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Sun, 11 Apr 2021 11:33:38 +0200 Subject: [PATCH] Main screen deco layout fine tuning / fixes. --- radio/src/gui/colorlcd/CMakeLists.txt | 8 ++++ radio/src/gui/colorlcd/colors.h | 4 ++ radio/src/gui/colorlcd/view_main.cpp | 54 +++++++++++++++++---------- 3 files changed, 47 insertions(+), 19 deletions(-) diff --git a/radio/src/gui/colorlcd/CMakeLists.txt b/radio/src/gui/colorlcd/CMakeLists.txt index 9a2c1db3a..e7b0674f9 100644 --- a/radio/src/gui/colorlcd/CMakeLists.txt +++ b/radio/src/gui/colorlcd/CMakeLists.txt @@ -95,10 +95,18 @@ set(SRC storage/modelslist.cpp ) + +option(WINDOWS_INSPECT_BORDERS "Draw bounding boxes around windows" OFF) +if(WINDOWS_INSPECT_BORDERS) + add_definitions(-DWINDOWS_INSPECT_BORDERS) +endif() + # includes libopenui include(${RADIO_SRC_DIR}/thirdparty/libopenui/src/CMakeLists.txt) include_directories(gui/libopenui) + add_definitions(-DLIBOPENUI) + foreach(LIBOPENUI_FILE ${LIBOPENUI_SRC}) set(SRC ${SRC} thirdparty/libopenui/src/${LIBOPENUI_FILE}) endforeach() diff --git a/radio/src/gui/colorlcd/colors.h b/radio/src/gui/colorlcd/colors.h index 0e4156979..eaf1dd473 100644 --- a/radio/src/gui/colorlcd/colors.h +++ b/radio/src/gui/colorlcd/colors.h @@ -67,4 +67,8 @@ #define SCROLLBOX_COLOR COLOR(SCROLLBOX_COLOR_INDEX) #define BATTERY_CHARGE_COLOR COLOR(BATTERY_CHARGE_COLOR_INDEX) +#if defined(WINDOWS_INSPECT_BORDERS) + #define WINDOWS_INSPECT_BORDER_COLOR LINE_COLOR +#endif + #endif // _COLORS_H_ diff --git a/radio/src/gui/colorlcd/view_main.cpp b/radio/src/gui/colorlcd/view_main.cpp index c415746d8..c27536f92 100644 --- a/radio/src/gui/colorlcd/view_main.cpp +++ b/radio/src/gui/colorlcd/view_main.cpp @@ -145,7 +145,7 @@ void ViewMain::adjustDecoration() // Topbar does not need any computation // (height() has been set in setTopbarVisible()) - // Sliders are closer to the edge and must be computed then + // Sliders are closer to the edge and must be computed first // (vertical sliders depends on topbar) // These are located on the bottom @@ -168,22 +168,36 @@ void ViewMain::adjustDecoration() sliders[SLIDERS_POT3]->setTop(pos); #endif + // Horizontal trims are on top of horizontal sliders + pos -= trims[TRIMS_LH]->height(); + trims[TRIMS_LH]->setTop(pos); + trims[TRIMS_RH]->setTop(pos); + + // Vertical trims/slider are on top of horizontal sliders with a small margin + auto vertTop = pos - HMARGIN - VERTICAL_SLIDERS_HEIGHT; + // Left side (vertical) pos = left(); sliders[SLIDERS_REAR_LEFT]->setLeft(pos); - sliders[SLIDERS_REAR_LEFT]->setTop(topbar->bottom()); + sliders[SLIDERS_REAR_LEFT]->setTop(vertTop); + #if defined(HARDWARE_EXT1) sliders[SLIDERS_EXT1]->setLeft(pos); if (IS_POT_SLIDER_AVAILABLE(EXT1)) { auto rl = sliders[SLIDERS_REAR_LEFT]; auto e1 = sliders[SLIDERS_EXT1]; + + // If EXT1 is configured as a slider, + // place it bellow rear-left slider (and make them smaller) rl->setHeight(VERTICAL_SLIDERS_HEIGHT / 2); - e1->setTop(topbar->bottom() + rl->height()); + e1->setTop(vertTop + rl->height() + HMARGIN/2); e1->setHeight(rl->height()); } else { auto rl = sliders[SLIDERS_REAR_LEFT]; auto e1 = sliders[SLIDERS_EXT1]; + + // Otherwise hide the extra slider and make rear-left fullsize rl->setHeight(VERTICAL_SLIDERS_HEIGHT); e1->setHeight(0); } @@ -192,34 +206,37 @@ void ViewMain::adjustDecoration() // Right side (vertical) pos = right() - sliders[SLIDERS_REAR_RIGHT]->width(); sliders[SLIDERS_REAR_RIGHT]->setLeft(pos); - sliders[SLIDERS_REAR_RIGHT]->setTop(topbar->bottom()); + sliders[SLIDERS_REAR_RIGHT]->setTop(vertTop); + #if defined(HARDWARE_EXT2) sliders[SLIDERS_EXT2]->setLeft(pos); if (IS_POT_SLIDER_AVAILABLE(EXT2)) { auto rr = sliders[SLIDERS_REAR_RIGHT]; auto e2 = sliders[SLIDERS_EXT2]; + + // If EXT2 is configured as a slider, + // place it bellow rear-left slider (and make them smaller) rr->setHeight(VERTICAL_SLIDERS_HEIGHT / 2); - e2->setTop(topbar->bottom() + rr->height()); + e2->setTop(vertTop + rr->height() + HMARGIN/2); e2->setHeight(rr->height()); } else { auto rr = sliders[SLIDERS_REAR_RIGHT]; auto e2 = sliders[SLIDERS_EXT2]; + + // Otherwise hide the extra slider and make rear-left fullsize rr->setHeight(VERTICAL_SLIDERS_HEIGHT); e2->setHeight(0); } #endif - // Trims are last as they are located more on the inside - // (depend on everything else) - - pos = sliders[SLIDERS_POT1]->top() - TRIM_SQUARE_SIZE; - trims[TRIMS_LH]->setTop(pos); - trims[TRIMS_RH]->setTop(pos); + // Finally place the vertical trims further from the edge trims[TRIMS_LV]->setLeft(sliders[SLIDERS_REAR_LEFT]->right()); - trims[TRIMS_LV]->setTop(topbar->bottom()); + trims[TRIMS_LV]->setTop(vertTop); trims[TRIMS_RV]->setLeft(sliders[SLIDERS_REAR_RIGHT]->left() - trims[TRIMS_RV]->width()); - trims[TRIMS_RV]->setTop(topbar->bottom()); + trims[TRIMS_RV]->setTop(vertTop); + + //TODO: find a proper place for the flight-mode text box } #if defined(HARDWARE_KEYS) @@ -384,20 +401,19 @@ void ViewMain::createTrims() VERTICAL_SLIDERS_HEIGHT }; - r.x = left() + HMARGIN + TRIM_SQUARE_SIZE; // DBG + //r.x = left() + HMARGIN + TRIM_SQUARE_SIZE; // DBG trims[TRIMS_LV] = new MainViewVerticalTrim(this, r, 1); - r.x = right() - HMARGIN - TRIM_SQUARE_SIZE; // DBG + //r.x = right() - HMARGIN - TRIM_SQUARE_SIZE; // DBG trims[TRIMS_RV] = new MainViewVerticalTrim(this, r, 2); } void ViewMain::createFlightMode() { rect_t r = { - 50, - LCD_H - 4 - /*(hasSliders() ?*/ 2 * TRIM_SQUARE_SIZE /*: TRIM_SQUARE_SIZE)*/, - LCD_W - 100, - 20 + // centered text box (50 pixels from either edge) + // -> re-size once the other components are set + 50, 0, width() - 100, 0 }; std::function getFM = []() -> std::string {