mirror of
https://github.com/meshtastic/firmware.git
synced 2025-12-18 00:32:38 +00:00
Merge branch 'develop' into multi-message-Storage
This commit is contained in:
@@ -1009,6 +1009,31 @@ void menuHandler::nodeListMenu()
|
|||||||
screen->showOverlayBanner(bannerOptions);
|
screen->showOverlayBanner(bannerOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void menuHandler::nodeNameLengthMenu()
|
||||||
|
{
|
||||||
|
enum OptionsNumbers { Back, Long, Short };
|
||||||
|
static const char *optionsArray[] = {"Back", "Long", "Short"};
|
||||||
|
BannerOverlayOptions bannerOptions;
|
||||||
|
bannerOptions.message = "Node Name Length";
|
||||||
|
bannerOptions.optionsArrayPtr = optionsArray;
|
||||||
|
bannerOptions.optionsCount = 3;
|
||||||
|
bannerOptions.bannerCallback = [](int selected) -> void {
|
||||||
|
if (selected == Long) {
|
||||||
|
// Set names to long
|
||||||
|
LOG_INFO("Setting names to long");
|
||||||
|
config.display.use_long_node_name = true;
|
||||||
|
} else if (selected == Short) {
|
||||||
|
// Set names to short
|
||||||
|
LOG_INFO("Setting names to short");
|
||||||
|
config.display.use_long_node_name = false;
|
||||||
|
} else if (selected == Back) {
|
||||||
|
menuQueue = screen_options_menu;
|
||||||
|
screen->runNow();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
screen->showOverlayBanner(bannerOptions);
|
||||||
|
}
|
||||||
|
|
||||||
void menuHandler::resetNodeDBMenu()
|
void menuHandler::resetNodeDBMenu()
|
||||||
{
|
{
|
||||||
static const char *optionsArray[] = {"Back", "Confirm"};
|
static const char *optionsArray[] = {"Back", "Confirm"};
|
||||||
@@ -1552,11 +1577,16 @@ void menuHandler::screenOptionsMenu()
|
|||||||
hasSupportBrightness = false;
|
hasSupportBrightness = false;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
enum optionsNumbers { Back, Brightness, ScreenColor };
|
enum optionsNumbers { Back, NodeNameLength, Brightness, ScreenColor };
|
||||||
static const char *optionsArray[4] = {"Back"};
|
static const char *optionsArray[5] = {"Back"};
|
||||||
static int optionsEnumArray[4] = {Back};
|
static int optionsEnumArray[5] = {Back};
|
||||||
int options = 1;
|
int options = 1;
|
||||||
|
|
||||||
|
#if defined(T_DECK) || defined(T_LORA_PAGER)
|
||||||
|
optionsArray[options] = "Show Long/Short Name";
|
||||||
|
optionsEnumArray[options++] = NodeNameLength;
|
||||||
|
#endif
|
||||||
|
|
||||||
// Only show brightness for B&W displays
|
// Only show brightness for B&W displays
|
||||||
if (hasSupportBrightness) {
|
if (hasSupportBrightness) {
|
||||||
optionsArray[options] = "Brightness";
|
optionsArray[options] = "Brightness";
|
||||||
@@ -1581,6 +1611,9 @@ void menuHandler::screenOptionsMenu()
|
|||||||
} else if (selected == ScreenColor) {
|
} else if (selected == ScreenColor) {
|
||||||
menuHandler::menuQueue = menuHandler::tftcolormenupicker;
|
menuHandler::menuQueue = menuHandler::tftcolormenupicker;
|
||||||
screen->runNow();
|
screen->runNow();
|
||||||
|
} else if (selected == NodeNameLength) {
|
||||||
|
menuHandler::menuQueue = menuHandler::node_name_length_menu;
|
||||||
|
screen->runNow();
|
||||||
} else {
|
} else {
|
||||||
menuQueue = system_base_menu;
|
menuQueue = system_base_menu;
|
||||||
screen->runNow();
|
screen->runNow();
|
||||||
@@ -1858,6 +1891,9 @@ void menuHandler::handleMenuSwitch(OLEDDisplay *display)
|
|||||||
case brightness_picker:
|
case brightness_picker:
|
||||||
BrightnessPickerMenu();
|
BrightnessPickerMenu();
|
||||||
break;
|
break;
|
||||||
|
case node_name_length_menu:
|
||||||
|
nodeNameLengthMenu();
|
||||||
|
break;
|
||||||
case reboot_menu:
|
case reboot_menu:
|
||||||
rebootMenu();
|
rebootMenu();
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ class menuHandler
|
|||||||
FrameToggles,
|
FrameToggles,
|
||||||
message_response_menu,
|
message_response_menu,
|
||||||
message_viewmode_menu
|
message_viewmode_menu
|
||||||
|
node_name_length_menu
|
||||||
};
|
};
|
||||||
static screenMenus menuQueue;
|
static screenMenus menuQueue;
|
||||||
|
|
||||||
@@ -88,6 +89,7 @@ class menuHandler
|
|||||||
static void notificationsMenu();
|
static void notificationsMenu();
|
||||||
static void screenOptionsMenu();
|
static void screenOptionsMenu();
|
||||||
static void powerMenu();
|
static void powerMenu();
|
||||||
|
static void nodeNameLengthMenu();
|
||||||
static void FrameToggles_menu();
|
static void FrameToggles_menu();
|
||||||
static void textMessageMenu();
|
static void textMessageMenu();
|
||||||
|
|
||||||
|
|||||||
@@ -55,26 +55,32 @@ static int scrollIndex = 0;
|
|||||||
|
|
||||||
const char *getSafeNodeName(meshtastic_NodeInfoLite *node)
|
const char *getSafeNodeName(meshtastic_NodeInfoLite *node)
|
||||||
{
|
{
|
||||||
|
const char *name = NULL;
|
||||||
static char nodeName[16] = "?";
|
static char nodeName[16] = "?";
|
||||||
|
if (config.display.use_long_node_name == true) {
|
||||||
|
if (node->has_user && strlen(node->user.long_name) > 0) {
|
||||||
|
name = node->user.long_name;
|
||||||
|
} else {
|
||||||
|
snprintf(nodeName, sizeof(nodeName), "(%04X)", (uint16_t)(node->num & 0xFFFF));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
if (node->has_user && strlen(node->user.short_name) > 0) {
|
if (node->has_user && strlen(node->user.short_name) > 0) {
|
||||||
bool valid = true;
|
name = node->user.short_name;
|
||||||
const char *name = node->user.short_name;
|
} else {
|
||||||
for (size_t i = 0; i < strlen(name); i++) {
|
snprintf(nodeName, sizeof(nodeName), "(%04X)", (uint16_t)(node->num & 0xFFFF));
|
||||||
uint8_t c = (uint8_t)name[i];
|
|
||||||
if (c < 32 || c > 126) {
|
|
||||||
valid = false;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (valid) {
|
|
||||||
strncpy(nodeName, name, sizeof(nodeName) - 1);
|
// Use sanitizeString() function and copy directly into nodeName
|
||||||
|
std::string sanitized_name = sanitizeString(name ? name : "");
|
||||||
|
|
||||||
|
if (!sanitized_name.empty()) {
|
||||||
|
strncpy(nodeName, sanitized_name.c_str(), sizeof(nodeName) - 1);
|
||||||
nodeName[sizeof(nodeName) - 1] = '\0';
|
nodeName[sizeof(nodeName) - 1] = '\0';
|
||||||
} else {
|
} else {
|
||||||
snprintf(nodeName, sizeof(nodeName), "(%04X)", (uint16_t)(node->num & 0xFFFF));
|
snprintf(nodeName, sizeof(nodeName), "(%04X)", (uint16_t)(node->num & 0xFFFF));
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
snprintf(nodeName, sizeof(nodeName), "(%04X)", (uint16_t)(node->num & 0xFFFF));
|
|
||||||
}
|
|
||||||
return nodeName;
|
return nodeName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user