From d7e3c1251ecd84cbff46bc32e5fe4a0d40d35b02 Mon Sep 17 00:00:00 2001 From: bsongis Date: Sat, 6 Oct 2012 12:17:56 +0000 Subject: [PATCH] [sky9x/gruvin9x] Lists within Restore Models and Tracks for Function Switches are now sorted in alphabetical order. --- src/menus.cpp | 14 +++++----- src/menus.h | 1 - src/model_menus.cpp | 65 ++++++++++----------------------------------- 3 files changed, 21 insertions(+), 59 deletions(-) diff --git a/src/menus.cpp b/src/menus.cpp index cb9aed383..9cf141c7b 100644 --- a/src/menus.cpp +++ b/src/menus.cpp @@ -611,15 +611,16 @@ uint8_t s_menu_item = 0; uint8_t s_menu_count = 0; uint8_t s_menu_flags = 0; uint8_t s_menu_offset = 0; -bool s_menu_more = false; const char * displayMenu(uint8_t event) { const char * result = NULL; - lcd_filled_rect(10, 16, DISPLAY_W-20, s_menu_count * (FH+1) + 2, SOLID, WHITE); - lcd_rect(10, 16, DISPLAY_W-20, s_menu_count * (FH+1) + 2); + uint8_t display_count = min(s_menu_count, (uint8_t)MENU_MAX_LINES); - for (uint8_t i=0; i s_menu_offset + display_count) { s_menu_offset++; result = STR_UPDATE_LIST; } @@ -650,7 +651,6 @@ const char * displayMenu(uint8_t event) s_menu_item = 0; s_menu_flags = 0; s_menu_offset = 0; - s_menu_more = false; break; } diff --git a/src/menus.h b/src/menus.h index edc977f56..5a933b611 100644 --- a/src/menus.h +++ b/src/menus.h @@ -235,7 +235,6 @@ extern char s_bss_menu[MENU_MAX_LINES][MENU_LINE_LENGTH]; extern uint8_t s_menu_count; extern uint8_t s_menu_flags; extern uint8_t s_menu_offset; -extern bool s_menu_more; const char * displayMenu(uint8_t event); #define STATUS_LINE_LENGTH 32 diff --git a/src/model_menus.cpp b/src/model_menus.cpp index 42b52146d..5b65e3e4b 100644 --- a/src/model_menus.cpp +++ b/src/model_menus.cpp @@ -119,22 +119,19 @@ bool listSdFiles(const char *path, const char *extension) #endif s_menu_count = 0; - s_menu_more = false; s_menu_flags = BSS; - uint8_t offset = 0; -#if 0 static uint16_t s_last_menu_offset = 65535; char hidden_line[MENU_LINE_LENGTH] = ""; if (s_menu_offset == 0) s_last_menu_offset = 0; -/* else if (s_menu_offset >= reusableBuffer.sd.count-7) - s_last_menu_offset = s_pgOfs+1; */ +/* else if (s_menu_offset >= s_menu_count-MENU_MAX_LINES) + s_last_menu_offset = s_menu_offset+1; */ else if (s_menu_offset > s_last_menu_offset) - memcpy(hidden_line, &s_bss_menu[0], MENU_LINE_LENGTH); + memcpy(hidden_line, s_bss_menu[0], MENU_LINE_LENGTH); else - memcpy(hidden_line, &s_bss_menu[MENU_MAX_LINES-1], MENU_LINE_LENGTH); + memcpy(hidden_line, s_bss_menu[MENU_MAX_LINES-1], MENU_LINE_LENGTH); memset(s_bss_menu, 0, sizeof(s_bss_menu)); @@ -153,71 +150,37 @@ bool listSdFiles(const char *path, const char *extension) uint8_t len = strlen(fn); if (len < 5 || strcmp(fn+len-4, extension) || (fno.fattrib & AM_DIR)) continue; - printf("Fichier %s\n", fn); + fn[len-4] = '\0'; + s_menu_count++; for (uint8_t i=0; i= s_last_menu_offset) { line = s_bss_menu[i]; if ((!hidden_line[0] || (strcmp(hidden_line, fn) < 0)) && (line[0] == '\0' || strcmp(fn, line) < 0)) { - if (i < MENU_MAX_LINES-1) { + if (i < MENU_MAX_LINES-1) memmove(s_bss_menu[i+1], line, sizeof(s_bss_menu[i]) * (MENU_MAX_LINES-1-i)); - } - strncpy(line, fn, MENU_LINE_LENGTH); + strcpy(line, fn); break; } } else { line = s_bss_menu[MENU_MAX_LINES-1-i]; if ((!hidden_line[0] || (strcmp(hidden_line, fn) > 0)) && (line[0] == '\0' || strcmp(fn, line) > 0)) { - if (i < MENU_MAX_LINES-1) { + if (i < MENU_MAX_LINES-1) memmove(s_bss_menu, s_bss_menu[1], sizeof(s_bss_menu[0]) * (MENU_MAX_LINES-1-i)); - } - strncpy(line, fn, MENU_LINE_LENGTH); + strcpy(line, fn); break; } } - s_menu[i] = line; } } - s_menu_count = MENU_MAX_LINES; - s_menu_more = true; + + for (uint8_t i=0; i