From 68c5034205180b11023a448e94e69814caf19540 Mon Sep 17 00:00:00 2001 From: schneider Date: Sun, 17 Jul 2011 01:09:03 +0200 Subject: [PATCH] first file chooser --- firmware/applications/exe.c | 87 +++++++++++++++++++++++++++---------- 1 file changed, 64 insertions(+), 23 deletions(-) diff --git a/firmware/applications/exe.c b/firmware/applications/exe.c index 3847060..f5448b9 100644 --- a/firmware/applications/exe.c +++ b/firmware/applications/exe.c @@ -66,44 +66,85 @@ void execute_menu(void){ #define MAXENTRIES 10 #define FLEN 13 -void select_menu(void){ + +//typedef char[13] FILENAME; + +int getFiles(char files[][13], uint8_t count, uint16_t skip, char *ext) +{ DIR dir; /* Directory object */ FILINFO Finfo; FRESULT res; - char fname[FLEN*MAXENTRIES]; int ctr; - + int pos = 0; res = f_opendir(&dir, "0:"); - lcdPrint("OpenDir:"); - lcdPrintln(f_get_rc_string(res)); if(res){ - return; + lcdPrint("OpenDir:"); lcdPrintln(f_get_rc_string(res)); lcdRefresh(); + return 0; }; - - for(ctr=0;;ctr++) { + for(ctr=0;pos"); - lcdNl(); - - strcpy(fname+ctr*FLEN,Finfo.fname); + strcpy(files[pos++],Finfo.fname); } - lcdPrintln(""); -}; + //lcdPrint("getFiles:"); lcdPrintInt(pos); lcdRefresh(); + return pos; +} + +void select_menu(void) +{ + int skip = 0; + char key; + int selected = 0; + while(1){ + char files[7][13]; + int count = getFiles(files, 7, skip, "TXT"); + + redraw: + if( count ) + lcdClear(); + lcdPrintln("Select:"); + for(int i=0; i"); + lcdPrintln(files[i]); + } + lcdRefresh(); + key=getInputWait(); + delayms(20); + if( key==BTN_DOWN ){ + if( selected < 6 ){ + selected++; + goto redraw; + }else{ + skip++; + } + }else if( key==BTN_UP ){ + if( selected > 0 ){ + selected--; + goto redraw; + }else{ + if( skip > 0 ){ + skip--; + } + } + }else if( key==BTN_LEFT ){ + return; + }else if( key==BTN_RIGHT ){ + return; //return file here + } + } +} void msc_menu(void){ DoString(0,8,"MSC Enabled.");