Rename System Frame (from Memory) and add Dismiss Frame

This commit is contained in:
Jason P 2025-07-18 19:07:32 -05:00
parent cf574c71d8
commit 42516f541e
7 changed files with 46 additions and 17 deletions

View File

@ -933,10 +933,10 @@ void Screen::setFrames(FrameFocus focus)
normalFrames[numframes++] = graphics::DebugRenderer::drawLoRaFocused; normalFrames[numframes++] = graphics::DebugRenderer::drawLoRaFocused;
indicatorIcons.push_back(icon_radio); indicatorIcons.push_back(icon_radio);
} }
if (!dismissedFrames.memory) { if (!dismissedFrames.system) {
fsi.positions.memory = numframes; fsi.positions.system = numframes;
normalFrames[numframes++] = graphics::DebugRenderer::drawMemoryUsage; normalFrames[numframes++] = graphics::DebugRenderer::drawSystemScreen;
indicatorIcons.push_back(icon_memory); indicatorIcons.push_back(icon_system);
} }
#if !defined(DISPLAY_CLOCK_FRAME) #if !defined(DISPLAY_CLOCK_FRAME)
fsi.positions.clock = numframes; fsi.positions.clock = numframes;
@ -1047,7 +1047,7 @@ void Screen::setFrames(FrameFocus focus)
ui->switchToFrame(fsi.positions.clock); ui->switchToFrame(fsi.positions.clock);
break; break;
case FOCUS_SYSTEM: case FOCUS_SYSTEM:
ui->switchToFrame(fsi.positions.memory); ui->switchToFrame(fsi.positions.system);
break; break;
case FOCUS_PRESERVE: case FOCUS_PRESERVE:
@ -1096,9 +1096,9 @@ void Screen::dismissCurrentFrame()
LOG_DEBUG("Dismiss WiFi Screen"); LOG_DEBUG("Dismiss WiFi Screen");
dismissedFrames.wifi = true; dismissedFrames.wifi = true;
dismissed = true; dismissed = true;
} else if (currentFrame == framesetInfo.positions.memory) { } else if (currentFrame == framesetInfo.positions.system) {
LOG_INFO("Dismiss Memory"); LOG_INFO("Dismiss Memory");
dismissedFrames.memory = true; dismissedFrames.system = true;
dismissed = true; dismissed = true;
} }
@ -1366,7 +1366,7 @@ int Screen::handleInputEvent(const InputEvent *event)
} else if (event->inputEvent == INPUT_BROKER_SELECT) { } else if (event->inputEvent == INPUT_BROKER_SELECT) {
if (this->ui->getUiState()->currentFrame == framesetInfo.positions.home) { if (this->ui->getUiState()->currentFrame == framesetInfo.positions.home) {
menuHandler::homeBaseMenu(); menuHandler::homeBaseMenu();
} else if (this->ui->getUiState()->currentFrame == framesetInfo.positions.memory) { } else if (this->ui->getUiState()->currentFrame == framesetInfo.positions.system) {
menuHandler::systemBaseMenu(); menuHandler::systemBaseMenu();
#if HAS_GPS #if HAS_GPS
} else if (this->ui->getUiState()->currentFrame == framesetInfo.positions.gps && gps) { } else if (this->ui->getUiState()->currentFrame == framesetInfo.positions.gps && gps) {

View File

@ -653,7 +653,7 @@ class Screen : public concurrency::OSThread
uint8_t settings = 255; uint8_t settings = 255;
uint8_t wifi = 255; uint8_t wifi = 255;
uint8_t deviceFocused = 255; uint8_t deviceFocused = 255;
uint8_t memory = 255; uint8_t system = 255;
uint8_t gps = 255; uint8_t gps = 255;
uint8_t home = 255; uint8_t home = 255;
uint8_t textMessage = 255; uint8_t textMessage = 255;
@ -675,7 +675,7 @@ class Screen : public concurrency::OSThread
bool textMessage = false; bool textMessage = false;
bool waypoint = false; bool waypoint = false;
bool wifi = false; bool wifi = false;
bool memory = false; bool system = false;
} dismissedFrames; } dismissedFrames;
/// Try to start drawing ASAP /// Try to start drawing ASAP

View File

@ -485,7 +485,7 @@ void drawLoRaFocused(OLEDDisplay *display, OLEDDisplayUiState *state, int16_t x,
// **************************** // ****************************
// * System Screen * // * 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->clear();
display->setFont(FONT_SMALL); display->setFont(FONT_SMALL);

View File

@ -31,8 +31,8 @@ void drawDebugInfoWiFiTrampoline(OLEDDisplay *display, OLEDDisplayUiState *state
// LoRa information display // LoRa information display
void drawLoRaFocused(OLEDDisplay *display, OLEDDisplayUiState *state, int16_t x, int16_t y); void drawLoRaFocused(OLEDDisplay *display, OLEDDisplayUiState *state, int16_t x, int16_t y);
// Memory screen display // System screen display
void drawMemoryUsage(OLEDDisplay *display, OLEDDisplayUiState *state, int16_t x, int16_t y); void drawSystemScreen(OLEDDisplay *display, OLEDDisplayUiState *state, int16_t x, int16_t y);
} // namespace DebugRenderer } // namespace DebugRenderer
} // namespace graphics } // namespace graphics

View File

@ -375,7 +375,7 @@ void menuHandler::textMessageBaseMenu()
void menuHandler::systemBaseMenu() 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 const char *optionsArray[enumEnd] = {"Back"};
static int optionsEnumArray[enumEnd] = {Back}; static int optionsEnumArray[enumEnd] = {Back};
int options = 1; int options = 1;
@ -396,6 +396,9 @@ void menuHandler::systemBaseMenu()
optionsEnumArray[options++] = Test; optionsEnumArray[options++] = Test;
} }
optionsArray[options] = "Dismiss Frame";
optionsEnumArray[options++] = DismissSystemFrame;
BannerOverlayOptions bannerOptions; BannerOverlayOptions bannerOptions;
bannerOptions.message = "System Action"; bannerOptions.message = "System Action";
bannerOptions.optionsArrayPtr = optionsArray; bannerOptions.optionsArrayPtr = optionsArray;
@ -414,6 +417,9 @@ void menuHandler::systemBaseMenu()
} else if (selected == Test) { } else if (selected == Test) {
menuHandler::menuQueue = menuHandler::test_menu; menuHandler::menuQueue = menuHandler::test_menu;
screen->runNow(); screen->runNow();
} else if (selected == DismissSystemFrame) {
menuHandler::menuQueue = menuHandler::DismissSystemFrame;
screen->runNow();
} else if (selected == Back && !test_enabled) { } else if (selected == Back && !test_enabled) {
test_count++; test_count++;
if (test_count > 4) { 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) void menuHandler::handleMenuSwitch(OLEDDisplay *display)
{ {
if (menuQueue != menu_none) if (menuQueue != menu_none)
@ -1157,6 +1181,9 @@ void menuHandler::handleMenuSwitch(OLEDDisplay *display)
case power_menu: case power_menu:
powerMenu(); powerMenu();
break; break;
case DismissSystemFrame:
DismissSystemFrame_menu();
break;
case throttle_message: case throttle_message:
screen->showSimpleBanner("Too Many Attempts\nTry again in 60 seconds.", 5000); screen->showSimpleBanner("Too Many Attempts\nTry again in 60 seconds.", 5000);
break; break;

View File

@ -36,7 +36,8 @@ class menuHandler
system_base_menu, system_base_menu,
key_verification_init, key_verification_init,
key_verification_final_prompt, key_verification_final_prompt,
throttle_message throttle_message,
DismissSystemFrame
}; };
static screenMenus menuQueue; static screenMenus menuQueue;
@ -71,6 +72,7 @@ class menuHandler
static void notificationsMenu(); static void notificationsMenu();
static void screenOptionsMenu(); static void screenOptionsMenu();
static void powerMenu(); static void powerMenu();
static void DismissSystemFrame_menu();
private: private:
static void saveUIConfig(); static void saveUIConfig();

View File

@ -117,8 +117,8 @@ const uint8_t icon_radio[] PROGMEM = {
0xA9 // Row 7: #..#.#.# 0xA9 // Row 7: #..#.#.#
}; };
// 🪙 Memory Icon // 🪙 System Icon
const uint8_t icon_memory[] PROGMEM = { const uint8_t icon_system[] PROGMEM = {
0x24, // Row 0: ..#..#.. 0x24, // Row 0: ..#..#..
0x3C, // Row 1: ..####.. 0x3C, // Row 1: ..####..
0xC3, // Row 2: ##....## 0xC3, // Row 2: ##....##