summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHardeep Sidhu <dyp@pobox.com>2003-07-02 15:54:44 +0000
committerHardeep Sidhu <dyp@pobox.com>2003-07-02 15:54:44 +0000
commit11e7ad50a07c0ffcb2005e40c3314bb49a9a1d8b (patch)
tree4ff3c606a0e46d353253c3b1cb44f4170cf31e4f
parent8dd3a822c7cf48ae23440697e8ba76415c441a55 (diff)
downloadrockbox-11e7ad50a07c0ffcb2005e40c3314bb49a9a1d8b.tar.gz
rockbox-11e7ad50a07c0ffcb2005e40c3314bb49a9a1d8b.zip
Added "Ask" option to recursive dir insert which, if enabled, will ask users whether they want to recursively insert selected dir. Also, renamed "Insert first" and "Queue first" to "Insert next" and "Queue next" respectively.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@3799 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/lang/english.lang9
-rw-r--r--apps/onplay.c40
-rw-r--r--apps/playlist.c14
-rw-r--r--apps/playlist.h3
-rw-r--r--apps/playlist_menu.c9
-rw-r--r--apps/settings.c20
-rw-r--r--apps/settings.h5
7 files changed, 80 insertions, 20 deletions
diff --git a/apps/lang/english.lang b/apps/lang/english.lang
index dab8fa6bd4..5360c7c21e 100644
--- a/apps/lang/english.lang
+++ b/apps/lang/english.lang
@@ -1650,12 +1650,12 @@ new:
1650 1650
1651id: LANG_QUEUE_FIRST 1651id: LANG_QUEUE_FIRST
1652desc: in onplay menu. queue a track/playlist into dynamic playlist. 1652desc: in onplay menu. queue a track/playlist into dynamic playlist.
1653eng: "Queue first" 1653eng: "Queue next"
1654new: 1654new:
1655 1655
1656id: LANG_INSERT_FIRST 1656id: LANG_INSERT_FIRST
1657desc: in onplay menu. insert a track/playlist into dynamic playlist. 1657desc: in onplay menu. insert a track/playlist into dynamic playlist.
1658eng: "Insert first" 1658eng: "Insert next"
1659new: 1659new:
1660 1660
1661id: LANG_SAVE_DYNAMIC_PLAYLIST 1661id: LANG_SAVE_DYNAMIC_PLAYLIST
@@ -1722,3 +1722,8 @@ id: LANG_RECURSE_DIRECTORY
1722desc: In playlist menu 1722desc: In playlist menu
1723eng: "Recursively Insert Directories" 1723eng: "Recursively Insert Directories"
1724new: 1724new:
1725
1726id: LANG_RECURSE_DIRECTORY_QUESTION
1727desc: Asked from onplay screen
1728eng: "Recursively?"
1729new:
diff --git a/apps/onplay.c b/apps/onplay.c
index 6c538f8d8a..6c6b2eed0b 100644
--- a/apps/onplay.c
+++ b/apps/onplay.c
@@ -62,7 +62,45 @@ static bool add_to_playlist(int position, bool queue)
62 if (selected_file_attr & TREE_ATTR_MPA) 62 if (selected_file_attr & TREE_ATTR_MPA)
63 playlist_insert_track(selected_file, position, queue); 63 playlist_insert_track(selected_file, position, queue);
64 else if (selected_file_attr & ATTR_DIRECTORY) 64 else if (selected_file_attr & ATTR_DIRECTORY)
65 playlist_insert_directory(selected_file, position, queue); 65 {
66 bool recurse = false;
67
68 if (global_settings.recursive_dir_insert != RECURSE_ASK)
69 recurse = (bool)global_settings.recursive_dir_insert;
70 else
71 {
72 /* Ask if user wants to recurse directory */
73 bool exit = false;
74
75 lcd_clear_display();
76 lcd_puts_scroll(0,0,str(LANG_RECURSE_DIRECTORY_QUESTION));
77 lcd_puts_scroll(0,1,selected_file);
78
79#ifdef HAVE_LCD_BITMAP
80 lcd_puts(0,3,str(LANG_CONFIRM_WITH_PLAY_RECORDER));
81 lcd_puts(0,4,str(LANG_CANCEL_WITH_ANY_RECORDER));
82#endif
83
84 lcd_update();
85
86 while (!exit) {
87 int btn = button_get(true);
88 switch (btn) {
89 case BUTTON_PLAY:
90 recurse = true;
91 exit = true;
92 break;
93 default:
94 /* ignore button releases */
95 if (!(btn & BUTTON_REL))
96 exit = true;
97 break;
98 }
99 }
100 }
101
102 playlist_insert_directory(selected_file, position, queue, recurse);
103 }
66 else if (selected_file_attr & TREE_ATTR_M3U) 104 else if (selected_file_attr & TREE_ATTR_M3U)
67 playlist_insert_playlist(selected_file, position, queue); 105 playlist_insert_playlist(selected_file, position, queue);
68 106
diff --git a/apps/playlist.c b/apps/playlist.c
index 05149d164f..b5309cdba0 100644
--- a/apps/playlist.c
+++ b/apps/playlist.c
@@ -131,7 +131,7 @@ static int add_indices_to_playlist(void);
131static int add_track_to_playlist(char *filename, int position, bool queue, 131static int add_track_to_playlist(char *filename, int position, bool queue,
132 int seek_pos); 132 int seek_pos);
133static int add_directory_to_playlist(char *dirname, int *position, bool queue, 133static int add_directory_to_playlist(char *dirname, int *position, bool queue,
134 int *count); 134 int *count, bool recurse);
135static int remove_track_from_playlist(int position, bool write); 135static int remove_track_from_playlist(int position, bool write);
136static int randomise_playlist(unsigned int seed, bool start_current, 136static int randomise_playlist(unsigned int seed, bool start_current,
137 bool write); 137 bool write);
@@ -402,7 +402,7 @@ static int add_track_to_playlist(char *filename, int position, bool queue,
402 * Insert directory into playlist. May be called recursively. 402 * Insert directory into playlist. May be called recursively.
403 */ 403 */
404static int add_directory_to_playlist(char *dirname, int *position, bool queue, 404static int add_directory_to_playlist(char *dirname, int *position, bool queue,
405 int *count) 405 int *count, bool recurse)
406{ 406{
407 char buf[MAX_PATH+1]; 407 char buf[MAX_PATH+1];
408 char *count_str; 408 char *count_str;
@@ -446,12 +446,12 @@ static int add_directory_to_playlist(char *dirname, int *position, bool queue,
446 446
447 if (files[i].attr & ATTR_DIRECTORY) 447 if (files[i].attr & ATTR_DIRECTORY)
448 { 448 {
449 if (global_settings.recursive_dir_insert) 449 if (recurse)
450 { 450 {
451 /* recursively add directories */ 451 /* recursively add directories */
452 snprintf(buf, sizeof(buf), "%s/%s", dirname, files[i].name); 452 snprintf(buf, sizeof(buf), "%s/%s", dirname, files[i].name);
453 result = add_directory_to_playlist(buf, position, queue, 453 result = add_directory_to_playlist(buf, position, queue,
454 count); 454 count, recurse);
455 if (result < 0) 455 if (result < 0)
456 break; 456 break;
457 457
@@ -1385,7 +1385,8 @@ int playlist_insert_track(char *filename, int position, bool queue)
1385/* 1385/*
1386 * Insert all tracks from specified directory into playlist. 1386 * Insert all tracks from specified directory into playlist.
1387 */ 1387 */
1388int playlist_insert_directory(char *dirname, int position, bool queue) 1388int playlist_insert_directory(char *dirname, int position, bool queue,
1389 bool recurse)
1389{ 1390{
1390 int count = 0; 1391 int count = 0;
1391 int result; 1392 int result;
@@ -1398,7 +1399,8 @@ int playlist_insert_directory(char *dirname, int position, bool queue)
1398 1399
1399 display_playlist_count(count, count_str); 1400 display_playlist_count(count, count_str);
1400 1401
1401 result = add_directory_to_playlist(dirname, &position, queue, &count); 1402 result = add_directory_to_playlist(dirname, &position, queue, &count,
1403 recurse);
1402 fsync(playlist.control_fd); 1404 fsync(playlist.control_fd);
1403 1405
1404 display_playlist_count(count, count_str); 1406 display_playlist_count(count, count_str);
diff --git a/apps/playlist.h b/apps/playlist.h
index a5318cd202..0b30e7a3e1 100644
--- a/apps/playlist.h
+++ b/apps/playlist.h
@@ -51,7 +51,8 @@ int playlist_create(char *dir, char *file);
51int playlist_resume(void); 51int playlist_resume(void);
52int playlist_add(char *filename); 52int playlist_add(char *filename);
53int playlist_insert_track(char *filename, int position, bool queue); 53int playlist_insert_track(char *filename, int position, bool queue);
54int playlist_insert_directory(char *dirname, int position, bool queue); 54int playlist_insert_directory(char *dirname, int position, bool queue,
55 bool recurse);
55int playlist_insert_playlist(char *filename, int position, bool queue); 56int playlist_insert_playlist(char *filename, int position, bool queue);
56int playlist_delete(int index); 57int playlist_delete(int index);
57int playlist_shuffle(int random_seed, int start_index); 58int playlist_shuffle(int random_seed, int start_index);
diff --git a/apps/playlist_menu.c b/apps/playlist_menu.c
index 3508240efe..4223e3cf72 100644
--- a/apps/playlist_menu.c
+++ b/apps/playlist_menu.c
@@ -49,8 +49,13 @@ static bool save_playlist(void)
49 49
50static bool recurse_directory(void) 50static bool recurse_directory(void)
51{ 51{
52 return (set_bool( str(LANG_RECURSE_DIRECTORY), 52 char* names[] = { str(LANG_OFF),
53 &global_settings.recursive_dir_insert)); 53 str(LANG_ON),
54 str(LANG_RESUME_SETTING_ASK) };
55
56 return set_option( str(LANG_RECURSE_DIRECTORY),
57 &global_settings.recursive_dir_insert, INT, names, 3,
58 NULL );
54} 59}
55 60
56bool playlist_menu(void) 61bool playlist_menu(void)
diff --git a/apps/settings.c b/apps/settings.c
index e5fbfb5e06..90775edab3 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -351,7 +351,7 @@ int settings_save( void )
351 config_block[0x1b] = (unsigned char) 351 config_block[0x1b] = (unsigned char)
352 (((global_settings.browse_current & 1)) | 352 (((global_settings.browse_current & 1)) |
353 ((global_settings.play_selected & 1) << 1) | 353 ((global_settings.play_selected & 1) << 1) |
354 ((global_settings.recursive_dir_insert & 1) << 2)); 354 ((global_settings.recursive_dir_insert & 3) << 2));
355 355
356 config_block[0x1c] = (unsigned char)global_settings.peak_meter_hold | 356 config_block[0x1c] = (unsigned char)global_settings.peak_meter_hold |
357 (global_settings.rec_editable?0x80:0); 357 (global_settings.rec_editable?0x80:0);
@@ -646,7 +646,7 @@ void settings_load(void)
646 global_settings.browse_current = (config_block[0x1b]) & 1; 646 global_settings.browse_current = (config_block[0x1b]) & 1;
647 global_settings.play_selected = (config_block[0x1b] >> 1) & 1; 647 global_settings.play_selected = (config_block[0x1b] >> 1) & 1;
648 global_settings.recursive_dir_insert = 648 global_settings.recursive_dir_insert =
649 (config_block[0x1b] >> 2) & 1; 649 (config_block[0x1b] >> 2) & 3;
650 } 650 }
651 651
652 if (config_block[0x1c] != 0xFF) { 652 if (config_block[0x1c] != 0xFF) {
@@ -1079,8 +1079,11 @@ bool settings_load_config(char* file)
1079 else if (!strcasecmp(name, "max files in playlist")) 1079 else if (!strcasecmp(name, "max files in playlist"))
1080 set_cfg_int(&global_settings.max_files_in_playlist, value, 1080 set_cfg_int(&global_settings.max_files_in_playlist, value,
1081 1000, 20000); 1081 1000, 20000);
1082 else if (!strcasecmp(name, "recursive directory insert")) 1082 else if (!strcasecmp(name, "recursive directory insert")) {
1083 set_cfg_bool(&global_settings.recursive_dir_insert, value); 1083 static char* options[] = {"off", "on", "ask"};
1084 set_cfg_option(&global_settings.recursive_dir_insert, value,
1085 options, 3);
1086 }
1084 } 1087 }
1085 1088
1086 close(fd); 1089 close(fd);
@@ -1369,8 +1372,11 @@ bool settings_save_config(void)
1369 fprintf(fd, "max files in playlist: %d\r\n", 1372 fprintf(fd, "max files in playlist: %d\r\n",
1370 global_settings.max_files_in_playlist); 1373 global_settings.max_files_in_playlist);
1371 1374
1372 fprintf(fd, "recursive directory insert: %s\r\n", 1375 {
1373 boolopt[global_settings.recursive_dir_insert]); 1376 static char* options[] = {"off", "on", "ask"};
1377 fprintf(fd, "recursive directory insert: %s\r\n",
1378 options[global_settings.recursive_dir_insert]);
1379 }
1374 1380
1375 close(fd); 1381 close(fd);
1376 1382
@@ -1459,7 +1465,7 @@ void settings_reset(void) {
1459 global_settings.max_files_in_dir = 400; 1465 global_settings.max_files_in_dir = 400;
1460 global_settings.max_files_in_playlist = 10000; 1466 global_settings.max_files_in_playlist = 10000;
1461 global_settings.show_icons = true; 1467 global_settings.show_icons = true;
1462 global_settings.recursive_dir_insert = false; 1468 global_settings.recursive_dir_insert = RECURSE_OFF;
1463} 1469}
1464 1470
1465bool set_bool(char* string, bool* variable ) 1471bool set_bool(char* string, bool* variable )
diff --git a/apps/settings.h b/apps/settings.h
index 25efd65e9a..e3eff50448 100644
--- a/apps/settings.h
+++ b/apps/settings.h
@@ -166,7 +166,7 @@ struct user_settings
166 int max_files_in_dir; /* Max entries in directory (file browser) */ 166 int max_files_in_dir; /* Max entries in directory (file browser) */
167 int max_files_in_playlist; /* Max entries in playlist */ 167 int max_files_in_playlist; /* Max entries in playlist */
168 bool show_icons; /* 0=hide 1=show */ 168 bool show_icons; /* 0=hide 1=show */
169 bool recursive_dir_insert;/* should directories be inserted recursively */ 169 int recursive_dir_insert; /* should directories be inserted recursively */
170}; 170};
171 171
172enum optiontype { INT, BOOL }; 172enum optiontype { INT, BOOL };
@@ -223,4 +223,7 @@ enum { REPEAT_OFF, REPEAT_ALL, REPEAT_ONE, NUM_REPEAT_MODES };
223/* dir filter options */ 223/* dir filter options */
224enum { SHOW_ALL, SHOW_SUPPORTED, SHOW_MUSIC, SHOW_PLAYLIST, NUM_FILTER_MODES }; 224enum { SHOW_ALL, SHOW_SUPPORTED, SHOW_MUSIC, SHOW_PLAYLIST, NUM_FILTER_MODES };
225 225
226/* recursive dir insert options */
227enum { RECURSE_OFF, RECURSE_ON, RECURSE_ASK };
228
226#endif /* __SETTINGS_H__ */ 229#endif /* __SETTINGS_H__ */