From 42516f541e2bd4405247f761fc20c204edb6a531 Mon Sep 17 00:00:00 2001 From: Jason P Date: Fri, 18 Jul 2025 19:07:32 -0500 Subject: [PATCH] Rename System Frame (from Memory) and add Dismiss Frame --- src/graphics/Screen.cpp | 16 ++++++++-------- src/graphics/Screen.h | 4 ++-- src/graphics/draw/DebugRenderer.cpp | 2 +- src/graphics/draw/DebugRenderer.h | 4 ++-- src/graphics/draw/MenuHandler.cpp | 29 ++++++++++++++++++++++++++++- src/graphics/draw/MenuHandler.h | 4 +++- src/graphics/images.h | 4 ++-- 7 files changed, 46 insertions(+), 17 deletions(-) diff --git a/src/graphics/Screen.cpp b/src/graphics/Screen.cpp index b9c9e2fbf..3ed234afd 100644 --- a/src/graphics/Screen.cpp +++ b/src/graphics/Screen.cpp @@ -933,10 +933,10 @@ void Screen::setFrames(FrameFocus focus) normalFrames[numframes++] = graphics::DebugRenderer::drawLoRaFocused; indicatorIcons.push_back(icon_radio); } - if (!dismissedFrames.memory) { - fsi.positions.memory = numframes; - normalFrames[numframes++] = graphics::DebugRenderer::drawMemoryUsage; - indicatorIcons.push_back(icon_memory); + if (!dismissedFrames.system) { + fsi.positions.system = numframes; + normalFrames[numframes++] = graphics::DebugRenderer::drawSystemScreen; + indicatorIcons.push_back(icon_system); } #if !defined(DISPLAY_CLOCK_FRAME) fsi.positions.clock = numframes; @@ -1047,7 +1047,7 @@ void Screen::setFrames(FrameFocus focus) ui->switchToFrame(fsi.positions.clock); break; case FOCUS_SYSTEM: - ui->switchToFrame(fsi.positions.memory); + ui->switchToFrame(fsi.positions.system); break; case FOCUS_PRESERVE: @@ -1096,9 +1096,9 @@ void Screen::dismissCurrentFrame() LOG_DEBUG("Dismiss WiFi Screen"); dismissedFrames.wifi = true; dismissed = true; - } else if (currentFrame == framesetInfo.positions.memory) { + } else if (currentFrame == framesetInfo.positions.system) { LOG_INFO("Dismiss Memory"); - dismissedFrames.memory = true; + dismissedFrames.system = true; dismissed = true; } @@ -1366,7 +1366,7 @@ int Screen::handleInputEvent(const InputEvent *event) } else if (event->inputEvent == INPUT_BROKER_SELECT) { if (this->ui->getUiState()->currentFrame == framesetInfo.positions.home) { menuHandler::homeBaseMenu(); - } else if (this->ui->getUiState()->currentFrame == framesetInfo.positions.memory) { + } else if (this->ui->getUiState()->currentFrame == framesetInfo.positions.system) { menuHandler::systemBaseMenu(); #if HAS_GPS } else if (this->ui->getUiState()->currentFrame == framesetInfo.positions.gps && gps) { diff --git a/src/graphics/Screen.h b/src/graphics/Screen.h index 265900131..803fc53dd 100644 --- a/src/graphics/Screen.h +++ b/src/graphics/Screen.h @@ -653,7 +653,7 @@ class Screen : public concurrency::OSThread uint8_t settings = 255; uint8_t wifi = 255; uint8_t deviceFocused = 255; - uint8_t memory = 255; + uint8_t system = 255; uint8_t gps = 255; uint8_t home = 255; uint8_t textMessage = 255; @@ -675,7 +675,7 @@ class Screen : public concurrency::OSThread bool textMessage = false; bool waypoint = false; bool wifi = false; - bool memory = false; + bool system = false; } dismissedFrames; /// Try to start drawing ASAP diff --git a/src/graphics/draw/DebugRenderer.cpp b/src/graphics/draw/DebugRenderer.cpp index 5420d1b4b..81aeb2bc2 100644 --- a/src/graphics/draw/DebugRenderer.cpp +++ b/src/graphics/draw/DebugRenderer.cpp @@ -485,7 +485,7 @@ void drawLoRaFocused(OLEDDisplay *display, OLEDDisplayUiState *state, int16_t x, // **************************** // * System Screen * // **************************** -void drawMemoryUsage(OLEDDisplay *display, OLEDDisplayUiState *state, int16_t x, int16_t y) +void drawSystemScreen(OLEDDisplay *display, OLEDDisplayUiState *state, int16_t x, int16_t y) { display->clear(); display->setFont(FONT_SMALL); diff --git a/src/graphics/draw/DebugRenderer.h b/src/graphics/draw/DebugRenderer.h index f4d484f58..3382e931d 100644 --- a/src/graphics/draw/DebugRenderer.h +++ b/src/graphics/draw/DebugRenderer.h @@ -31,8 +31,8 @@ void drawDebugInfoWiFiTrampoline(OLEDDisplay *display, OLEDDisplayUiState *state // LoRa information display void drawLoRaFocused(OLEDDisplay *display, OLEDDisplayUiState *state, int16_t x, int16_t y); -// Memory screen display -void drawMemoryUsage(OLEDDisplay *display, OLEDDisplayUiState *state, int16_t x, int16_t y); +// System screen display +void drawSystemScreen(OLEDDisplay *display, OLEDDisplayUiState *state, int16_t x, int16_t y); } // namespace DebugRenderer } // namespace graphics diff --git a/src/graphics/draw/MenuHandler.cpp b/src/graphics/draw/MenuHandler.cpp index 7ed9c4ea1..c7674d905 100644 --- a/src/graphics/draw/MenuHandler.cpp +++ b/src/graphics/draw/MenuHandler.cpp @@ -375,7 +375,7 @@ void menuHandler::textMessageBaseMenu() void menuHandler::systemBaseMenu() { - enum optionsNumbers { Back, Notifications, ScreenOptions, PowerMenu, Test, enumEnd }; + enum optionsNumbers { Back, Notifications, ScreenOptions, PowerMenu, Test, DismissSystemFrame, enumEnd }; static const char *optionsArray[enumEnd] = {"Back"}; static int optionsEnumArray[enumEnd] = {Back}; int options = 1; @@ -396,6 +396,9 @@ void menuHandler::systemBaseMenu() optionsEnumArray[options++] = Test; } + optionsArray[options] = "Dismiss Frame"; + optionsEnumArray[options++] = DismissSystemFrame; + BannerOverlayOptions bannerOptions; bannerOptions.message = "System Action"; bannerOptions.optionsArrayPtr = optionsArray; @@ -414,6 +417,9 @@ void menuHandler::systemBaseMenu() } else if (selected == Test) { menuHandler::menuQueue = menuHandler::test_menu; screen->runNow(); + } else if (selected == DismissSystemFrame) { + menuHandler::menuQueue = menuHandler::DismissSystemFrame; + screen->runNow(); } else if (selected == Back && !test_enabled) { test_count++; if (test_count > 4) { @@ -1067,6 +1073,24 @@ void menuHandler::keyVerificationFinalPrompt() } } +void menuHandler::DismissSystemFrame_menu() +{ + static const char *optionsArray[] = {"Back", "Confirm"}; + BannerOverlayOptions bannerOptions; + bannerOptions.message = "Dismiss System Frame?"; + bannerOptions.optionsArrayPtr = optionsArray; + bannerOptions.optionsCount = 2; + bannerOptions.bannerCallback = [](int selected) -> void { + if (selected == 1) { + screen->dismissCurrentFrame(); + } else { + menuQueue = system_base_menu; + screen->runNow(); + } + }; + screen->showOverlayBanner(bannerOptions); +} + void menuHandler::handleMenuSwitch(OLEDDisplay *display) { if (menuQueue != menu_none) @@ -1157,6 +1181,9 @@ void menuHandler::handleMenuSwitch(OLEDDisplay *display) case power_menu: powerMenu(); break; + case DismissSystemFrame: + DismissSystemFrame_menu(); + break; case throttle_message: screen->showSimpleBanner("Too Many Attempts\nTry again in 60 seconds.", 5000); break; diff --git a/src/graphics/draw/MenuHandler.h b/src/graphics/draw/MenuHandler.h index 1f989be79..404c4abdc 100644 --- a/src/graphics/draw/MenuHandler.h +++ b/src/graphics/draw/MenuHandler.h @@ -36,7 +36,8 @@ class menuHandler system_base_menu, key_verification_init, key_verification_final_prompt, - throttle_message + throttle_message, + DismissSystemFrame }; static screenMenus menuQueue; @@ -71,6 +72,7 @@ class menuHandler static void notificationsMenu(); static void screenOptionsMenu(); static void powerMenu(); + static void DismissSystemFrame_menu(); private: static void saveUIConfig(); diff --git a/src/graphics/images.h b/src/graphics/images.h index beef3a1b2..a43ef6223 100644 --- a/src/graphics/images.h +++ b/src/graphics/images.h @@ -117,8 +117,8 @@ const uint8_t icon_radio[] PROGMEM = { 0xA9 // Row 7: #..#.#.# }; -// 🪙 Memory Icon -const uint8_t icon_memory[] PROGMEM = { +// 🪙 System Icon +const uint8_t icon_system[] PROGMEM = { 0x24, // Row 0: ..#..#.. 0x3C, // Row 1: ..####.. 0xC3, // Row 2: ##....##