From 6d3a52e32b006c578a4d0474b0b086bae7ce83fd Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Wed, 29 Dec 2021 17:03:05 +1100 Subject: [PATCH] Extract menu size calc --- source/Core/Src/gui.cpp | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/source/Core/Src/gui.cpp b/source/Core/Src/gui.cpp index ee905c5f..bbae1d7c 100644 --- a/source/Core/Src/gui.cpp +++ b/source/Core/Src/gui.cpp @@ -857,6 +857,17 @@ static bool settings_enterAdvancedMenu(void) { return false; } +uint8_t gui_getMenuLength(const menuitem *menu) { + uint8_t scrollContentSize = 0; + for (uint8_t i = 0; menu[i].draw != nullptr; i++) { + if (menu[i].isVisible == nullptr) { + scrollContentSize += 1; // Always visible + } else if (menu[i].isVisible()) { + scrollContentSize += 1; // Selectively visible and chosen to show + } + } + return scrollContentSize; +} void gui_Menu(const menuitem *menu) { // Draw the settings menu and provide iteration support etc @@ -877,21 +888,13 @@ void gui_Menu(const menuitem *menu) { bool earlyExit = false; bool lcdRefresh = true; ButtonState lastButtonState = BUTTON_NONE; - uint8_t scrollContentSize = 0; + uint8_t scrollContentSize = gui_getMenuLength(menu); bool scrollBlink = false; bool lastValue = false; NavState navState = NavState::Entering; ScrollMessage scrollMessage; - for (uint8_t i = 0; menu[i].draw != nullptr; i++) { - if (menu[i].isVisible == nullptr) { - scrollContentSize += 1; // Always visible - } else if (menu[i].isVisible()) { - scrollContentSize += 1; // Selectively visible and chosen to show - } - } - while ((menu[currentScreen].draw != nullptr) && earlyExit == false) { // Handle menu transition: