summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Gordon <rockbox@jdgordon.info>2006-12-27 02:37:12 +0000
committerJonathan Gordon <rockbox@jdgordon.info>2006-12-27 02:37:12 +0000
commit5f23fe0277f75690554018561bf3c16d7fb211f2 (patch)
tree6ccb1c53649292e2b80d73793381492967f34a7f
parent594099f1735e4ca92a9cc10d8375e728a72256f1 (diff)
downloadrockbox-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
-rw-r--r--apps/onplay.c19
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);