Add a WiFi menu that can toggle back to Bluetooth (#7226)

* Add Kazakhstan to the BaseUI LoRa chooser

* Add a WiFi menu that can toggle back to Bluetooth
This commit is contained in:
Jonathan Bennett 2025-07-04 05:30:56 -05:00 committed by GitHub
parent abbeb4874d
commit f35ca812a3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 47 additions and 3 deletions

View File

@ -1373,6 +1373,8 @@ int Screen::handleInputEvent(const InputEvent *event)
this->ui->getUiState()->currentFrame == framesetInfo.positions.nodelist_hopsignal ||
this->ui->getUiState()->currentFrame == framesetInfo.positions.nodelist_bearings) {
menuHandler::nodeListMenu();
} else if (this->ui->getUiState()->currentFrame == framesetInfo.positions.wifi) {
menuHandler::wifiBaseMenu();
}
} else if (event->inputEvent == INPUT_BROKER_BACK) {
showPrevFrame();

View File

@ -831,6 +831,44 @@ void menuHandler::numberTest()
[](int number_picked) -> void { LOG_WARN("Nodenum: %u", number_picked); });
}
void menuHandler::wifiBaseMenu()
{
enum optionsNumbers { Back, Wifi_toggle };
static const char *optionsArray[] = {"Back", "WiFi Toggle"};
BannerOverlayOptions bannerOptions;
bannerOptions.message = "WiFi Menu";
bannerOptions.optionsArrayPtr = optionsArray;
bannerOptions.optionsCount = 2;
bannerOptions.bannerCallback = [](int selected) -> void {
if (selected == Wifi_toggle) {
menuQueue = wifi_toggle_menu;
screen->runNow();
}
};
screen->showOverlayBanner(bannerOptions);
}
void menuHandler::wifiToggleMenu()
{
enum optionsNumbers { Back, Wifi_toggle };
static const char *optionsArray[] = {"Back", "Disable"};
BannerOverlayOptions bannerOptions;
bannerOptions.message = "Disable Wifi and\nEnable Bluetooth?";
bannerOptions.optionsArrayPtr = optionsArray;
bannerOptions.optionsCount = 2;
bannerOptions.bannerCallback = [](int selected) -> void {
if (selected == Wifi_toggle) {
config.network.wifi_enabled = false;
config.bluetooth.enabled = true;
service->reloadConfig(SEGMENT_CONFIG);
rebootAtMsec = (millis() + DEFAULT_REBOOT_SECONDS * 1000);
}
};
screen->showOverlayBanner(bannerOptions);
}
void menuHandler::handleMenuSwitch(OLEDDisplay *display)
{
if (menuQueue != menu_none)
@ -894,6 +932,9 @@ void menuHandler::handleMenuSwitch(OLEDDisplay *display)
case number_test:
numberTest();
break;
case wifi_toggle_menu:
wifiToggleMenu();
break;
}
menuQueue = menu_none;
}

View File

@ -13,9 +13,7 @@ class menuHandler
clock_face_picker,
clock_menu,
position_base_menu,
#if !MESHTASTIC_EXCLUDE_GPS
gps_toggle_menu,
#endif
compass_point_north_menu,
reset_node_db_menu,
buzzermodemenupicker,
@ -26,7 +24,8 @@ class menuHandler
add_favorite,
remove_favorite,
test_menu,
number_test
number_test,
wifi_toggle_menu
};
static screenMenus menuQueue;
@ -54,6 +53,8 @@ class menuHandler
static void removeFavoriteMenu();
static void testMenu();
static void numberTest();
static void wifiBaseMenu();
static void wifiToggleMenu();
};
} // namespace graphics