mirror of
https://github.com/meshtastic/firmware.git
synced 2025-08-18 11:13:29 +00:00
Add onboard message for devices with screens (#7655)
* Add onboard message for devices with screens * Add message for TFT
This commit is contained in:
parent
c64c196778
commit
d538ad170c
@ -692,7 +692,7 @@ int32_t Screen::runOnce()
|
|||||||
|
|
||||||
#ifndef DISABLE_WELCOME_UNSET
|
#ifndef DISABLE_WELCOME_UNSET
|
||||||
if (!NotificationRenderer::isOverlayBannerShowing() && config.lora.region == meshtastic_Config_LoRaConfig_RegionCode_UNSET) {
|
if (!NotificationRenderer::isOverlayBannerShowing() && config.lora.region == meshtastic_Config_LoRaConfig_RegionCode_UNSET) {
|
||||||
menuHandler::LoraRegionPicker(0);
|
menuHandler::OnboardMessage();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (!NotificationRenderer::isOverlayBannerShowing() && rebootAtMsec != 0) {
|
if (!NotificationRenderer::isOverlayBannerShowing() && rebootAtMsec != 0) {
|
||||||
|
@ -26,6 +26,27 @@ menuHandler::screenMenus menuHandler::menuQueue = menu_none;
|
|||||||
bool test_enabled = false;
|
bool test_enabled = false;
|
||||||
uint8_t test_count = 0;
|
uint8_t test_count = 0;
|
||||||
|
|
||||||
|
void menuHandler::OnboardMessage()
|
||||||
|
{
|
||||||
|
static const char *optionsArray[] = {"OK", "Got it!"};
|
||||||
|
enum optionsNumbers { OK, got };
|
||||||
|
BannerOverlayOptions bannerOptions;
|
||||||
|
#if HAS_TFT
|
||||||
|
bannerOptions.message = "Welcome to Meshtastic!\nSwipe to navigate and\nlong press to select\nor open a menu.";
|
||||||
|
#elif defined(BUTTON_PIN)
|
||||||
|
bannerOptions.message = "Welcome to Meshtastic!\nClick to navigate and\nlong press to select\nor open a menu.";
|
||||||
|
#else
|
||||||
|
bannerOptions.message = "Welcome to Meshtastic!\nUse the Select button\nto open menus\nand make selections.";
|
||||||
|
#endif
|
||||||
|
bannerOptions.optionsArrayPtr = optionsArray;
|
||||||
|
bannerOptions.optionsCount = 2;
|
||||||
|
bannerOptions.bannerCallback = [](int selected) -> void {
|
||||||
|
menuHandler::menuQueue = menuHandler::no_timeout_lora_picker;
|
||||||
|
screen->runNow();
|
||||||
|
};
|
||||||
|
screen->showOverlayBanner(bannerOptions);
|
||||||
|
}
|
||||||
|
|
||||||
void menuHandler::LoraRegionPicker(uint32_t duration)
|
void menuHandler::LoraRegionPicker(uint32_t duration)
|
||||||
{
|
{
|
||||||
static const char *optionsArray[] = {"Back",
|
static const char *optionsArray[] = {"Back",
|
||||||
@ -1132,6 +1153,9 @@ void menuHandler::handleMenuSwitch(OLEDDisplay *display)
|
|||||||
case lora_picker:
|
case lora_picker:
|
||||||
LoraRegionPicker();
|
LoraRegionPicker();
|
||||||
break;
|
break;
|
||||||
|
case no_timeout_lora_picker:
|
||||||
|
LoraRegionPicker(0);
|
||||||
|
break;
|
||||||
case TZ_picker:
|
case TZ_picker:
|
||||||
TZPicker();
|
TZPicker();
|
||||||
break;
|
break;
|
||||||
|
@ -10,6 +10,7 @@ class menuHandler
|
|||||||
enum screenMenus {
|
enum screenMenus {
|
||||||
menu_none,
|
menu_none,
|
||||||
lora_picker,
|
lora_picker,
|
||||||
|
no_timeout_lora_picker,
|
||||||
TZ_picker,
|
TZ_picker,
|
||||||
twelve_hour_picker,
|
twelve_hour_picker,
|
||||||
clock_face_picker,
|
clock_face_picker,
|
||||||
@ -41,6 +42,7 @@ class menuHandler
|
|||||||
};
|
};
|
||||||
static screenMenus menuQueue;
|
static screenMenus menuQueue;
|
||||||
|
|
||||||
|
static void OnboardMessage();
|
||||||
static void LoraRegionPicker(uint32_t duration = 30000);
|
static void LoraRegionPicker(uint32_t duration = 30000);
|
||||||
static void handleMenuSwitch(OLEDDisplay *display);
|
static void handleMenuSwitch(OLEDDisplay *display);
|
||||||
static void showConfirmationBanner(const char *message, std::function<void()> onConfirm);
|
static void showConfirmationBanner(const char *message, std::function<void()> onConfirm);
|
||||||
|
@ -383,7 +383,9 @@ void NotificationRenderer::drawAlertBannerOverlay(OLEDDisplay *display, OLEDDisp
|
|||||||
|
|
||||||
uint8_t firstOptionToShow = 0;
|
uint8_t firstOptionToShow = 0;
|
||||||
if (alertBannerOptions > 0) {
|
if (alertBannerOptions > 0) {
|
||||||
if (curSelected > 1 && alertBannerOptions > visibleTotalLines - lineCount) {
|
if (visibleTotalLines - lineCount == 1) {
|
||||||
|
firstOptionToShow = curSelected;
|
||||||
|
} else if (curSelected > 1 && alertBannerOptions > visibleTotalLines - lineCount) {
|
||||||
if (curSelected > alertBannerOptions - visibleTotalLines + lineCount)
|
if (curSelected > alertBannerOptions - visibleTotalLines + lineCount)
|
||||||
firstOptionToShow = alertBannerOptions - visibleTotalLines + lineCount;
|
firstOptionToShow = alertBannerOptions - visibleTotalLines + lineCount;
|
||||||
else
|
else
|
||||||
@ -392,6 +394,9 @@ void NotificationRenderer::drawAlertBannerOverlay(OLEDDisplay *display, OLEDDisp
|
|||||||
firstOptionToShow = 0;
|
firstOptionToShow = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Useful log line for troubleshooting:
|
||||||
|
/* LOG_WARN("alertBannerOptions: %u, curSelected: %u, visibleTotalLines: %u, lineCount: %u, firstOptionToShow: %u",
|
||||||
|
alertBannerOptions, curSelected, visibleTotalLines, lineCount, firstOptionToShow); */
|
||||||
|
|
||||||
for (int i = firstOptionToShow; i < alertBannerOptions && linesShown < visibleTotalLines; i++, linesShown++) {
|
for (int i = firstOptionToShow; i < alertBannerOptions && linesShown < visibleTotalLines; i++, linesShown++) {
|
||||||
if (i == curSelected) {
|
if (i == curSelected) {
|
||||||
|
Loading…
Reference in New Issue
Block a user