summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/tree.c62
1 files changed, 20 insertions, 42 deletions
diff --git a/apps/tree.c b/apps/tree.c
index adb07e11fd..13547ee2b1 100644
--- a/apps/tree.c
+++ b/apps/tree.c
@@ -86,6 +86,20 @@ extern unsigned char bitmap_icons_6x8[LastIcon][6];
86 86
87#endif /* HAVE_LCD_BITMAP */ 87#endif /* HAVE_LCD_BITMAP */
88 88
89#ifdef HAVE_RECORDER_KEYPAD
90#define TREE_NEXT BUTTON_DOWN
91#define TREE_PREV BUTTON_UP
92#define TREE_EXIT BUTTON_LEFT
93#define TREE_ENTER BUTTON_RIGHT
94#define TREE_MENU BUTTON_F1
95#else
96#define TREE_NEXT BUTTON_RIGHT
97#define TREE_PREV BUTTON_LEFT
98#define TREE_EXIT BUTTON_STOP
99#define TREE_ENTER BUTTON_PLAY
100#define TREE_MENU BUTTON_MENU
101#endif /* HAVE_RECORDER_KEYPAD */
102
89static int compare(const void* e1, const void* e2) 103static int compare(const void* e1, const void* e2)
90{ 104{
91 return strncmp((*(struct entry**)e1)->name, (*(struct entry**)e2)->name, 105 return strncmp((*(struct entry**)e1)->name, (*(struct entry**)e2)->name,
@@ -223,6 +237,7 @@ bool dirbrowse(char *root)
223 lcd_putsxy(0,0, "[Browse]",0); 237 lcd_putsxy(0,0, "[Browse]",0);
224 lcd_setmargins(0,MARGIN_Y); 238 lcd_setmargins(0,MARGIN_Y);
225 lcd_setfont(0); 239 lcd_setfont(0);
240}
226#endif 241#endif
227 memcpy(currdir,root,sizeof(currdir)); 242 memcpy(currdir,root,sizeof(currdir));
228 243
@@ -234,22 +249,11 @@ bool dirbrowse(char *root)
234 lcd_puts(0, dircursor, CURSOR_CHAR); 249 lcd_puts(0, dircursor, CURSOR_CHAR);
235 lcd_puts_scroll(LINE_X, LINE_Y+dircursor, 250 lcd_puts_scroll(LINE_X, LINE_Y+dircursor,
236 dircacheptr[start+dircursor]->name); 251 dircacheptr[start+dircursor]->name);
237#ifdef HAVE_LCD_BITMAP
238 lcd_update(); 252 lcd_update();
239#endif
240 253
241 while(1) { 254 while(1) {
242 switch(button_get(true)) { 255 switch(button_get(true)) {
243#if defined(SIMULATOR) && defined(HAVE_RECODER_KEYPAD) 256 case TREE_EXIT:
244 case BUTTON_OFF:
245 return false;
246#endif
247
248#ifdef HAVE_RECORDER_KEYPAD
249 case BUTTON_LEFT:
250#else
251 case BUTTON_STOP:
252#endif
253 i=strlen(currdir); 257 i=strlen(currdir);
254 if (i>1) { 258 if (i>1) {
255 while (currdir[i-1]!='/') 259 while (currdir[i-1]!='/')
@@ -275,10 +279,7 @@ bool dirbrowse(char *root)
275 279
276 break; 280 break;
277 281
278#ifdef HAVE_RECORDER_KEYPAD 282 case TREE_ENTER:
279 case BUTTON_RIGHT:
280#endif
281 case BUTTON_PLAY:
282 if ((currdir[0]=='/') && (currdir[1]==0)) { 283 if ((currdir[0]=='/') && (currdir[1]==0)) {
283 snprintf(buf,sizeof(buf),"%s%s",currdir, 284 snprintf(buf,sizeof(buf),"%s%s",currdir,
284 dircacheptr[dircursor+start]->name); 285 dircacheptr[dircursor+start]->name);
@@ -312,10 +313,6 @@ bool dirbrowse(char *root)
312 playing = 1; 313 playing = 1;
313 playtune(buf); 314 playtune(buf);
314 playing = 0; 315 playing = 0;
315#ifdef HAVE_LCD_BITMAP
316 lcd_setmargins(0, MARGIN_Y);
317 lcd_setfont(0);
318#endif
319 } 316 }
320 } 317 }
321 318
@@ -323,11 +320,7 @@ bool dirbrowse(char *root)
323 lcd_puts(0, LINE_Y+dircursor, CURSOR_CHAR); 320 lcd_puts(0, LINE_Y+dircursor, CURSOR_CHAR);
324 break; 321 break;
325 322
326#ifdef HAVE_RECORDER_KEYPAD 323 case TREE_PREV:
327 case BUTTON_UP:
328#else
329 case BUTTON_LEFT:
330#endif
331 if(dircursor) { 324 if(dircursor) {
332 lcd_puts(0, LINE_Y+dircursor, " "); 325 lcd_puts(0, LINE_Y+dircursor, " ");
333 dircursor--; 326 dircursor--;
@@ -343,11 +336,7 @@ bool dirbrowse(char *root)
343 } 336 }
344 break; 337 break;
345 338
346#ifdef HAVE_RECORDER_KEYPAD 339 case TREE_NEXT:
347 case BUTTON_DOWN:
348#else
349 case BUTTON_RIGHT:
350#endif
351 if (dircursor + start + 1 < numentries ) { 340 if (dircursor + start + 1 < numentries ) {
352 if(dircursor+1 < TREE_MAX_ON_SCREEN) { 341 if(dircursor+1 < TREE_MAX_ON_SCREEN) {
353 lcd_puts(0, LINE_Y+dircursor, " "); 342 lcd_puts(0, LINE_Y+dircursor, " ");
@@ -362,24 +351,13 @@ bool dirbrowse(char *root)
362 } 351 }
363 break; 352 break;
364 353
365#ifdef HAVE_RECORDER_KEYPAD 354 case TREE_MENU:
366 case BUTTON_F1:
367 case BUTTON_F2:
368 case BUTTON_F3:
369#else
370 case BUTTON_MENU:
371#endif
372 lcd_stop_scroll(); 355 lcd_stop_scroll();
373 main_menu(); 356 main_menu();
374 357
375 /* restore display */ 358 /* restore display */
376 /* TODO: this is just a copy from BUTTON_STOP, fix it */ 359 /* TODO: this is just a copy from BUTTON_STOP, fix it */
377 lcd_clear_display(); 360 lcd_clear_display();
378#ifdef HAVE_LCD_BITMAP
379 lcd_putsxy(0,0, "[Browse]",0);
380 lcd_setmargins(0,MARGIN_Y);
381 lcd_setfont(0);
382#endif
383 numentries = showdir(currdir, start); 361 numentries = showdir(currdir, start);
384 lcd_puts(0, LINE_Y+dircursor, CURSOR_CHAR); 362 lcd_puts(0, LINE_Y+dircursor, CURSOR_CHAR);
385 363