diff options
author | Jonathan Gordon <rockbox@jdgordon.info> | 2006-12-27 02:37:12 +0000 |
---|---|---|
committer | Jonathan Gordon <rockbox@jdgordon.info> | 2006-12-27 02:37:12 +0000 |
commit | 5f23fe0277f75690554018561bf3c16d7fb211f2 (patch) | |
tree | 6ccb1c53649292e2b80d73793381492967f34a7f /apps | |
parent | 594099f1735e4ca92a9cc10d8375e728a72256f1 (diff) | |
download | rockbox-5f23fe0277f75690554018561bf3c16d7fb211f2.tar.gz rockbox-5f23fe0277f75690554018561bf3c16d7fb211f2.zip |
Minor changes to the delete screen (FS#6022). Use multi-screen api.
Show the file bin deleted instead of just the current folder. Makes it
look less like it has frozen.
Boost the cpu for the delete folder call.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11846 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r-- | apps/onplay.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/apps/onplay.c b/apps/onplay.c index 98b1270b89..5e7d1e0fe2 100644 --- a/apps/onplay.c +++ b/apps/onplay.c | |||
@@ -410,6 +410,7 @@ static int remove_dir(char* dirname, int len) | |||
410 | int result = 0; | 410 | int result = 0; |
411 | DIR* dir; | 411 | DIR* dir; |
412 | int dirlen = strlen(dirname); | 412 | int dirlen = strlen(dirname); |
413 | int i; | ||
413 | 414 | ||
414 | dir = opendir(dirname); | 415 | dir = opendir(dirname); |
415 | if (!dir) | 416 | if (!dir) |
@@ -423,9 +424,12 @@ static int remove_dir(char* dirname, int len) | |||
423 | if (!entry) | 424 | if (!entry) |
424 | break; | 425 | break; |
425 | 426 | ||
427 | dirname[dirlen] ='\0'; | ||
428 | FOR_NB_SCREENS(i) | ||
429 | screens[i].puts(0,1,dirname); | ||
430 | |||
426 | /* append name to current directory */ | 431 | /* append name to current directory */ |
427 | snprintf(dirname+dirlen, len-dirlen, "/%s", entry->d_name); | 432 | snprintf(dirname+dirlen, len-dirlen, "/%s", entry->d_name); |
428 | |||
429 | if (entry->attribute & ATTR_DIRECTORY) | 433 | if (entry->attribute & ATTR_DIRECTORY) |
430 | { /* remove a subdirectory */ | 434 | { /* remove a subdirectory */ |
431 | if (!strcmp((char *)entry->d_name, ".") || | 435 | if (!strcmp((char *)entry->d_name, ".") || |
@@ -433,18 +437,21 @@ static int remove_dir(char* dirname, int len) | |||
433 | continue; /* skip these */ | 437 | continue; /* skip these */ |
434 | 438 | ||
435 | /* inform the user which dir we're deleting */ | 439 | /* inform the user which dir we're deleting */ |
436 | lcd_puts(0,1,dirname); | 440 | |
437 | #ifdef HAVE_LCD_BITMAP | ||
438 | lcd_update(); | ||
439 | #endif | ||
440 | result = remove_dir(dirname, len); /* recursion */ | 441 | result = remove_dir(dirname, len); /* recursion */ |
441 | if (result) | 442 | if (result) |
442 | break; /* or better continue, delete what we can? */ | 443 | break; /* or better continue, delete what we can? */ |
443 | } | 444 | } |
444 | else | 445 | else |
445 | { /* remove a file */ | 446 | { /* remove a file */ |
447 | FOR_NB_SCREENS(i) | ||
448 | screens[i].puts_scroll(0,2,entry->d_name); | ||
446 | result = remove(dirname); | 449 | result = remove(dirname); |
447 | } | 450 | } |
451 | #ifdef HAVE_LCD_BITMAP | ||
452 | FOR_NB_SCREENS(i) | ||
453 | screens[i].update(); | ||
454 | #endif | ||
448 | if(ACTION_STD_CANCEL == get_action(CONTEXT_STD,TIMEOUT_NOBLOCK)) | 455 | if(ACTION_STD_CANCEL == get_action(CONTEXT_STD,TIMEOUT_NOBLOCK)) |
449 | { | 456 | { |
450 | gui_syncsplash(HZ, true, str(LANG_MENU_SETTING_CANCEL)); | 457 | gui_syncsplash(HZ, true, str(LANG_MENU_SETTING_CANCEL)); |
@@ -485,8 +492,10 @@ static bool delete_handler(bool is_dir) | |||
485 | if (is_dir) | 492 | if (is_dir) |
486 | { | 493 | { |
487 | char pathname[MAX_PATH]; /* space to go deep */ | 494 | char pathname[MAX_PATH]; /* space to go deep */ |
495 | cpu_boost(true); | ||
488 | strncpy(pathname, selected_file, sizeof pathname); | 496 | strncpy(pathname, selected_file, sizeof pathname); |
489 | res = remove_dir(pathname, sizeof(pathname)); | 497 | res = remove_dir(pathname, sizeof(pathname)); |
498 | cpu_boost(false); | ||
490 | } | 499 | } |
491 | else | 500 | else |
492 | res = remove(selected_file); | 501 | res = remove(selected_file); |