diff options
Diffstat (limited to 'apps/tree.c')
-rw-r--r-- | apps/tree.c | 113 |
1 files changed, 62 insertions, 51 deletions
diff --git a/apps/tree.c b/apps/tree.c index cef63a0b96..0d583a7a6e 100644 --- a/apps/tree.c +++ b/apps/tree.c | |||
@@ -354,60 +354,71 @@ bool dirbrowse(char *root) | |||
354 | break; | 354 | break; |
355 | 355 | ||
356 | case TREE_PREV: | 356 | case TREE_PREV: |
357 | if(dircursor) { | 357 | if(filesindir) |
358 | put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, false); | 358 | { |
359 | dircursor--; | 359 | if(dircursor) { |
360 | put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, true); | 360 | put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, false); |
361 | } | 361 | dircursor--; |
362 | else { | 362 | put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, true); |
363 | if (start) { | 363 | } |
364 | start--; | 364 | else { |
365 | numentries = showdir(currdir, start); | 365 | if (start) { |
366 | put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, true); | 366 | start--; |
367 | } | 367 | numentries = showdir(currdir, start); |
368 | else { | 368 | put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, true); |
369 | if (numentries < TREE_MAX_ON_SCREEN) { | 369 | } |
370 | put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, false); | 370 | else { |
371 | dircursor = numentries - 1; | 371 | if (numentries < TREE_MAX_ON_SCREEN) { |
372 | put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, true); | 372 | put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, |
373 | } | 373 | false); |
374 | else { | 374 | dircursor = numentries - 1; |
375 | start = numentries - TREE_MAX_ON_SCREEN; | 375 | put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, |
376 | dircursor = TREE_MAX_ON_SCREEN - 1; | 376 | true); |
377 | numentries = showdir(currdir, start); | 377 | } |
378 | put_cursorxy(0, CURSOR_Y + LINE_Y + TREE_MAX_ON_SCREEN - 1, true); | 378 | else { |
379 | } | 379 | start = numentries - TREE_MAX_ON_SCREEN; |
380 | } | 380 | dircursor = TREE_MAX_ON_SCREEN - 1; |
381 | } | 381 | numentries = showdir(currdir, start); |
382 | lcd_update(); | 382 | put_cursorxy(0, CURSOR_Y + LINE_Y + |
383 | TREE_MAX_ON_SCREEN - 1, true); | ||
384 | } | ||
385 | } | ||
386 | } | ||
387 | lcd_update(); | ||
388 | } | ||
383 | break; | 389 | break; |
384 | 390 | ||
385 | case TREE_NEXT: | 391 | case TREE_NEXT: |
386 | if (dircursor + start + 1 < numentries ) { | 392 | if(filesindir) |
387 | if(dircursor+1 < TREE_MAX_ON_SCREEN) { | 393 | { |
388 | put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, false); | 394 | if (dircursor + start + 1 < numentries ) { |
389 | dircursor++; | 395 | if(dircursor+1 < TREE_MAX_ON_SCREEN) { |
390 | put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, true); | 396 | put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, |
391 | } | 397 | false); |
392 | else { | 398 | dircursor++; |
393 | start++; | 399 | put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, true); |
394 | numentries = showdir(currdir, start); | 400 | } |
395 | put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, true); | 401 | else { |
396 | } | 402 | start++; |
397 | } | 403 | numentries = showdir(currdir, start); |
398 | else { | 404 | put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, true); |
399 | if(numentries < TREE_MAX_ON_SCREEN) { | 405 | } |
400 | put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, false); | 406 | } |
401 | start = dircursor = 0; | 407 | else { |
402 | put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, true); | 408 | if(numentries < TREE_MAX_ON_SCREEN) { |
403 | } | 409 | put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, |
404 | else { | 410 | false); |
405 | start = dircursor = 0; | 411 | start = dircursor = 0; |
406 | numentries = showdir(currdir, start); | 412 | put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, true); |
407 | put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, true); | 413 | } |
408 | } | 414 | else { |
409 | } | 415 | start = dircursor = 0; |
410 | lcd_update(); | 416 | numentries = showdir(currdir, start); |
417 | put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, true); | ||
418 | } | ||
419 | } | ||
420 | lcd_update(); | ||
421 | } | ||
411 | break; | 422 | break; |
412 | 423 | ||
413 | case TREE_MENU: { | 424 | case TREE_MENU: { |