SD card Models storage now complete, including scroll in Models List!

This commit is contained in:
bsongis
2012-04-21 17:50:47 +00:00
parent a7596c3499
commit e100ddfd8c
3 changed files with 28 additions and 7 deletions
+17 -3
View File
@@ -541,7 +541,9 @@ const char *s_menu[MENU_MAX_LINES];
char s_bss_menu[MENU_MAX_LINES*MENU_LINE_LENGTH];
uint8_t s_menu_item = 0;
uint8_t s_menu_count = 0;
uint8_t s_menu_flags;
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;
@@ -556,10 +558,20 @@ const char * displayMenu(uint8_t event)
switch(event) {
case EVT_KEY_FIRST(KEY_UP):
if (s_menu_item > 0) s_menu_item--;
if (s_menu_item > 0)
s_menu_item--;
else if (s_menu_offset > 0) {
s_menu_offset--;
result = STR_UPDATE_LIST;
}
break;
case EVT_KEY_FIRST(KEY_DOWN):
if (s_menu_item < s_menu_count - 1) s_menu_item++;
if (s_menu_item < s_menu_count - 1)
s_menu_item++;
else if (s_menu_more) {
s_menu_offset++;
result = STR_UPDATE_LIST;
}
break;
case EVT_KEY_FIRST(KEY_MENU):
result = s_menu[s_menu_item];
@@ -569,6 +581,8 @@ const char * displayMenu(uint8_t event)
s_menu_count = 0;
s_menu_item = 0;
s_menu_flags = 0;
s_menu_offset = 0;
s_menu_more = false;
break;
}
+10 -4
View File
@@ -139,6 +139,7 @@ bool listSDcardModels()
s_menu_count = 0;
s_menu_flags = BSS;
uint8_t offset = 0;
FRESULT res = f_opendir(&dir, MODELS_PATH); /* Open the directory */
if (res == FR_OK) {
@@ -152,6 +153,14 @@ bool listSDcardModels()
fn = fno.fname;
#endif
if (~fno.fattrib & AM_DIR) { /* It is a file. */
if (offset < s_menu_offset) {
offset++;
continue;
}
if (s_menu_count == MENU_MAX_LINES) {
s_menu_more = true;
break;
}
char *menu_entry = &s_bss_menu[s_menu_count*MENU_LINE_LENGTH];
memset(menu_entry, 0, MENU_LINE_LENGTH);
for (uint8_t i=0; i<MENU_LINE_LENGTH-1; i++) {
@@ -160,9 +169,6 @@ bool listSDcardModels()
menu_entry[i] = fn[i];
}
s_menu[s_menu_count++] = menu_entry;
// TODO better handling...
if (s_menu_count == MENU_MAX_LINES)
break;
}
}
}
@@ -439,7 +445,7 @@ void menuProcModelSelect(uint8_t event)
if (!s_sdcard_error)
eeDeleteModel(sub); // delete the model, it's archived!
}
else if (result == STR_RESTORE_MODEL) {
else if (result == STR_RESTORE_MODEL || result == STR_UPDATE_LIST) {
if (!listSDcardModels()) {
s_sdcard_error = PSTR("No Models on SD");
}
+1
View File
@@ -380,6 +380,7 @@ extern const pm_char STR_DELETE_MODEL[];
extern const pm_char STR_RESTORE_MODEL[];
extern const pm_char STR_SDCARD_ERROR[];
extern const pm_char STR_NO_SDCARD[];
#define STR_UPDATE_LIST STR_DELAYDOWN
#endif
extern const pm_uchar font[];