From 2831eab62c2ef9349709376e034520b55fbe427a Mon Sep 17 00:00:00 2001 From: Roman Terekhov Date: Thu, 15 Oct 2026 21:35:10 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D1=8E=20=D1=83=D0=B2=D0=B5?= =?UTF-8?q?=D0=B4=D0=BE=D0=BC=D0=BB=D0=B5=D0=BD=D0=B8=D0=B9:=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=B4=D1=81=D0=BA=D0=B0=D0=B7=D0=BA=D0=B0=20=D0=BE=20?= =?UTF-8?q?=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D0=B0=D1=85=20=D0=BD=D0=B5=20?= =?UTF-8?q?=D0=BD=D0=B0=D0=BA=D0=BB=D0=B0=D0=B4=D1=8B=D0=B2=D0=B0=D0=B5?= =?UTF-8?q?=D1=82=D1=81=D1=8F=20=D0=BD=D0=B0=20=D1=81=D1=82=D1=80=D0=BE?= =?UTF-8?q?=D0=BA=D1=83=20=D1=81=D0=BF=D0=B8=D1=81=D0=BA=D0=B0=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B8=20=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B5=20=D0=B7?= =?UTF-8?q?=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/companion_radio/ui-new/UITask.cpp | 26 ++++++++++++++++------ 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/examples/companion_radio/ui-new/UITask.cpp b/examples/companion_radio/ui-new/UITask.cpp index ff991c4e..bb1b590f 100644 --- a/examples/companion_radio/ui-new/UITask.cpp +++ b/examples/companion_radio/ui-new/UITask.cpp @@ -1510,6 +1510,18 @@ void HomeScreen::notifyActivate() { // длинное нажатие } } +// Подсказка о кнопках внизу экрана. Полосу сначала затираем: иначе текст ложится +// поверх последней строки списка (например, поверх «Save & exit» при правке Timezone). +static void drawBottomHint(DisplayDriver& display, const char* text) { + const int h = 10; + const int y = display.height() - h; + display.setTextSize(1); + display.setColor(UIColor::window_bkg); + display.fillRect(0, y, display.width(), h); + display.setColor(UIColor::warning_txt); + display.drawTextCentered(display.width() / 2, y + 1, text); +} + void HomeScreen::renderNotifyMenu(DisplayDriver& display) { char buf[24]; char val[16]; @@ -1526,8 +1538,7 @@ void HomeScreen::renderNotifyMenu(DisplayDriver& display) { drawMenuRow(display, y, r == _notify_sel, names[r], val); } if (_notify_val_edit) { - display.setColor(UIColor::warning_txt); - display.drawTextCentered(display.width() / 2, 64 - 10, "click+ dbl- hold=back"); + drawBottomHint(display, "click+ dbl- hold=back"); } return; } @@ -1564,11 +1575,13 @@ void HomeScreen::renderNotifyMenu(DisplayDriver& display) { "Unread", "Popups", "Wake screen", "Alerts", "Channels", "Timezone", "Quiet hours", "Save & exit" }; static const char* alert_names[4] = { "sound+vibe", "sound", "vibe", "off" }; - // на узких экранах (128x64) все восемь строк не помещаются — список прокручивается - const uint8_t visible = display.height() >= 100 ? NOTIFY_MAIN_ROWS : 7; + // на узких экранах (128x64) все восемь строк не помещаются — список прокручивается; + // в режиме правки значения нижнюю строку отдаём под подсказку о кнопках + const uint8_t maxRows = display.height() >= 100 ? NOTIFY_MAIN_ROWS : 7; + const uint8_t visible = _notify_val_edit ? (uint8_t)(maxRows - 1) : maxRows; uint8_t first = _notify_sel >= visible ? (uint8_t)(_notify_sel - visible + 1) : 0; int y = 1; - for (uint8_t r = first; r < NOTIFY_MAIN_ROWS; r++, y += 9) { + for (uint8_t r = first; r < NOTIFY_MAIN_ROWS && (r - first) < visible; r++, y += 9) { val[0] = 0; switch (r) { case 0: snprintf(val, sizeof(val), "%d", _task->getMsgCount()); break; @@ -1586,8 +1599,7 @@ void HomeScreen::renderNotifyMenu(DisplayDriver& display) { drawMenuRow(display, y, r == _notify_sel, labels[r], val); } if (_notify_val_edit) { - display.setColor(UIColor::warning_txt); - display.drawTextCentered(display.width() / 2, display.height() - 10, "click+ dbl- hold=back"); + drawBottomHint(display, "click+ dbl- hold=back"); } }