diff --git a/src/graphics/draw/MenuHandler.cpp b/src/graphics/draw/MenuHandler.cpp index a66ccd983..978700fd7 100644 --- a/src/graphics/draw/MenuHandler.cpp +++ b/src/graphics/draw/MenuHandler.cpp @@ -337,8 +337,8 @@ void menuHandler::homeBaseMenu() } else if (selected == Freetext) { cannedMessageModule->LaunchFreetextWithDestination(NODENUM_BROADCAST); } else if (selected == Bluetooth) { - InputEvent event = {.inputEvent = (input_broker_event)170, .kbchar = 170, .touchX = 0, .touchY = 0}; - inputBroker->injectInputEvent(&event); + menuQueue = bluetooth_toggle_menu; + screen->runNow(); } }; screen->showOverlayBanner(bannerOptions); @@ -587,6 +587,23 @@ void menuHandler::GPSToggleMenu() } #endif +void menuHandler::BluetoothToggleMenu() +{ + static const char *optionsArray[] = {"Back", "Enabled", "Disabled"}; + BannerOverlayOptions bannerOptions; + bannerOptions.message = "Toggle Bluetooth"; + bannerOptions.optionsArrayPtr = optionsArray; + bannerOptions.optionsCount = 3; + bannerOptions.bannerCallback = [](int selected) -> void { + if (selected == 1 || selected == 2) { + InputEvent event = {.inputEvent = (input_broker_event)170, .kbchar = 170, .touchX = 0, .touchY = 0}; + inputBroker->injectInputEvent(&event); + } + }; + bannerOptions.InitialSelected = config.bluetooth.enabled ? 1 : 2; + screen->showOverlayBanner(bannerOptions); +} + void menuHandler::BuzzerModeMenu() { static const char *optionsArray[] = {"All Enabled", "Disabled", "Notifications", "System Only"}; @@ -935,6 +952,9 @@ void menuHandler::handleMenuSwitch(OLEDDisplay *display) case wifi_toggle_menu: wifiToggleMenu(); break; + case bluetooth_toggle_menu: + BluetoothToggleMenu(); + break; } menuQueue = menu_none; } diff --git a/src/graphics/draw/MenuHandler.h b/src/graphics/draw/MenuHandler.h index 8824e38ed..d2169ca3c 100644 --- a/src/graphics/draw/MenuHandler.h +++ b/src/graphics/draw/MenuHandler.h @@ -25,7 +25,8 @@ class menuHandler remove_favorite, test_menu, number_test, - wifi_toggle_menu + wifi_toggle_menu, + bluetooth_toggle_menu }; static screenMenus menuQueue; @@ -55,6 +56,7 @@ class menuHandler static void numberTest(); static void wifiBaseMenu(); static void wifiToggleMenu(); + static void BluetoothToggleMenu(); }; } // namespace graphics \ No newline at end of file