From 2f2544efc69aeffbf5cef7c985882063c5a23bac Mon Sep 17 00:00:00 2001 From: Orphey <15167344+frostmorn@users.noreply.github.com> Date: Sun, 24 Mar 2024 16:42:06 +0000 Subject: [PATCH 1/3] menu->clearItems and menu->setItem implementation --- sdk/lib/lilka/src/lilka/menu.cpp | 16 +++++++++++++++- sdk/lib/lilka/src/lilka/ui.h | 11 +++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/sdk/lib/lilka/src/lilka/menu.cpp b/sdk/lib/lilka/src/lilka/menu.cpp index 39fcb320..d8a183c5 100644 --- a/sdk/lib/lilka/src/lilka/menu.cpp +++ b/sdk/lib/lilka/src/lilka/menu.cpp @@ -183,7 +183,21 @@ bool Menu::isFinished() { int16_t Menu::getCursor() { return cursor; } - +bool Menu::setItem(int16_t index, String title, const menu_icon_t* icon, uint16_t color, String postfix) { + if (index > items.size() - 1) { + return false; + } else { + items[index].title = title; + items[index].icon = icon; + items[index].color = color; + items[index].postfix = postfix; + return true; + } +} +void Menu::clearItems() { + setCursor(0); + items.clear(); +} void Menu::addActivationButton(Button activationButton) { activationButtons.push_back(activationButton); } diff --git a/sdk/lib/lilka/src/lilka/ui.h b/sdk/lib/lilka/src/lilka/ui.h index 6a7c4fba..f6a0a3bf 100644 --- a/sdk/lib/lilka/src/lilka/ui.h +++ b/sdk/lib/lilka/src/lilka/ui.h @@ -81,8 +81,19 @@ class Menu { /// /// Якщо пункт обрано (користувач натиснув кнопку "A"), повертається ``true``, інакше ``false``. Після виклику цієї функції пункт перестає бути обраним. bool isFinished(); + /// Дозволяє змінити пункту меню + /// @param index Індекс пункту. + /// @param title Заголовок пункту. + /// @param icon Іконка пункту (масив з ``uint16_t`` розміром 576 елементів, який представляє 24x24px зображення). За замовчуванням ``0`` (відсутня іконка). + /// @param color Колір пункту. За замовчуванням ``0`` (стандартний колір). + /// @param postfix Текст, який додається після заголовка пункту і вирівнюється до правого краю меню. + /// + /// Повертає значення true якщо пункт було змінено + bool setItem(int16_t index, String title, const menu_icon_t* icon = 0, uint16_t color = 0, String postfix = ""); /// Отримати індекс обраного пункту меню. int16_t getCursor(); + /// Дозволяє очистити меню і зробити його доступним для повторного використання + void clearItems(); /// Дозволити вибір пункту меню за допомогою інших кнопок. /// /// За замовчуванням вибір пункту можливий тільки за допомогою кнопки "A". Після виклику цієї функції можна вибирати пункт за допомогою додаткових кнопок. From de4ff1f2a1610e105c771c2714c50ce87315b079 Mon Sep 17 00:00:00 2001 From: Orphey <15167344+frostmorn@users.noreply.github.com> Date: Sun, 24 Mar 2024 17:02:32 +0000 Subject: [PATCH 2/3] getItem Implementation, docs fix --- sdk/lib/lilka/src/lilka/menu.cpp | 8 ++++++++ sdk/lib/lilka/src/lilka/ui.h | 9 +++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/sdk/lib/lilka/src/lilka/menu.cpp b/sdk/lib/lilka/src/lilka/menu.cpp index d8a183c5..8d716692 100644 --- a/sdk/lib/lilka/src/lilka/menu.cpp +++ b/sdk/lib/lilka/src/lilka/menu.cpp @@ -194,6 +194,14 @@ bool Menu::setItem(int16_t index, String title, const menu_icon_t* icon, uint16_ return true; } } +bool Menu::getItem(int16_t index, MenuItem* menuItem) { + if ((menuItem == NULL) || index > items.size() - 1) { + return false; + } else { + memcpy(menuItem, &(items[index]), sizeof(MenuItem)); + return true; + } +} void Menu::clearItems() { setCursor(0); items.clear(); diff --git a/sdk/lib/lilka/src/lilka/ui.h b/sdk/lib/lilka/src/lilka/ui.h index f6a0a3bf..69874256 100644 --- a/sdk/lib/lilka/src/lilka/ui.h +++ b/sdk/lib/lilka/src/lilka/ui.h @@ -81,7 +81,7 @@ class Menu { /// /// Якщо пункт обрано (користувач натиснув кнопку "A"), повертається ``true``, інакше ``false``. Після виклику цієї функції пункт перестає бути обраним. bool isFinished(); - /// Дозволяє змінити пункту меню + /// Змінити пункт меню /// @param index Індекс пункту. /// @param title Заголовок пункту. /// @param icon Іконка пункту (масив з ``uint16_t`` розміром 576 елементів, який представляє 24x24px зображення). За замовчуванням ``0`` (відсутня іконка). @@ -90,9 +90,14 @@ class Menu { /// /// Повертає значення true якщо пункт було змінено bool setItem(int16_t index, String title, const menu_icon_t* icon = 0, uint16_t color = 0, String postfix = ""); + /// Отримати пункт меню + /// @param index Індекс пункту. + /// @param menuItem Вказівник на lilka::MenuItem куди буде скопійовано пункт + /// Повертає true у разі успіху + bool getItem(int16_t index, MenuItem* menuItem); /// Отримати індекс обраного пункту меню. int16_t getCursor(); - /// Дозволяє очистити меню і зробити його доступним для повторного використання + /// Очистити меню і зробити його доступним для повторного використання void clearItems(); /// Дозволити вибір пункту меню за допомогою інших кнопок. /// From 87910a06ca1caf460d3c19680d93958b9c74f1d2 Mon Sep 17 00:00:00 2001 From: Orphey <15167344+frostmorn@users.noreply.github.com> Date: Sun, 24 Mar 2024 17:04:32 +0000 Subject: [PATCH 3/3] comma issue fix --- sdk/lib/lilka/src/lilka/ui.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/lib/lilka/src/lilka/ui.h b/sdk/lib/lilka/src/lilka/ui.h index 69874256..d9f6c535 100644 --- a/sdk/lib/lilka/src/lilka/ui.h +++ b/sdk/lib/lilka/src/lilka/ui.h @@ -88,7 +88,7 @@ class Menu { /// @param color Колір пункту. За замовчуванням ``0`` (стандартний колір). /// @param postfix Текст, який додається після заголовка пункту і вирівнюється до правого краю меню. /// - /// Повертає значення true якщо пункт було змінено + /// Повертає значення true, якщо пункт було змінено bool setItem(int16_t index, String title, const menu_icon_t* icon = 0, uint16_t color = 0, String postfix = ""); /// Отримати пункт меню /// @param index Індекс пункту.