mirror of
https://github.com/meshtastic/firmware.git
synced 2025-08-05 05:04:46 +00:00
Dismiss Memory and wifi screen
This commit is contained in:
parent
3596ea20bc
commit
7bc473ed99
@ -3537,8 +3537,11 @@ void Screen::setFrames(FrameFocus focus)
|
|||||||
normalFrames[numframes++] = drawLoRaFocused;
|
normalFrames[numframes++] = drawLoRaFocused;
|
||||||
indicatorIcons.push_back(icon_radio);
|
indicatorIcons.push_back(icon_radio);
|
||||||
|
|
||||||
normalFrames[numframes++] = drawMemoryScreen;
|
if (!dismissedFrames.memory) {
|
||||||
indicatorIcons.push_back(icon_memory);
|
fsi.positions.memory = numframes;
|
||||||
|
normalFrames[numframes++] = drawMemoryScreen;
|
||||||
|
indicatorIcons.push_back(icon_memory);
|
||||||
|
}
|
||||||
|
|
||||||
// then all the nodes
|
// then all the nodes
|
||||||
// We only show a few nodes in our scrolling list - because meshes with many nodes would have too many screens
|
// We only show a few nodes in our scrolling list - because meshes with many nodes would have too many screens
|
||||||
@ -3557,13 +3560,13 @@ void Screen::setFrames(FrameFocus focus)
|
|||||||
// fsi.positions.settings = numframes;
|
// fsi.positions.settings = numframes;
|
||||||
// normalFrames[numframes++] = &Screen::drawDebugInfoSettingsTrampoline;
|
// normalFrames[numframes++] = &Screen::drawDebugInfoSettingsTrampoline;
|
||||||
|
|
||||||
fsi.positions.wifi = numframes;
|
#if HAS_WIFI && !defined(ARCH_PORTDUINO)
|
||||||
#if HAS_WIFI && !defined(ARCH_PORTDUINO)
|
if (!dismissedFrames.wifi && isWifiAvailable()) {
|
||||||
if (isWifiAvailable()) {
|
fsi.positions.wifi = numframes;
|
||||||
normalFrames[numframes++] = &Screen::drawDebugInfoWiFiTrampoline;
|
normalFrames[numframes++] = &Screen::drawDebugInfoWiFiTrampoline;
|
||||||
indicatorIcons.push_back(icon_wifi);
|
indicatorIcons.push_back(icon_wifi);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
fsi.frameCount = numframes; // Total framecount is used to apply FOCUS_PRESERVE
|
fsi.frameCount = numframes; // Total framecount is used to apply FOCUS_PRESERVE
|
||||||
this->frameCount = numframes; // ✅ Save frame count for use in custom overlay
|
this->frameCount = numframes; // ✅ Save frame count for use in custom overlay
|
||||||
@ -3627,26 +3630,36 @@ void Screen::dismissCurrentFrame()
|
|||||||
uint8_t currentFrame = ui->getUiState()->currentFrame;
|
uint8_t currentFrame = ui->getUiState()->currentFrame;
|
||||||
bool dismissed = false;
|
bool dismissed = false;
|
||||||
|
|
||||||
// Only dismiss if the text message frame is currently valid and visible
|
if (currentFrame == framesetInfo.positions.textMessage && devicestate.has_rx_text_message) {
|
||||||
if (framesetInfo.positions.textMessage != 255 && currentFrame == framesetInfo.positions.textMessage &&
|
|
||||||
devicestate.has_rx_text_message) {
|
|
||||||
LOG_INFO("Dismiss Text Message");
|
LOG_INFO("Dismiss Text Message");
|
||||||
devicestate.has_rx_text_message = false;
|
devicestate.has_rx_text_message = false;
|
||||||
memset(&devicestate.rx_text_message, 0, sizeof(devicestate.rx_text_message)); // ✅ clear message
|
memset(&devicestate.rx_text_message, 0, sizeof(devicestate.rx_text_message));
|
||||||
|
dismissedFrames.textMessage = true;
|
||||||
dismissed = true;
|
dismissed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (currentFrame == framesetInfo.positions.waypoint && devicestate.has_rx_waypoint) {
|
else if (currentFrame == framesetInfo.positions.waypoint && devicestate.has_rx_waypoint) {
|
||||||
LOG_DEBUG("Dismiss Waypoint");
|
LOG_DEBUG("Dismiss Waypoint");
|
||||||
devicestate.has_rx_waypoint = false;
|
devicestate.has_rx_waypoint = false;
|
||||||
|
dismissedFrames.waypoint = true;
|
||||||
|
dismissed = true;
|
||||||
|
}
|
||||||
|
else if (currentFrame == framesetInfo.positions.wifi) {
|
||||||
|
LOG_DEBUG("Dismiss WiFi Screen");
|
||||||
|
dismissedFrames.wifi = true;
|
||||||
|
dismissed = true;
|
||||||
|
}
|
||||||
|
else if (currentFrame == framesetInfo.positions.memory) {
|
||||||
|
LOG_INFO("Dismiss Memory");
|
||||||
|
dismissedFrames.memory = true;
|
||||||
dismissed = true;
|
dismissed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If we did make changes to dismiss, we now need to regenerate the frameset
|
if (dismissed) {
|
||||||
if (dismissed)
|
setFrames(FOCUS_DEFAULT); // You could also use FOCUS_PRESERVE
|
||||||
setFrames();
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Screen::handleStartFirmwareUpdateScreen()
|
void Screen::handleStartFirmwareUpdateScreen()
|
||||||
{
|
{
|
||||||
LOG_DEBUG("Show firmware screen");
|
LOG_DEBUG("Show firmware screen");
|
||||||
|
@ -601,19 +601,27 @@ class Screen : public concurrency::OSThread
|
|||||||
// - Used to dismiss the currently shown frame (txt; waypoint) by CardKB combo
|
// - Used to dismiss the currently shown frame (txt; waypoint) by CardKB combo
|
||||||
struct FramesetInfo {
|
struct FramesetInfo {
|
||||||
struct FramePositions {
|
struct FramePositions {
|
||||||
uint8_t fault = 0;
|
uint8_t fault = 255;
|
||||||
uint8_t textMessage = 0;
|
uint8_t textMessage = 255;
|
||||||
uint8_t waypoint = 0;
|
uint8_t waypoint = 255;
|
||||||
uint8_t focusedModule = 0;
|
uint8_t focusedModule = 255;
|
||||||
uint8_t log = 0;
|
uint8_t log = 255;
|
||||||
uint8_t settings = 0;
|
uint8_t settings = 255;
|
||||||
uint8_t wifi = 0;
|
uint8_t wifi = 255;
|
||||||
uint8_t deviceFocused = 0;
|
uint8_t deviceFocused = 255;
|
||||||
|
uint8_t memory = 255;
|
||||||
} positions;
|
} positions;
|
||||||
|
|
||||||
uint8_t frameCount = 0;
|
uint8_t frameCount = 0;
|
||||||
} framesetInfo;
|
} framesetInfo;
|
||||||
|
|
||||||
|
struct DismissedFrames {
|
||||||
|
bool textMessage = false;
|
||||||
|
bool waypoint = false;
|
||||||
|
bool wifi = false;
|
||||||
|
bool memory = false;
|
||||||
|
} dismissedFrames;
|
||||||
|
|
||||||
// Which frame we want to be displayed, after we regen the frameset by calling setFrames
|
// Which frame we want to be displayed, after we regen the frameset by calling setFrames
|
||||||
enum FrameFocus : uint8_t {
|
enum FrameFocus : uint8_t {
|
||||||
FOCUS_DEFAULT, // No specific frame
|
FOCUS_DEFAULT, // No specific frame
|
||||||
|
Loading…
Reference in New Issue
Block a user