diff options
author | Hardeep Sidhu <dyp@pobox.com> | 2003-07-02 15:54:44 +0000 |
---|---|---|
committer | Hardeep Sidhu <dyp@pobox.com> | 2003-07-02 15:54:44 +0000 |
commit | 11e7ad50a07c0ffcb2005e40c3314bb49a9a1d8b (patch) | |
tree | 4ff3c606a0e46d353253c3b1cb44f4170cf31e4f | |
parent | 8dd3a822c7cf48ae23440697e8ba76415c441a55 (diff) | |
download | rockbox-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.lang | 9 | ||||
-rw-r--r-- | apps/onplay.c | 40 | ||||
-rw-r--r-- | apps/playlist.c | 14 | ||||
-rw-r--r-- | apps/playlist.h | 3 | ||||
-rw-r--r-- | apps/playlist_menu.c | 9 | ||||
-rw-r--r-- | apps/settings.c | 20 | ||||
-rw-r--r-- | apps/settings.h | 5 |
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 | ||
1651 | id: LANG_QUEUE_FIRST | 1651 | id: LANG_QUEUE_FIRST |
1652 | desc: in onplay menu. queue a track/playlist into dynamic playlist. | 1652 | desc: in onplay menu. queue a track/playlist into dynamic playlist. |
1653 | eng: "Queue first" | 1653 | eng: "Queue next" |
1654 | new: | 1654 | new: |
1655 | 1655 | ||
1656 | id: LANG_INSERT_FIRST | 1656 | id: LANG_INSERT_FIRST |
1657 | desc: in onplay menu. insert a track/playlist into dynamic playlist. | 1657 | desc: in onplay menu. insert a track/playlist into dynamic playlist. |
1658 | eng: "Insert first" | 1658 | eng: "Insert next" |
1659 | new: | 1659 | new: |
1660 | 1660 | ||
1661 | id: LANG_SAVE_DYNAMIC_PLAYLIST | 1661 | id: LANG_SAVE_DYNAMIC_PLAYLIST |
@@ -1722,3 +1722,8 @@ id: LANG_RECURSE_DIRECTORY | |||
1722 | desc: In playlist menu | 1722 | desc: In playlist menu |
1723 | eng: "Recursively Insert Directories" | 1723 | eng: "Recursively Insert Directories" |
1724 | new: | 1724 | new: |
1725 | |||
1726 | id: LANG_RECURSE_DIRECTORY_QUESTION | ||
1727 | desc: Asked from onplay screen | ||
1728 | eng: "Recursively?" | ||
1729 | new: | ||
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); | |||
131 | static int add_track_to_playlist(char *filename, int position, bool queue, | 131 | static int add_track_to_playlist(char *filename, int position, bool queue, |
132 | int seek_pos); | 132 | int seek_pos); |
133 | static int add_directory_to_playlist(char *dirname, int *position, bool queue, | 133 | static int add_directory_to_playlist(char *dirname, int *position, bool queue, |
134 | int *count); | 134 | int *count, bool recurse); |
135 | static int remove_track_from_playlist(int position, bool write); | 135 | static int remove_track_from_playlist(int position, bool write); |
136 | static int randomise_playlist(unsigned int seed, bool start_current, | 136 | static 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 | */ |
404 | static int add_directory_to_playlist(char *dirname, int *position, bool queue, | 404 | static 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 | */ |
1388 | int playlist_insert_directory(char *dirname, int position, bool queue) | 1388 | int 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); | |||
51 | int playlist_resume(void); | 51 | int playlist_resume(void); |
52 | int playlist_add(char *filename); | 52 | int playlist_add(char *filename); |
53 | int playlist_insert_track(char *filename, int position, bool queue); | 53 | int playlist_insert_track(char *filename, int position, bool queue); |
54 | int playlist_insert_directory(char *dirname, int position, bool queue); | 54 | int playlist_insert_directory(char *dirname, int position, bool queue, |
55 | bool recurse); | ||
55 | int playlist_insert_playlist(char *filename, int position, bool queue); | 56 | int playlist_insert_playlist(char *filename, int position, bool queue); |
56 | int playlist_delete(int index); | 57 | int playlist_delete(int index); |
57 | int playlist_shuffle(int random_seed, int start_index); | 58 | int 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 | ||
50 | static bool recurse_directory(void) | 50 | static 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 | ||
56 | bool playlist_menu(void) | 61 | bool 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 | ||
1465 | bool set_bool(char* string, bool* variable ) | 1471 | bool 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 | ||
172 | enum optiontype { INT, BOOL }; | 172 | enum 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 */ |
224 | enum { SHOW_ALL, SHOW_SUPPORTED, SHOW_MUSIC, SHOW_PLAYLIST, NUM_FILTER_MODES }; | 224 | enum { SHOW_ALL, SHOW_SUPPORTED, SHOW_MUSIC, SHOW_PLAYLIST, NUM_FILTER_MODES }; |
225 | 225 | ||
226 | /* recursive dir insert options */ | ||
227 | enum { RECURSE_OFF, RECURSE_ON, RECURSE_ASK }; | ||
228 | |||
226 | #endif /* __SETTINGS_H__ */ | 229 | #endif /* __SETTINGS_H__ */ |