Add channel name instead of channel slot

This commit is contained in:
HarukiToreda
2025-09-22 20:10:05 -04:00
parent abcc166f3a
commit 3d8b4a68b8
4 changed files with 28 additions and 12 deletions

View File

@@ -448,8 +448,13 @@ void menuHandler::messageViewModeMenu()
for (int ch = 0; ch < 8; ++ch) {
auto msgs = messageStore.getChannelMessages(ch);
if (!msgs.empty()) {
char buf[20];
snprintf(buf, sizeof(buf), "Channel %d", ch);
char buf[40];
const char* cname = channels.getName(ch);
if (cname && cname[0]) {
snprintf(buf, sizeof(buf), "#%s", cname);
} else {
snprintf(buf, sizeof(buf), "#Ch%d", ch);
}
labels.push_back(buf);
ids.push_back(100 + ch);
}
@@ -458,8 +463,13 @@ void menuHandler::messageViewModeMenu()
// --- Add channels from registry ---
for (int ch : graphics::MessageRenderer::getSeenChannels()) {
if (std::find(ids.begin(), ids.end(), 100 + ch) == ids.end()) {
char buf[20];
snprintf(buf, sizeof(buf), "Channel %d", ch);
char buf[40];
const char* cname = channels.getName(ch);
if (cname && cname[0]) {
snprintf(buf, sizeof(buf), "#%s", cname);
} else {
snprintf(buf, sizeof(buf), "#Ch%d", ch);
}
labels.push_back(buf);
ids.push_back(100 + ch);
}

View File

@@ -44,7 +44,7 @@ class menuHandler
throttle_message,
FrameToggles,
message_response_menu,
message_viewmode_menu // <-- View Mode menu entry
message_viewmode_menu
};
static screenMenus menuQueue;
@@ -59,7 +59,7 @@ class menuHandler
static void TwelveHourPicker();
static void ClockFacePicker();
static void messageResponseMenu();
static void messageViewModeMenu(); // <-- prototype already here
static void messageViewModeMenu();
static void homeBaseMenu();
static void textMessageBaseMenu();
static void systemBaseMenu();

View File

@@ -301,10 +301,16 @@ void drawTextMessageFrame(OLEDDisplay *display, OLEDDisplayUiState *state, int16
case ThreadMode::ALL:
titleStr = "Messages";
break;
case ThreadMode::CHANNEL:
snprintf(titleBuf, sizeof(titleBuf), "Ch%d", currentChannel);
case ThreadMode::CHANNEL: {
const char *cname = channels.getName(currentChannel);
if (cname && cname[0]) {
snprintf(titleBuf, sizeof(titleBuf), "#%s", cname);
} else {
snprintf(titleBuf, sizeof(titleBuf), "Ch%d", currentChannel);
}
titleStr = titleBuf;
break;
}
case ThreadMode::DIRECT: {
meshtastic_NodeInfoLite *node = nodeDB->getMeshNode(currentPeer);
if (node && node->has_user) {