1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-26 01:35:21 +03:00

Source popup menu

This commit is contained in:
Andre Bernet 2015-03-23 13:32:43 +04:00
parent 863a30a5ed
commit f59b8f961e
16 changed files with 284 additions and 19 deletions

View file

@ -127,18 +127,18 @@ const char * displayMenu(uint8_t event)
{
const char * result = NULL;
uint8_t display_count = min(s_menu_count, (uint16_t)MENU_MAX_LINES);
uint8_t display_count = min(s_menu_count, (uint16_t)MENU_MAX_DISPLAY_LINES);
uint8_t y = (display_count >= 5 ? MENU_Y - FH - 1 : MENU_Y);
drawFilledRect(MENU_X, y, MENU_W, display_count * (FH+1) + 2, SOLID, ERASE);
lcd_rect(MENU_X, y, MENU_W, display_count * (FH+1) + 2);
for (uint8_t i=0; i<display_count; i++) {
lcd_putsAtt(MENU_X+6, i*(FH+1) + y + 2, s_menu[i], s_menu_flags);
lcd_putsAtt(MENU_X+6, i*(FH+1) + y + 2, s_menu[i+s_menu_offset], s_menu_flags);
if (i == s_menu_item) drawFilledRect(MENU_X+1, i*(FH+1) + y + 1, MENU_W-2, 9);
}
if (s_menu_count > display_count) {
displayScrollbar(MENU_X+MENU_W-1, y+1, MENU_MAX_LINES * (FH+1), s_menu_offset, s_menu_count, MENU_MAX_LINES);
displayScrollbar(MENU_X+MENU_W-1, y+1, MENU_MAX_LINES * (FH+1), s_menu_offset, s_menu_count, display_count);
}
switch(event) {
@ -152,9 +152,9 @@ const char * displayMenu(uint8_t event)
result = STR_UPDATE_LIST;
}
else {
s_menu_item = display_count - 1;
if (s_menu_count > MENU_MAX_LINES) {
s_menu_offset = s_menu_count - display_count;
s_menu_item = min(display_count, (uint8_t)MENU_MAX_DISPLAY_LINES)-1;
if (s_menu_count > MENU_MAX_DISPLAY_LINES) {
s_menu_offset = s_menu_count - MENU_MAX_DISPLAY_LINES;
result = STR_UPDATE_LIST;
}
}
@ -179,7 +179,7 @@ const char * displayMenu(uint8_t event)
break;
CASE_EVT_ROTARY_BREAK
case EVT_KEY_BREAK(KEY_ENTER):
result = s_menu[s_menu_item];
result = s_menu[s_menu_item+s_menu_offset];
// no break
case EVT_KEY_BREAK(KEY_EXIT):
s_menu_count = 0;