mirror of
https://github.com/pelgraine/Meck.git
synced 2026-08-09 10:12:42 +02:00
T-Decks Pro & Max: reverted back to Q to exit in most instances (not involving text entry, where it remains sh+del to exit)
This commit is contained in:
@@ -4953,7 +4953,7 @@ void handleKeyboardInput() {
|
||||
// - Playing: navigate home, audio continues in background
|
||||
// - Paused/stopped: close book, return to file list
|
||||
// - File list: exit player entirely
|
||||
if (key == KEY_CANCEL) {
|
||||
if (key == KEY_CANCEL || key == 'q') {
|
||||
if (abPlayer->isBookOpen()) {
|
||||
if (abPlayer->isAudioActive()) {
|
||||
// Audio is playing -- leave screen, audio continues via audioTick()
|
||||
@@ -4997,6 +4997,8 @@ void handleKeyboardInput() {
|
||||
ui_task.forceRefresh();
|
||||
return;
|
||||
}
|
||||
// 'q' = back/cancel in every voice mode (no text entry here); treat as Shift+Del.
|
||||
if (key == 'q') key = KEY_CANCEL;
|
||||
// Shift+Del from message list exits voice screen
|
||||
if (key == KEY_CANCEL && voiceScr->getMode() == VoiceMessageScreen::MESSAGE_LIST) {
|
||||
Serial.println("Exiting voice message screen");
|
||||
@@ -5017,7 +5019,7 @@ void handleKeyboardInput() {
|
||||
|
||||
// Shift+Del: if reading, reader handles it (close book -> file list)
|
||||
// if on file list, exit reader entirely
|
||||
if (key == KEY_CANCEL) {
|
||||
if (key == KEY_CANCEL || key == 'q') {
|
||||
if (reader->isReading()) {
|
||||
// Let the reader handle Shift+Del (close book, go to file list)
|
||||
ui_task.injectKey(KEY_CANCEL);
|
||||
@@ -5167,7 +5169,7 @@ void handleKeyboardInput() {
|
||||
SettingsScreen* settings = (SettingsScreen*)ui_task.getSettingsScreen();
|
||||
|
||||
// Shift+Del: exit settings (when not editing)
|
||||
if (!settings->isEditing() && (key == KEY_CANCEL)) {
|
||||
if (!settings->isEditing() && (key == KEY_CANCEL || key == 'q')) {
|
||||
if (settings->hasRadioChanges()) {
|
||||
// Let settings show "apply changes?" confirm dialog
|
||||
ui_task.injectKey(key);
|
||||
@@ -5308,7 +5310,7 @@ void handleKeyboardInput() {
|
||||
|
||||
// In category menu (top level): Shift+Del exits, C opens compose
|
||||
if (astate == RepeaterAdminScreen::STATE_CATEGORY_MENU) {
|
||||
if (shiftDel) {
|
||||
if (shiftDel || key == 'q') {
|
||||
exitAdmin();
|
||||
return;
|
||||
}
|
||||
@@ -5331,7 +5333,7 @@ void handleKeyboardInput() {
|
||||
// All other states (command menu, param entry, confirm, waiting,
|
||||
// response, error): convert Shift+Del to exit signal and let the
|
||||
// screen handle back-navigation internally
|
||||
if (shiftDel) {
|
||||
if (shiftDel || (key == 'q' && astate != RepeaterAdminScreen::STATE_PARAM_ENTRY)) {
|
||||
ui_task.injectKey(KEY_ADMIN_EXIT);
|
||||
} else {
|
||||
ui_task.injectKey(key);
|
||||
@@ -5360,7 +5362,7 @@ void handleKeyboardInput() {
|
||||
}
|
||||
|
||||
// Shift+Del from app menu -> go home; Shift+Del from inner views is handled by SMSScreen
|
||||
if ((key == KEY_CANCEL) && smsScr->getSubView() == SMSScreen::APP_MENU) {
|
||||
if ((key == KEY_CANCEL || key == 'q') && smsScr->getSubView() == SMSScreen::APP_MENU) {
|
||||
Serial.println("Nav: SMS -> Home");
|
||||
ui_task.gotoHomeScreen();
|
||||
return;
|
||||
@@ -5439,7 +5441,7 @@ void handleKeyboardInput() {
|
||||
webReaderTextEntry = false;
|
||||
|
||||
// Shift+Del from HOME mode exits the web reader entirely (like text reader)
|
||||
if ((key == KEY_CANCEL) && wr && wr->isHome() && !wr->isUrlEditing() && !wr->isSearchEditing()) {
|
||||
if ((key == KEY_CANCEL || key == 'q') && wr && wr->isHome() && !wr->isUrlEditing() && !wr->isSearchEditing()) {
|
||||
Serial.println("Exiting web reader");
|
||||
ui_task.gotoHomeScreen();
|
||||
return;
|
||||
@@ -6146,6 +6148,7 @@ void handleKeyboardInput() {
|
||||
}
|
||||
break;
|
||||
|
||||
case 'q':
|
||||
case KEY_CANCEL:
|
||||
// If channel screen reply select or path overlay is showing, dismiss it
|
||||
if (ui_task.isOnChannelScreen()) {
|
||||
|
||||
@@ -520,7 +520,7 @@ private:
|
||||
display.print(line2);
|
||||
}
|
||||
|
||||
drawFooter(display, "O:On/Off Enter:Edit", "Sh+Del:X");
|
||||
drawFooter(display, "O:On/Off Enter:Edit", "Q:X");
|
||||
}
|
||||
|
||||
// ---- Render: Edit alarm ----
|
||||
@@ -649,7 +649,7 @@ private:
|
||||
|
||||
drawFooter(display, "Type digits", "Enter:OK Sh+Del:Cancel");
|
||||
} else {
|
||||
drawFooter(display, "A/D:Adjust Enter:Type", "Sh+Del:Save");
|
||||
drawFooter(display, "A/D:Adjust Enter:Type", "Q:Save");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -671,7 +671,7 @@ private:
|
||||
display.print("Place 44kHz .mp3 in");
|
||||
display.setCursor(0, 38);
|
||||
display.print("/alarms/ on SD card");
|
||||
drawFooter(display, "0 files", "Sh+Del:Back");
|
||||
drawFooter(display, "0 files", "Q:Back");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -715,7 +715,7 @@ private:
|
||||
|
||||
char countBuf[12];
|
||||
snprintf(countBuf, sizeof(countBuf), "%d files", (int)_soundFiles.size());
|
||||
drawFooter(display, countBuf, "Enter:Pick Sh+Del:X");
|
||||
drawFooter(display, countBuf, "Enter:Pick Q:X");
|
||||
}
|
||||
|
||||
// ---- Render: Ringing ----
|
||||
@@ -945,7 +945,7 @@ private:
|
||||
}
|
||||
|
||||
// Shift+Del - save and exit edit
|
||||
if (c == KEY_CANCEL) {
|
||||
if (c == KEY_CANCEL || c == 'q') {
|
||||
memcpy(&_config.slots[_editSlot], &_editCopy, sizeof(AlarmSlot));
|
||||
saveConfig();
|
||||
_mode = ALARM_LIST;
|
||||
@@ -988,7 +988,7 @@ private:
|
||||
}
|
||||
|
||||
// Shift+Del - cancel
|
||||
if (c == KEY_CANCEL) {
|
||||
if (c == KEY_CANCEL || c == 'q') {
|
||||
_mode = EDIT_ALARM;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1279,7 +1279,7 @@ private:
|
||||
display.setCursor(0, 38);
|
||||
display.print("/audiobooks/ on SD");
|
||||
|
||||
drawFooter(display, "0 files", "Sh+Del:Back");
|
||||
drawFooter(display, "0 files", "Q:Back");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1505,7 +1505,7 @@ private:
|
||||
|
||||
// ---- Footer Nav Bar ----
|
||||
{
|
||||
const char* rightText = (_isPlaying && !_isPaused) ? "Sh+Del:Leave" : "Sh+Del:Close";
|
||||
const char* rightText = (_isPlaying && !_isPaused) ? "Q:Leave" : "Q:Close";
|
||||
if (_playlist.size() > 1) {
|
||||
drawFooter(display, "A/D:Seek N:Next", rightText);
|
||||
} else {
|
||||
|
||||
@@ -379,7 +379,7 @@ public:
|
||||
#if defined(LilyGo_T5S3_EPaper_Pro)
|
||||
const char* hints = "Tap:Yes Boot:Cancel";
|
||||
#else
|
||||
const char* hints = "Enter:Yes Sh+Del:Cancel";
|
||||
const char* hints = "Enter:Yes Q:Cancel";
|
||||
#endif
|
||||
display.setCursor(boxX + 4, boxY + 29);
|
||||
display.print(hints);
|
||||
@@ -411,9 +411,9 @@ public:
|
||||
display.print(rt);
|
||||
#else
|
||||
if (_confirmDelete) {
|
||||
display.print("Enter:Yes Sh+Del:Cancel");
|
||||
display.print("Enter:Yes Q:Cancel");
|
||||
} else {
|
||||
display.print("W/S:Nav Sh+Del:X");
|
||||
display.print("W/S:Nav Q:X");
|
||||
const char* rt = "Ent:Open";
|
||||
display.setCursor(display.width() - display.getTextWidth(rt) - 2, footerY);
|
||||
display.print(rt);
|
||||
|
||||
@@ -1005,7 +1005,7 @@ public:
|
||||
display.print(rtInbox);
|
||||
#else
|
||||
display.setCursor(0, footerY);
|
||||
display.print("Sh+Del:Bck");
|
||||
display.print("Q:Bck");
|
||||
const char* rtInbox = "Ent:Open";
|
||||
display.setCursor(display.width() - display.getTextWidth(rtInbox) - 2, footerY);
|
||||
display.print(rtInbox);
|
||||
@@ -1206,7 +1206,7 @@ public:
|
||||
display.print("Back");
|
||||
const char* copyHint = "Tap:Dismiss";
|
||||
#else
|
||||
display.print("Sh+Del:Back");
|
||||
display.print("Q:Back");
|
||||
// Show scroll hint if path is scrollable
|
||||
if (msg && (msg->path_len & 63) > _pathHopsVisible && msg->path_len != 0xFF) {
|
||||
const char* scrollHint = "W/S:Scrl";
|
||||
@@ -1238,7 +1238,7 @@ public:
|
||||
#if defined(LilyGo_T5S3_EPaper_Pro)
|
||||
display.print("Hold: Compose reply");
|
||||
#else
|
||||
display.print("Sh+Del: Back to inbox");
|
||||
display.print("Q: Back to inbox");
|
||||
display.setCursor(0, 40);
|
||||
display.print("Ent: Compose reply");
|
||||
#endif
|
||||
@@ -1758,21 +1758,21 @@ public:
|
||||
#else
|
||||
// Left side: abbreviated controls
|
||||
if (_replySelectMode) {
|
||||
display.print("W/S:Sel V:Pth Sh+Del:X");
|
||||
display.print("W/S:Sel V:Pth Q:X");
|
||||
const char* rightText = "Ent:Reply";
|
||||
display.setCursor(display.width() - display.getTextWidth(rightText) - 2, footerY);
|
||||
display.print(rightText);
|
||||
} else if (_viewChannelIdx == 0xFF) {
|
||||
if (_dmContactPerms > 0) {
|
||||
display.print("Sh+Del:Exit L:Admin");
|
||||
display.print("Q:Exit L:Admin");
|
||||
} else {
|
||||
display.print("Sh+Del:Exit");
|
||||
display.print("Q:Exit");
|
||||
}
|
||||
const char* rightText = "Ent:Reply";
|
||||
display.setCursor(display.width() - display.getTextWidth(rightText) - 2, footerY);
|
||||
display.print(rightText);
|
||||
} else {
|
||||
display.print("Sh+Del:Bck R:Rply");
|
||||
display.print("Q:Bck R:Rply");
|
||||
const char* rightText = "Ent:New";
|
||||
display.setCursor(display.width() - display.getTextWidth(rightText) - 2, footerY);
|
||||
display.print(rightText);
|
||||
|
||||
@@ -116,7 +116,7 @@ public:
|
||||
#if defined(LilyGo_T5S3_EPaper_Pro)
|
||||
display.print("Long press: Rescan");
|
||||
#else
|
||||
display.print("F: Scan again Sh+Del: Back");
|
||||
display.print("F: Scan again Q: Back");
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
@@ -218,7 +218,7 @@ public:
|
||||
display.setCursor(display.width() - display.getTextWidth(right) - 2, footerY);
|
||||
display.print(right);
|
||||
#else
|
||||
display.print("Sh+Del:X F:Scan");
|
||||
display.print("Q:X F:Scan");
|
||||
|
||||
const char* right = "Tap/Ent:Add";
|
||||
display.setCursor(display.width() - display.getTextWidth(right) - 2, footerY);
|
||||
|
||||
@@ -136,7 +136,7 @@ public:
|
||||
display.print("Swipe:Pick");
|
||||
const char* rt = "Boot:Back Tap:Apply";
|
||||
#else
|
||||
display.print("W/S:Pick Sh+Del:Back");
|
||||
display.print("W/S:Pick Q:Back");
|
||||
const char* rt = "Enter:Apply";
|
||||
#endif
|
||||
display.setCursor(display.width() - display.getTextWidth(rt) - 2, footerY);
|
||||
@@ -183,7 +183,7 @@ public:
|
||||
}
|
||||
|
||||
// Shift+Del - cancel, restore original style
|
||||
if (c == KEY_CANCEL) {
|
||||
if (c == KEY_CANCEL || c == 'q') {
|
||||
_prefs->ui_font_style = _originalStyle;
|
||||
_wantExit = true;
|
||||
return true;
|
||||
|
||||
@@ -145,7 +145,7 @@ public:
|
||||
int fy = display.height() - 12;
|
||||
display.drawRect(0, fy - 2, display.width(), 1);
|
||||
display.setCursor(2, fy);
|
||||
display.print("Enter:Play Sh+Del:Back");
|
||||
display.print("Enter:Play Q:Back");
|
||||
#endif
|
||||
|
||||
return 5000; // Static menu -- slow refresh
|
||||
|
||||
@@ -213,7 +213,7 @@ public:
|
||||
display.setCursor(display.width() - display.getTextWidth(right) - 2, footerY);
|
||||
display.print(right);
|
||||
#else
|
||||
display.print("Sh+Del:Bk");
|
||||
display.print("Q:Bk");
|
||||
const char* right = "Tap/Ent:Add/Del";
|
||||
display.setCursor(display.width() - display.getTextWidth(right) - 2, footerY);
|
||||
display.print(right);
|
||||
|
||||
@@ -431,7 +431,7 @@ public:
|
||||
int fy = display.height() - 12;
|
||||
display.drawRect(0, fy - 2, display.width(), 1);
|
||||
display.setCursor(2, fy);
|
||||
display.print("Enter:Start Sh+Del:Back");
|
||||
display.print("Enter:Start Q:Back");
|
||||
#endif
|
||||
return 5000;
|
||||
|
||||
@@ -487,7 +487,7 @@ public:
|
||||
}
|
||||
ty += 16;
|
||||
display.setColor(DisplayDriver::GREEN);
|
||||
display.drawTextCentered(cx, ty, "Enter:Retry Sh+Del:Back");
|
||||
display.drawTextCentered(cx, ty, "Enter:Retry Q:Back");
|
||||
|
||||
return 5000;
|
||||
}
|
||||
|
||||
@@ -397,7 +397,7 @@ public:
|
||||
display.print(right);
|
||||
#else
|
||||
display.setCursor(0, footerY);
|
||||
display.print("Sh+Del:Bk W/S:Nav");
|
||||
display.print("Q:Bk W/S:Nav");
|
||||
const char* right = "Enter:Sel";
|
||||
display.setCursor(display.width() - display.getTextWidth(right) - 2, footerY);
|
||||
display.print(right);
|
||||
@@ -486,7 +486,7 @@ public:
|
||||
display.print(right);
|
||||
#else
|
||||
display.setCursor(0, footerY);
|
||||
display.print("Sh+Del:Cancel W/S:Scroll");
|
||||
display.print("Q:Cancel W/S:Scroll");
|
||||
const char* right = "Enter:Add";
|
||||
display.setCursor(display.width() - display.getTextWidth(right) - 2, footerY);
|
||||
display.print(right);
|
||||
|
||||
@@ -657,7 +657,7 @@ public:
|
||||
#if defined(LilyGo_T5S3_EPaper_Pro)
|
||||
display.print("Boot:Cancel");
|
||||
#else
|
||||
display.print("Sh+Del:Cancel");
|
||||
display.print("Q:Cancel");
|
||||
#endif
|
||||
break;
|
||||
|
||||
@@ -668,8 +668,8 @@ public:
|
||||
#elif defined(MECK_TWATCH)
|
||||
display.print("Long Press: Select");
|
||||
#else
|
||||
display.print("Sh+Del:Exit");
|
||||
renderFooterMidRight(display, footerY, "Sh+Del:Exit", "Ent:Open", "W/S:Sel");
|
||||
display.print("Q:Exit");
|
||||
renderFooterMidRight(display, footerY, "Q:Exit", "Ent:Open", "W/S:Sel");
|
||||
#endif
|
||||
break;
|
||||
|
||||
@@ -680,8 +680,8 @@ public:
|
||||
#elif defined(MECK_TWATCH)
|
||||
display.print("Long Press: Run");
|
||||
#else
|
||||
display.print("Sh+Del:Back");
|
||||
renderFooterMidRight(display, footerY, "Sh+Del:Back", "Ent:Run", "W/S:Sel");
|
||||
display.print("Q:Back");
|
||||
renderFooterMidRight(display, footerY, "Q:Back", "Ent:Run", "W/S:Sel");
|
||||
#endif
|
||||
break;
|
||||
|
||||
@@ -702,7 +702,7 @@ public:
|
||||
display.print("Boot:No");
|
||||
renderFooterRight(display, footerY, "Tap:Yes");
|
||||
#else
|
||||
display.print("Sh+Del:No");
|
||||
display.print("Q:No");
|
||||
renderFooterRight(display, footerY, "Ent:Yes");
|
||||
#endif
|
||||
break;
|
||||
@@ -715,7 +715,7 @@ public:
|
||||
renderFooterRight(display, footerY, "Swipe:Scroll");
|
||||
}
|
||||
#else
|
||||
display.print("Sh+Del:Back");
|
||||
display.print("Q:Back");
|
||||
if (_responseTotalLines > bodyHeight / 9) {
|
||||
renderFooterRight(display, footerY, "W/S:Scrll");
|
||||
}
|
||||
@@ -1095,7 +1095,7 @@ private:
|
||||
#if defined(LilyGo_T5S3_EPaper_Pro)
|
||||
display.print("Tap=Yes Back=No");
|
||||
#else
|
||||
display.print("Enter=Yes Sh+Del=No");
|
||||
display.print("Enter=Yes Q=No");
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -196,7 +196,7 @@ public:
|
||||
#if defined(LilyGo_T5S3_EPaper_Pro)
|
||||
display.print("Swipe:Scroll");
|
||||
#else
|
||||
display.print("Sh+Del:Bk W/S:Scroll");
|
||||
display.print("Q:Bk W/S:Scroll");
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
@@ -385,7 +385,7 @@ public:
|
||||
display.drawRect(0, footerY - 2, display.width(), 1);
|
||||
display.setColor(DisplayDriver::YELLOW);
|
||||
display.setCursor(0, footerY);
|
||||
display.print("Sh+Del:Back");
|
||||
display.print("Q:Back");
|
||||
const char* rt = "Ent:Open";
|
||||
display.setCursor(display.width() - display.getTextWidth(rt) - 2, footerY);
|
||||
display.print(rt);
|
||||
@@ -620,7 +620,7 @@ public:
|
||||
display.drawRect(0, footerY - 2, display.width(), 1);
|
||||
display.setColor(DisplayDriver::YELLOW);
|
||||
display.setCursor(0, footerY);
|
||||
display.print("Sh+Del:Back");
|
||||
display.print("Q:Back");
|
||||
const char* mid = "D:Contacts";
|
||||
display.setCursor((display.width() - display.getTextWidth(mid)) / 2, footerY);
|
||||
display.print(mid);
|
||||
@@ -734,7 +734,7 @@ public:
|
||||
display.drawRect(0, footerY - 2, display.width(), 1);
|
||||
display.setColor(DisplayDriver::YELLOW);
|
||||
display.setCursor(0, footerY);
|
||||
display.print("Sh+Del:Bk A:Add Contact");
|
||||
display.print("Q:Bk A:Add Contact");
|
||||
const char* rt = "C:Reply";
|
||||
display.setCursor(display.width() - display.getTextWidth(rt) - 2, footerY);
|
||||
display.print(rt);
|
||||
@@ -887,7 +887,7 @@ public:
|
||||
display.drawRect(0, footerY - 2, display.width(), 1);
|
||||
display.setColor(DisplayDriver::YELLOW);
|
||||
display.setCursor(0, footerY);
|
||||
display.print("Sh+Del:Back");
|
||||
display.print("Q:Back");
|
||||
const char* rt = "Ent:SMS F:Call";
|
||||
display.setCursor(display.width() - display.getTextWidth(rt) - 2, footerY);
|
||||
display.print(rt);
|
||||
@@ -1343,6 +1343,7 @@ public:
|
||||
_view = CONTACTS;
|
||||
return true;
|
||||
|
||||
case 'q':
|
||||
case KEY_CANCEL: // Back to app menu
|
||||
_view = APP_MENU;
|
||||
_menuCursor = 0;
|
||||
@@ -1399,6 +1400,7 @@ public:
|
||||
return true;
|
||||
}
|
||||
|
||||
case 'q':
|
||||
case KEY_CANCEL: // Back to inbox
|
||||
refreshInbox();
|
||||
_view = INBOX;
|
||||
@@ -1527,6 +1529,7 @@ public:
|
||||
}
|
||||
return true;
|
||||
|
||||
case 'q':
|
||||
case KEY_CANCEL: // Back to inbox
|
||||
refreshInbox();
|
||||
_view = INBOX;
|
||||
|
||||
@@ -2427,7 +2427,7 @@ public:
|
||||
#if defined(LilyGo_T5S3_EPaper_Pro)
|
||||
display.drawTextCentered(display.width() / 2, by + bh - 14, "Tap:Yes Boot:No");
|
||||
#else
|
||||
display.drawTextCentered(display.width() / 2, by + bh - 14, "Enter:Yes Sh+Del:No");
|
||||
display.drawTextCentered(display.width() / 2, by + bh - 14, "Enter:Yes Q:No");
|
||||
#endif
|
||||
display.setTextSize(1);
|
||||
}
|
||||
@@ -2509,7 +2509,7 @@ public:
|
||||
display.print("Tap:Pick Boot:Back");
|
||||
#else
|
||||
display.setCursor(bx + 4, fy);
|
||||
display.print("Enter:Pick Sh+Del:Back");
|
||||
display.print("Enter:Pick Q:Back");
|
||||
#endif
|
||||
|
||||
// Scroll indicator
|
||||
@@ -2848,7 +2848,7 @@ public:
|
||||
#if defined(LilyGo_T5S3_EPaper_Pro)
|
||||
display.print("Tap:Send Boot:Cancel");
|
||||
#else
|
||||
display.print("Enter:Send Sh+Del:Cancel");
|
||||
display.print("Enter:Send Q:Cancel");
|
||||
#endif
|
||||
display.setTextSize(1);
|
||||
}
|
||||
@@ -2949,7 +2949,7 @@ public:
|
||||
} else if (_editMode == EDIT_CONFIRM) {
|
||||
// overlay handles it
|
||||
} else {
|
||||
display.print("Sh+Del:Bk");
|
||||
display.print("Q:Bk");
|
||||
const char* r = "Ent:Edit";
|
||||
display.setCursor(display.width() - display.getTextWidth(r) - 2, footerY);
|
||||
display.print(r);
|
||||
@@ -2961,7 +2961,7 @@ public:
|
||||
} else if (_editMode == EDIT_WIFI) {
|
||||
if (_wifiPhase == WIFI_PHASE_SELECT) {
|
||||
if (_wifiSSIDCount == 0) {
|
||||
display.print("R/Enter:Rescan Sh+Del:Back");
|
||||
display.print("R/Enter:Rescan Q:Back");
|
||||
} else {
|
||||
display.print("W/S:Pick Enter:Sel R:Rescan");
|
||||
}
|
||||
@@ -2974,21 +2974,21 @@ public:
|
||||
#ifdef MECK_OTA_UPDATE
|
||||
} else if (_editMode == EDIT_OTA) {
|
||||
if (_otaPhase == OTA_PHASE_CONFIRM) {
|
||||
display.print("Enter:Start Sh+Del:Cancel");
|
||||
display.print("Enter:Start Q:Cancel");
|
||||
} else if (_otaPhase == OTA_PHASE_WAITING) {
|
||||
display.print("Sh+Del:Cancel");
|
||||
display.print("Q:Cancel");
|
||||
} else if (_otaPhase == OTA_PHASE_ERROR) {
|
||||
display.print("Sh+Del:Back");
|
||||
display.print("Q:Back");
|
||||
} else {
|
||||
display.print("Please wait...");
|
||||
}
|
||||
} else if (_editMode == EDIT_FILEMGR) {
|
||||
if (_fmPhase == FM_PHASE_CONFIRM) {
|
||||
display.print("Enter:Start Sh+Del:Cancel");
|
||||
display.print("Enter:Start Q:Cancel");
|
||||
} else if (_fmPhase == FM_PHASE_WAITING) {
|
||||
display.print("Sh+Del:Stop");
|
||||
display.print("Q:Stop");
|
||||
} else if (_fmPhase == FM_PHASE_ERROR) {
|
||||
display.print("Sh+Del:Back");
|
||||
display.print("Q:Back");
|
||||
} else {
|
||||
display.print("Please wait...");
|
||||
}
|
||||
@@ -2996,19 +2996,19 @@ public:
|
||||
} else if (_editMode == EDIT_PICKER) {
|
||||
display.print("A/D:Choose Enter:Ok");
|
||||
} else if (_editMode == EDIT_NUMBER) {
|
||||
display.print("W/S:Adj Enter:Ok Sh+Del:Cancel");
|
||||
display.print("W/S:Adj Enter:Ok Q:Cancel");
|
||||
} else if (_editMode == EDIT_CONFIRM) {
|
||||
// Footer already covered by overlay
|
||||
} else {
|
||||
if (_subScreen == SUB_CHANNELS) {
|
||||
display.print("Sh+Del:Bk C:Share");
|
||||
display.print("Q:Bk C:Share");
|
||||
} else if (_subScreen != SUB_NONE) {
|
||||
display.print("Sh+Del:Back");
|
||||
display.print("Q:Back");
|
||||
} else {
|
||||
#if defined(MECK_TWATCH)
|
||||
display.print("Hold:Edit");
|
||||
#else
|
||||
display.print("Sh+Del:Bk");
|
||||
display.print("Q:Bk");
|
||||
#endif
|
||||
}
|
||||
#if defined(MECK_TWATCH)
|
||||
@@ -3066,7 +3066,7 @@ public:
|
||||
_confirmAction = 0;
|
||||
return true;
|
||||
}
|
||||
if (c == KEY_CANCEL) {
|
||||
if (c == KEY_CANCEL || c == 'q') {
|
||||
if (_confirmAction == 3) {
|
||||
// Region nudge cancelled — scroll to Default Region row
|
||||
_editMode = EDIT_NONE;
|
||||
@@ -3120,7 +3120,7 @@ public:
|
||||
_editMode = EDIT_NONE;
|
||||
return true;
|
||||
}
|
||||
if (c == KEY_CANCEL) {
|
||||
if (c == KEY_CANCEL || c == 'q') {
|
||||
_editMode = EDIT_NONE;
|
||||
return true;
|
||||
}
|
||||
@@ -3148,7 +3148,7 @@ public:
|
||||
_editMode = EDIT_NONE;
|
||||
return true;
|
||||
}
|
||||
if (c == KEY_CANCEL) {
|
||||
if (c == KEY_CANCEL || c == 'q') {
|
||||
_editMode = EDIT_NONE;
|
||||
return true;
|
||||
}
|
||||
@@ -3164,7 +3164,7 @@ public:
|
||||
startOTAServer();
|
||||
return true;
|
||||
}
|
||||
if (c == KEY_CANCEL) {
|
||||
if (c == KEY_CANCEL || c == 'q') {
|
||||
_editMode = EDIT_NONE;
|
||||
return true;
|
||||
}
|
||||
@@ -3173,12 +3173,12 @@ public:
|
||||
if (_otaUploadOk) {
|
||||
return true;
|
||||
}
|
||||
if (c == KEY_CANCEL) {
|
||||
if (c == KEY_CANCEL || c == 'q') {
|
||||
stopOTA();
|
||||
return true;
|
||||
}
|
||||
} else if (_otaPhase == OTA_PHASE_ERROR) {
|
||||
if (c == KEY_CANCEL) {
|
||||
if (c == KEY_CANCEL || c == 'q') {
|
||||
stopOTA();
|
||||
return true;
|
||||
}
|
||||
@@ -3194,17 +3194,17 @@ public:
|
||||
startFileMgrServer();
|
||||
return true;
|
||||
}
|
||||
if (c == KEY_CANCEL) {
|
||||
if (c == KEY_CANCEL || c == 'q') {
|
||||
_editMode = EDIT_NONE;
|
||||
return true;
|
||||
}
|
||||
} else if (_fmPhase == FM_PHASE_WAITING) {
|
||||
if (c == KEY_CANCEL) {
|
||||
if (c == KEY_CANCEL || c == 'q') {
|
||||
stopFileMgr();
|
||||
return true;
|
||||
}
|
||||
} else if (_fmPhase == FM_PHASE_ERROR) {
|
||||
if (c == KEY_CANCEL) {
|
||||
if (c == KEY_CANCEL || c == 'q') {
|
||||
stopFileMgr();
|
||||
return true;
|
||||
}
|
||||
@@ -3247,7 +3247,7 @@ public:
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
if (c == KEY_CANCEL) {
|
||||
if (c == KEY_CANCEL || c == 'q') {
|
||||
_editMode = EDIT_NONE;
|
||||
_wifiPhase = WIFI_PHASE_IDLE;
|
||||
if (_onboarding) _onboarding = false; // Skip WiFi, finish onboarding
|
||||
@@ -3524,7 +3524,7 @@ public:
|
||||
}
|
||||
return true;
|
||||
}
|
||||
if (c == KEY_CANCEL) {
|
||||
if (c == KEY_CANCEL || c == 'q') {
|
||||
// Revert live preview if font style picker was active
|
||||
if (type == ROW_FONT_STYLE) {
|
||||
_prefs->ui_font_style = _fontPickerOriginal;
|
||||
@@ -3619,7 +3619,7 @@ public:
|
||||
_editMode = EDIT_NONE;
|
||||
return true;
|
||||
}
|
||||
if (c == KEY_CANCEL) {
|
||||
if (c == KEY_CANCEL || c == 'q') {
|
||||
_editMode = EDIT_NONE;
|
||||
return true;
|
||||
}
|
||||
@@ -4091,7 +4091,7 @@ public:
|
||||
#endif
|
||||
|
||||
// Shift+Del: back -- if in sub-screen, return to top level; else exit settings
|
||||
if (c == KEY_CANCEL) {
|
||||
if (c == KEY_CANCEL || c == 'q') {
|
||||
#ifdef HAS_SDCARD
|
||||
if (_subScreen == SUB_EXPORT_FLAGS) {
|
||||
// Return to Export/Import sub-screen
|
||||
|
||||
@@ -459,7 +459,7 @@ public:
|
||||
ty += 12;
|
||||
}
|
||||
display.setColor(DisplayDriver::GREEN);
|
||||
display.drawTextCentered(cx, ty, "Enter:Retry Sh+Del:Back");
|
||||
display.drawTextCentered(cx, ty, "Enter:Retry Q:Back");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -476,10 +476,10 @@ public:
|
||||
display.drawRect(0, fy - 2, display.width(), 1);
|
||||
if (_state == PLAYING) {
|
||||
display.setCursor(2, fy);
|
||||
display.print("Sh+Del:Back");
|
||||
display.print("Q:Back");
|
||||
} else if (_state == READY) {
|
||||
display.setCursor(2, fy);
|
||||
display.print("Enter:Start Sh+Del:Back");
|
||||
display.print("Enter:Start Q:Back");
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -1175,7 +1175,7 @@ private:
|
||||
display.drawTextCentered(display.width() / 2, footerY, "Swipe: Scroll Tap: Open Boot: home");
|
||||
#else
|
||||
display.setCursor(0, footerY);
|
||||
display.print("Sh+Del:Bk");
|
||||
display.print("Q:Bk");
|
||||
|
||||
const char* right = "Tap/Ent:Open";
|
||||
display.setCursor(display.width() - display.getTextWidth(right) - 2, footerY);
|
||||
@@ -1299,7 +1299,7 @@ private:
|
||||
display.setCursor(0, footerY);
|
||||
display.print(status);
|
||||
|
||||
const char* right = _gotoMode ? "Ent:Go Sh+Del:Cancel" : "Entr:Pg# Sh+Del:Bk";
|
||||
const char* right = _gotoMode ? "Ent:Go Sh+Del:Cancel" : "Entr:Pg# Q:Bk";
|
||||
display.setCursor(display.width() - display.getTextWidth(right) - 2, footerY);
|
||||
display.print(right);
|
||||
#endif
|
||||
|
||||
@@ -586,7 +586,7 @@ private:
|
||||
#if defined(LilyGo_T5S3_EPaper_Pro)
|
||||
display.print("Boot:Cancel Tap:Apply");
|
||||
#else
|
||||
display.print("Sh+Del:Cancel Enter:Apply");
|
||||
display.print("Q:Cancel Enter:Apply");
|
||||
#endif
|
||||
} else {
|
||||
#if defined(LilyGo_T5S3_EPaper_Pro)
|
||||
@@ -594,7 +594,7 @@ private:
|
||||
#elif defined(MECK_TWATCH)
|
||||
display.print("Tap:Sel Hold:Go");
|
||||
#else
|
||||
display.print("Sh+Del:Exit W/S:Nav Ent:Sel");
|
||||
display.print("Q:Exit W/S:Nav Ent:Sel");
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -659,7 +659,7 @@ private:
|
||||
#elif defined(MECK_TWATCH)
|
||||
display.print("Tap:Sel Hold:Add");
|
||||
#else
|
||||
display.print("Sh+Del:Back W/S:Scroll Ent:Add");
|
||||
display.print("Q:Back W/S:Scroll Ent:Add");
|
||||
#endif
|
||||
|
||||
return 5000;
|
||||
@@ -715,7 +715,7 @@ private:
|
||||
#if defined(LilyGo_T5S3_EPaper_Pro)
|
||||
display.print("Boot:Cancel");
|
||||
#else
|
||||
display.print("Sh+Del:Cancel");
|
||||
display.print("Q:Cancel");
|
||||
#endif
|
||||
|
||||
return 500; // Fast refresh for elapsed timer
|
||||
@@ -813,7 +813,7 @@ private:
|
||||
#elif defined(MECK_TWATCH)
|
||||
display.print("Hold: New Trace");
|
||||
#else
|
||||
display.print("Sh+Del:Back Ent:New Trace");
|
||||
display.print("Q:Back Ent:New Trace");
|
||||
#endif
|
||||
|
||||
return 5000;
|
||||
|
||||
@@ -1043,7 +1043,7 @@ private:
|
||||
int footerY = display.height() - 12;
|
||||
display.setTextSize(1);
|
||||
display.setCursor(0, footerY);
|
||||
display.print("Ent:Send Sh+Del:Cancel");
|
||||
display.print("Ent:Send Q:Cancel");
|
||||
|
||||
// No-direct-path popup. RAW_CUSTOM voice packets are direct-route only,
|
||||
// so a contact with no path set cannot receive one. Drawn last so it
|
||||
@@ -1172,11 +1172,11 @@ private:
|
||||
display.setTextSize(1);
|
||||
display.setCursor(0, footerY);
|
||||
if (_listPlaying) {
|
||||
display.print("Playing... Sh+Del:Stop");
|
||||
display.print("Playing... Q:Stop");
|
||||
} else if (!_fileList.empty()) {
|
||||
display.print("Mic:Rec Ent:Ply F:Snd D:Del");
|
||||
} else {
|
||||
display.print("Mic:Record Sh+Del:Exit");
|
||||
display.print("Mic:Record Q:Exit");
|
||||
}
|
||||
|
||||
// "Loading" popup while a forward-send file is read off SD and encoded.
|
||||
@@ -1321,11 +1321,11 @@ private:
|
||||
display.setTextSize(1);
|
||||
display.setCursor(0, footerY);
|
||||
if (_reviewPlaying) {
|
||||
display.print("Sh+Del:Stop");
|
||||
display.print("Q:Stop");
|
||||
} else if (_c2Valid) {
|
||||
display.print("S:Send Ent:Play Mic:Redo Sh+Del:List");
|
||||
display.print("S:Send Ent:Play Mic:Redo Q:List");
|
||||
} else {
|
||||
display.print("Ent:Play Mic:Redo D:Del Sh+Del:List");
|
||||
display.print("Ent:Play Mic:Redo D:Del Q:List");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3164,11 +3164,11 @@ private:
|
||||
if (onBookmark && hasData)
|
||||
snprintf(footerBuf, sizeof(footerBuf), "Ent:Go Del:Del Bkmk X:Clr Ckies");
|
||||
else if (onBookmark)
|
||||
snprintf(footerBuf, sizeof(footerBuf), "Sh+Del:Bk Ent:Go Del:Del Bkmk");
|
||||
snprintf(footerBuf, sizeof(footerBuf), "Q:Bk Ent:Go Del:Del Bkmk");
|
||||
else if (hasData)
|
||||
snprintf(footerBuf, sizeof(footerBuf), "Sh+Del:Bk W/S Ent:Go X:Clr Ckies");
|
||||
snprintf(footerBuf, sizeof(footerBuf), "Q:Bk W/S Ent:Go X:Clr Ckies");
|
||||
else
|
||||
snprintf(footerBuf, sizeof(footerBuf), "Sh+Del:Bk W/S:Nav Ent:Go");
|
||||
snprintf(footerBuf, sizeof(footerBuf), "Q:Bk W/S:Nav Ent:Go");
|
||||
#endif
|
||||
display.print(footerBuf);
|
||||
}
|
||||
@@ -3273,7 +3273,7 @@ private:
|
||||
#else
|
||||
display.print("Ent: Open in Reader");
|
||||
display.setCursor(0, y + 16);
|
||||
display.print("Sh+Del: Back to browser");
|
||||
display.print("Q: Back to browser");
|
||||
#endif
|
||||
} else {
|
||||
display.setColor(DisplayDriver::YELLOW);
|
||||
@@ -3292,7 +3292,7 @@ private:
|
||||
#if defined(LilyGo_T5S3_EPaper_Pro)
|
||||
display.print("Tap: Back to browser");
|
||||
#else
|
||||
display.print("Sh+Del: Back to browser");
|
||||
display.print("Q: Back to browser");
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -3305,7 +3305,7 @@ private:
|
||||
#if defined(LilyGo_T5S3_EPaper_Pro)
|
||||
display.print(_downloadOk ? "Tap: Open in Reader" : "Tap: Back");
|
||||
#else
|
||||
display.print(_downloadOk ? "Ent:Read Sh+Del:Back" : "Sh+Del:Back");
|
||||
display.print(_downloadOk ? "Ent:Read Q:Back" : "Q:Back");
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -3442,13 +3442,13 @@ private:
|
||||
}
|
||||
#else
|
||||
} else if (_formCount > 0 && _linkCount > 0) {
|
||||
hint = "L:Lnk F:Frm B:Bk Sh+Del:X";
|
||||
hint = "L:Lnk F:Frm B:Bk Q:X";
|
||||
} else if (_formCount > 0) {
|
||||
hint = "F:Frm B:Bk Sh+Del:X";
|
||||
hint = "F:Frm B:Bk Q:X";
|
||||
} else if (_linkCount > 0) {
|
||||
hint = "L:Lnk B:Bk Sh+Del:X";
|
||||
hint = "L:Lnk B:Bk Q:X";
|
||||
} else {
|
||||
hint = "B:Bk Sh+Del:X";
|
||||
hint = "B:Bk Q:X";
|
||||
}
|
||||
#endif
|
||||
display.setCursor(display.width() - display.getTextWidth(hint) - 2, footerY);
|
||||
@@ -3892,7 +3892,7 @@ private:
|
||||
}
|
||||
|
||||
// Shift+Del - exit to home
|
||||
if (c == KEY_CANCEL) {
|
||||
if (c == KEY_CANCEL || c == 'q') {
|
||||
_mode = HOME;
|
||||
_homeSelected = 0;
|
||||
return true;
|
||||
@@ -5412,7 +5412,7 @@ public:
|
||||
case FETCHING:
|
||||
// Shift+Del to cancel fetch (can't actually cancel HTTP mid-stream, but
|
||||
// go back to home)
|
||||
if (c == KEY_CANCEL) {
|
||||
if (c == KEY_CANCEL || c == 'q') {
|
||||
_mode = HOME;
|
||||
return true;
|
||||
}
|
||||
@@ -5424,7 +5424,7 @@ public:
|
||||
_requestTextReader = true;
|
||||
return true;
|
||||
}
|
||||
if (c == KEY_CANCEL) {
|
||||
if (c == KEY_CANCEL || c == 'q') {
|
||||
_mode = HOME;
|
||||
_homeSelected = 0;
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user