Dismiss Clock Frame

This commit is contained in:
Jason P 2025-07-19 09:24:38 -05:00
parent 7e067f5bf5
commit e6be655f66
3 changed files with 22 additions and 11 deletions

View File

@ -882,10 +882,12 @@ void Screen::setFrames(FrameFocus focus)
} }
#if defined(DISPLAY_CLOCK_FRAME) #if defined(DISPLAY_CLOCK_FRAME)
if (!dismissedFrames.clock) {
fsi.positions.clock = numframes; fsi.positions.clock = numframes;
normalFrames[numframes++] = uiconfig.is_clockface_analog ? graphics::ClockRenderer::drawAnalogClockFrame normalFrames[numframes++] = uiconfig.is_clockface_analog ? graphics::ClockRenderer::drawAnalogClockFrame
: graphics::ClockRenderer::drawDigitalClockFrame; : graphics::ClockRenderer::drawDigitalClockFrame;
indicatorIcons.push_back(digital_icon_clock); indicatorIcons.push_back(digital_icon_clock);
}
#endif #endif
// Declare this early so its available in FOCUS_PRESERVE block // Declare this early so its available in FOCUS_PRESERVE block
@ -950,10 +952,12 @@ void Screen::setFrames(FrameFocus focus)
indicatorIcons.push_back(icon_system); indicatorIcons.push_back(icon_system);
} }
#if !defined(DISPLAY_CLOCK_FRAME) #if !defined(DISPLAY_CLOCK_FRAME)
if (!dismissedFrames.clock) {
fsi.positions.clock = numframes; fsi.positions.clock = numframes;
normalFrames[numframes++] = uiconfig.is_clockface_analog ? graphics::ClockRenderer::drawAnalogClockFrame normalFrames[numframes++] = uiconfig.is_clockface_analog ? graphics::ClockRenderer::drawAnalogClockFrame
: graphics::ClockRenderer::drawDigitalClockFrame; : graphics::ClockRenderer::drawDigitalClockFrame;
indicatorIcons.push_back(digital_icon_clock); indicatorIcons.push_back(digital_icon_clock);
}
#endif #endif
#if HAS_WIFI && !defined(ARCH_PORTDUINO) #if HAS_WIFI && !defined(ARCH_PORTDUINO)
@ -1115,6 +1119,10 @@ void Screen::dismissCurrentFrame()
LOG_INFO("Dismiss Memory"); LOG_INFO("Dismiss Memory");
dismissedFrames.system = true; dismissedFrames.system = true;
dismissed = true; dismissed = true;
} else if (currentFrame == framesetInfo.positions.clock) {
LOG_INFO("Dismiss Clock");
dismissedFrames.clock = true;
dismissed = true;
#if HAS_GPS #if HAS_GPS
} else if (currentFrame == framesetInfo.positions.nodelist_bearings) { } else if (currentFrame == framesetInfo.positions.nodelist_bearings) {
LOG_INFO("Dismiss Bearings"); LOG_INFO("Dismiss Bearings");

View File

@ -677,6 +677,7 @@ class Screen : public concurrency::OSThread
bool wifi = false; bool wifi = false;
bool system = false; bool system = false;
bool home = false; bool home = false;
bool clock = false;
#ifndef USE_EINK #ifndef USE_EINK
bool nodelist = false; bool nodelist = false;
#endif #endif

View File

@ -234,12 +234,12 @@ void menuHandler::TZPicker()
void menuHandler::clockMenu() void menuHandler::clockMenu()
{ {
static const char *optionsArray[] = {"Back", "Clock Face", "Time Format", "Timezone"}; static const char *optionsArray[] = {"Back", "Clock Face", "Time Format", "Timezone", "Dismiss Frame"};
enum optionsNumbers { Back = 0, Clock = 1, Time = 2, Timezone = 3 }; enum optionsNumbers { Back = 0, Clock = 1, Time = 2, Timezone = 3, DismissCurrentFrame = 4 };
BannerOverlayOptions bannerOptions; BannerOverlayOptions bannerOptions;
bannerOptions.message = "Clock Action"; bannerOptions.message = "Clock Action";
bannerOptions.optionsArrayPtr = optionsArray; bannerOptions.optionsArrayPtr = optionsArray;
bannerOptions.optionsCount = 4; bannerOptions.optionsCount = 5;
bannerOptions.bannerCallback = [](int selected) -> void { bannerOptions.bannerCallback = [](int selected) -> void {
if (selected == Clock) { if (selected == Clock) {
menuHandler::menuQueue = menuHandler::clock_face_picker; menuHandler::menuQueue = menuHandler::clock_face_picker;
@ -250,6 +250,8 @@ void menuHandler::clockMenu()
} else if (selected == Timezone) { } else if (selected == Timezone) {
menuHandler::menuQueue = menuHandler::TZ_picker; menuHandler::menuQueue = menuHandler::TZ_picker;
screen->runNow(); screen->runNow();
} else if (selected == DismissCurrentFrame) {
menuHandler::menuQueue = menuHandler::DismissCurrentFrame;
} }
}; };
screen->showOverlayBanner(bannerOptions); screen->showOverlayBanner(bannerOptions);