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

View File

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

View File

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