From f118a0949fb96eb881350a8d6e0ed917d7a3b293 Mon Sep 17 00:00:00 2001 From: pelgraine <140762863+pelgraine@users.noreply.github.com> Date: Fri, 20 Mar 2026 20:52:39 +1100 Subject: [PATCH] fix td pro platformio version whioops; tdpro reader screen ui fix - press enter to go to page --- examples/companion_radio/main.cpp | 10 ++- .../companion_radio/ui-new/Textreaderscreen.h | 64 +++++++++++++++++-- variants/lilygo_tdeck_pro/platformio.ini | 8 +-- 3 files changed, 68 insertions(+), 14 deletions(-) diff --git a/examples/companion_radio/main.cpp b/examples/companion_radio/main.cpp index 7b087be..f3d896e 100644 --- a/examples/companion_radio/main.cpp +++ b/examples/companion_radio/main.cpp @@ -689,18 +689,16 @@ static void lastHeardToggleContact() { if (ui_task.isOnTextReader()) { TextReaderScreen* reader = (TextReaderScreen*)ui_task.getTextReaderScreen(); if (reader && reader->isReading()) { - // Footer zone tap → go to page - if (vy >= 113) { #if defined(LilyGo_T5S3_EPaper_Pro) + // Footer zone tap → go to page via VKB + if (vy >= 113) { char label[24]; snprintf(label, sizeof(label), "Page (1-%d)", reader->getTotalPages()); ui_task.showVirtualKeyboard(VKB_TEXT_PAGE, label, "", 5); return 0; -#else - return 0; // T-Deck Pro: tap footer consumed, no action (use keyboard) -#endif } - return 'd'; // Body tap = next page +#endif + return 'd'; // Tap anywhere else = next page } // File list: tap-to-select, double-tap to open if (reader && reader->isInFileList()) { diff --git a/examples/companion_radio/ui-new/Textreaderscreen.h b/examples/companion_radio/ui-new/Textreaderscreen.h index c23ac63..d4b7f33 100644 --- a/examples/companion_radio/ui-new/Textreaderscreen.h +++ b/examples/companion_radio/ui-new/Textreaderscreen.h @@ -396,6 +396,11 @@ private: int _pageBufLen; bool _contentDirty; // Need to re-read from SD + // Go-to-page input mode (Enter in reading view) + bool _gotoMode = false; + char _gotoBuf[6]; // Up to 5 digits + null + int _gotoBufLen = 0; + // ---- Splash Screen Drawing ---- // Draw directly to display outside the normal render cycle. // Matches the style of the standalone text reader firmware splash. @@ -1238,7 +1243,13 @@ private: char status[30]; int pct = _totalPages > 1 ? (_currentPage * 100) / (_totalPages - 1) : 100; - sprintf(status, "%d/%d %d%%", _currentPage + 1, _totalPages, pct); + + if (_gotoMode) { + // Go-to-page input mode — show typed digits in footer + snprintf(status, sizeof(status), "Go to: %.*s_", _gotoBufLen, _gotoBuf); + } else { + sprintf(status, "%d/%d %d%%", _currentPage + 1, _totalPages, pct); + } #if defined(LilyGo_T5S3_EPaper_Pro) display.setTextSize(0); @@ -1251,7 +1262,7 @@ private: display.setCursor(0, footerY); display.print(status); - const char* right = "A/D:Page Tap:GoTo Q:Back"; + const char* right = _gotoMode ? "Ent:Go Q:Cancel" : "Entr:Pg# Q:Bk"; display.setCursor(display.width() - display.getTextWidth(right) - 2, footerY); display.print(right); #endif @@ -1591,6 +1602,7 @@ public: if (_mode == FILE_LIST) { return handleFileListInput(c); } else if (_mode == READING) { + if (_gotoMode) return handleGotoInput(c); return handleReadingInput(c); } return false; @@ -1711,9 +1723,9 @@ public: return false; } - // S/D/Space/Enter - next page + // S/D/Space - next page if (c == 's' || c == 'S' || c == 'd' || c == 'D' || - c == ' ' || c == '\r' || c == 13 || c == 0xF1) { + c == ' ' || c == 0xF1) { if (_currentPage < _totalPages - 1) { _currentPage++; loadPageContent(); @@ -1722,6 +1734,14 @@ public: return false; } + // Enter - go-to-page input mode + if (c == '\r' || c == 13) { + _gotoMode = true; + _gotoBufLen = 0; + _gotoBuf[0] = '\0'; + return true; + } + // Q - close book, back to file list if (c == 'q' || c == 'Q') { closeBook(); @@ -1732,6 +1752,42 @@ public: return false; } + bool handleGotoInput(char c) { + // Enter — commit page number + if (c == '\r' || c == 13) { + if (_gotoBufLen > 0) { + int pageNum = atoi(_gotoBuf); + gotoPage(pageNum); + } + _gotoMode = false; + return true; + } + + // Q or Escape — cancel + if (c == 'q' || c == 'Q' || c == 0x1B) { + _gotoMode = false; + return true; + } + + // Backspace — delete last digit + if (c == '\b' || c == 0x7F) { + if (_gotoBufLen > 0) { + _gotoBufLen--; + _gotoBuf[_gotoBufLen] = '\0'; + } + return true; + } + + // Digit — append (max 5 digits) + if (c >= '0' && c <= '9' && _gotoBufLen < 5) { + _gotoBuf[_gotoBufLen++] = c; + _gotoBuf[_gotoBufLen] = '\0'; + return true; + } + + return true; // Consume all other keys while in goto mode + } + // External close (called when leaving reader screen entirely) void exitReader() { if (_fileOpen) closeBook(); diff --git a/variants/lilygo_tdeck_pro/platformio.ini b/variants/lilygo_tdeck_pro/platformio.ini index 59256b4..63cdb1d 100644 --- a/variants/lilygo_tdeck_pro/platformio.ini +++ b/variants/lilygo_tdeck_pro/platformio.ini @@ -146,7 +146,7 @@ build_flags = -D OFFLINE_QUEUE_SIZE=256 -D MECK_AUDIO_VARIANT -D MECK_WEB_READER=1 - -D FIRMWARE_VERSION='"Meck v1.0.WiFi"' + -D FIRMWARE_VERSION='"Meck v1.2.WiFi"' build_src_filter = ${LilyGo_TDeck_Pro.build_src_filter} + + @@ -196,7 +196,7 @@ build_flags = -D OFFLINE_QUEUE_SIZE=256 -D HAS_4G_MODEM=1 -D MECK_WEB_READER=1 - -D FIRMWARE_VERSION='"Meck v1.0.4G"' + -D FIRMWARE_VERSION='"Meck v1.2.4G"' build_src_filter = ${LilyGo_TDeck_Pro.build_src_filter} + + @@ -226,7 +226,7 @@ build_flags = -D OFFLINE_QUEUE_SIZE=256 -D HAS_4G_MODEM=1 -D MECK_WEB_READER=1 - -D FIRMWARE_VERSION='"Meck v1.0.4G.WiFi"' + -D FIRMWARE_VERSION='"Meck v1.2.4G.WiFi"' build_src_filter = ${LilyGo_TDeck_Pro.build_src_filter} + + @@ -252,7 +252,7 @@ build_flags = -D OFFLINE_QUEUE_SIZE=1 -D HAS_4G_MODEM=1 -D MECK_WEB_READER=1 - -D FIRMWARE_VERSION='"Meck v1.0.4G.SA"' + -D FIRMWARE_VERSION='"Meck v1.2.4G.SA"' build_src_filter = ${LilyGo_TDeck_Pro.build_src_filter} + +