|
|
|
|
@@ -20,8 +20,8 @@
|
|
|
|
|
#include "mesh/MeshTypes.h"
|
|
|
|
|
#include "modules/AdminModule.h"
|
|
|
|
|
#include "modules/CannedMessageModule.h"
|
|
|
|
|
#include "modules/ExternalNotificationModule.h"
|
|
|
|
|
#include "modules/KeyVerificationModule.h"
|
|
|
|
|
|
|
|
|
|
#include "modules/TraceRouteModule.h"
|
|
|
|
|
#include <algorithm>
|
|
|
|
|
#include <array>
|
|
|
|
|
@@ -843,12 +843,20 @@ void menuHandler::messageViewModeMenu()
|
|
|
|
|
|
|
|
|
|
void menuHandler::homeBaseMenu()
|
|
|
|
|
{
|
|
|
|
|
enum optionsNumbers { Back, Backlight, Position, Preset, Freetext, Sleep, enumEnd };
|
|
|
|
|
enum optionsNumbers { Back, Mute, Backlight, Position, Preset, Freetext, Sleep, enumEnd };
|
|
|
|
|
|
|
|
|
|
static const char *optionsArray[enumEnd] = {"Back"};
|
|
|
|
|
static int optionsEnumArray[enumEnd] = {Back};
|
|
|
|
|
int options = 1;
|
|
|
|
|
|
|
|
|
|
if (config.device.buzzer_mode != meshtastic_Config_DeviceConfig_BuzzerMode_DISABLED) {
|
|
|
|
|
if (!isMuted) {
|
|
|
|
|
optionsArray[options] = "Temporarily Mute";
|
|
|
|
|
} else {
|
|
|
|
|
optionsArray[options] = "Unmute";
|
|
|
|
|
}
|
|
|
|
|
optionsEnumArray[options++] = Mute;
|
|
|
|
|
}
|
|
|
|
|
#if defined(PIN_EINK_EN) || defined(PCA_PIN_EINK_EN)
|
|
|
|
|
optionsArray[options] = "Toggle Backlight";
|
|
|
|
|
optionsEnumArray[options++] = Backlight;
|
|
|
|
|
@@ -872,7 +880,14 @@ void menuHandler::homeBaseMenu()
|
|
|
|
|
bannerOptions.optionsEnumPtr = optionsEnumArray;
|
|
|
|
|
bannerOptions.optionsCount = options;
|
|
|
|
|
bannerOptions.bannerCallback = [](int selected) -> void {
|
|
|
|
|
if (selected == Backlight) {
|
|
|
|
|
if (selected == Mute) {
|
|
|
|
|
if (moduleConfig.external_notification.enabled && externalNotificationModule) {
|
|
|
|
|
bool isMuted = externalNotificationModule->getMute();
|
|
|
|
|
externalNotificationModule->setMute(!isMuted);
|
|
|
|
|
IF_SCREEN(graphics::isMuted = !isMuted; if (!isMuted) externalNotificationModule->stopNow();)
|
|
|
|
|
}
|
|
|
|
|
} else if (selected == Backlight) {
|
|
|
|
|
screen->setOn(false);
|
|
|
|
|
#if defined(PIN_EINK_EN)
|
|
|
|
|
if (uiconfig.screen_brightness == 1) {
|
|
|
|
|
uiconfig.screen_brightness = 0;
|
|
|
|
|
@@ -949,6 +964,7 @@ void menuHandler::systemBaseMenu()
|
|
|
|
|
|
|
|
|
|
optionsArray[options] = "Notifications";
|
|
|
|
|
optionsEnumArray[options++] = Notifications;
|
|
|
|
|
|
|
|
|
|
optionsArray[options] = "Display Options";
|
|
|
|
|
optionsEnumArray[options++] = ScreenOptions;
|
|
|
|
|
|
|
|
|
|
@@ -985,7 +1001,7 @@ void menuHandler::systemBaseMenu()
|
|
|
|
|
bannerOptions.optionsEnumPtr = optionsEnumArray;
|
|
|
|
|
bannerOptions.bannerCallback = [](int selected) -> void {
|
|
|
|
|
if (selected == Notifications) {
|
|
|
|
|
menuHandler::menuQueue = menuHandler::notifications_menu;
|
|
|
|
|
menuHandler::menuQueue = menuHandler::buzzermodemenupicker;
|
|
|
|
|
screen->runNow();
|
|
|
|
|
} else if (selected == ScreenOptions) {
|
|
|
|
|
menuHandler::menuQueue = menuHandler::screen_options_menu;
|
|
|
|
|
@@ -1604,9 +1620,9 @@ void menuHandler::BluetoothToggleMenu()
|
|
|
|
|
|
|
|
|
|
void menuHandler::BuzzerModeMenu()
|
|
|
|
|
{
|
|
|
|
|
static const char *optionsArray[] = {"All Enabled", "Disabled", "Notifications", "System Only", "DMs Only"};
|
|
|
|
|
static const char *optionsArray[] = {"All Enabled", "All Disabled", "Notifications", "System Only", "DMs Only"};
|
|
|
|
|
BannerOverlayOptions bannerOptions;
|
|
|
|
|
bannerOptions.message = "Buzzer Mode";
|
|
|
|
|
bannerOptions.message = "Notification Sounds";
|
|
|
|
|
bannerOptions.optionsArrayPtr = optionsArray;
|
|
|
|
|
bannerOptions.optionsCount = 5;
|
|
|
|
|
bannerOptions.bannerCallback = [](int selected) -> void {
|
|
|
|
|
@@ -1981,30 +1997,6 @@ void menuHandler::wifiToggleMenu()
|
|
|
|
|
screen->showOverlayBanner(bannerOptions);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void menuHandler::notificationsMenu()
|
|
|
|
|
{
|
|
|
|
|
enum optionsNumbers { Back, BuzzerActions };
|
|
|
|
|
static const char *optionsArray[] = {"Back", "Buzzer Actions"};
|
|
|
|
|
static int optionsEnumArray[] = {Back, BuzzerActions};
|
|
|
|
|
int options = 2;
|
|
|
|
|
|
|
|
|
|
BannerOverlayOptions bannerOptions;
|
|
|
|
|
bannerOptions.message = "Notifications";
|
|
|
|
|
bannerOptions.optionsArrayPtr = optionsArray;
|
|
|
|
|
bannerOptions.optionsCount = options;
|
|
|
|
|
bannerOptions.optionsEnumPtr = optionsEnumArray;
|
|
|
|
|
bannerOptions.bannerCallback = [](int selected) -> void {
|
|
|
|
|
if (selected == BuzzerActions) {
|
|
|
|
|
menuHandler::menuQueue = menuHandler::buzzermodemenupicker;
|
|
|
|
|
screen->runNow();
|
|
|
|
|
} else {
|
|
|
|
|
menuQueue = system_base_menu;
|
|
|
|
|
screen->runNow();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
screen->showOverlayBanner(bannerOptions);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void menuHandler::screenOptionsMenu()
|
|
|
|
|
{
|
|
|
|
|
// Check if brightness is supported
|
|
|
|
|
@@ -2422,9 +2414,6 @@ void menuHandler::handleMenuSwitch(OLEDDisplay *display)
|
|
|
|
|
case bluetooth_toggle_menu:
|
|
|
|
|
BluetoothToggleMenu();
|
|
|
|
|
break;
|
|
|
|
|
case notifications_menu:
|
|
|
|
|
notificationsMenu();
|
|
|
|
|
break;
|
|
|
|
|
case screen_options_menu:
|
|
|
|
|
screenOptionsMenu();
|
|
|
|
|
break;
|
|
|
|
|
|