From 95938e842fa79c263eb61bc6db92ac23957c99d7 Mon Sep 17 00:00:00 2001 From: Orphey <15167344+frostmorn@users.noreply.github.com> Date: Fri, 22 Mar 2024 07:57:16 +0000 Subject: [PATCH] Added Page Based scroll through menu --- sdk/lib/lilka/src/lilka/menu.cpp | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/sdk/lib/lilka/src/lilka/menu.cpp b/sdk/lib/lilka/src/lilka/menu.cpp index 729d6f39..1fc3d7ba 100644 --- a/sdk/lib/lilka/src/lilka/menu.cpp +++ b/sdk/lib/lilka/src/lilka/menu.cpp @@ -41,8 +41,10 @@ void Menu::setCursor(int16_t cursor) { } void Menu::update() { +// TODO: Value here depends on a screen size +#define PAGE_LEN 3 State state = controller.getState(); - + lastCursorMove = millis(); if (state.up.justPressed) { // Move cursor up if (cursor == 0) { @@ -50,16 +52,34 @@ void Menu::update() { } else { cursor--; } - lastCursorMove = millis(); } else if (state.down.justPressed) { // Move cursor down cursor++; if (cursor >= items.size()) { cursor = 0; } - lastCursorMove = millis(); + } else if (state.left.justPressed) { + // Scroll PageUp + if (cursor == 0) { + cursor = items.size - 1; + } else { + cursor = cursor - PAGE_LEN; + if (cursor <= 0) { + cursor = 0; + } + } + } else if (state.right.justPressed) { + // Scroll PageDown + if (cursor == items.size - 1) { + cursor = 0; + } else { + cursor = cursor + PAGE_LEN; + if (cursor > items.size()) { + cursor = items.size(); + } + } } - +#undef PAGE_LEN if (cursor < scroll) { scroll = cursor; // cursorY = cursor * 24 + 96 - 20;