diff options
-rw-r--r-- | apps/lang/english.lang | 56 | ||||
-rw-r--r-- | apps/menus/playlist_menu.c | 22 | ||||
-rw-r--r-- | apps/onplay.c | 154 | ||||
-rw-r--r-- | apps/settings.h | 8 | ||||
-rw-r--r-- | apps/settings_list.c | 9 | ||||
-rw-r--r-- | manual/appendix/config_file_options.tex | 4 | ||||
-rw-r--r-- | manual/configure_rockbox/playlist_options.tex | 40 | ||||
-rw-r--r-- | manual/main_menu/main.tex | 2 | ||||
-rw-r--r-- | manual/working_with_playlists/main.tex | 8 |
9 files changed, 242 insertions, 61 deletions
diff --git a/apps/lang/english.lang b/apps/lang/english.lang index 9b3f6712e4..80a29601a0 100644 --- a/apps/lang/english.lang +++ b/apps/lang/english.lang | |||
@@ -15618,3 +15618,59 @@ | |||
15618 | *: "Clear List & Play Next" | 15618 | *: "Clear List & Play Next" |
15619 | </voice> | 15619 | </voice> |
15620 | </phrase> | 15620 | </phrase> |
15621 | <phrase> | ||
15622 | id: LANG_QUEUE_MENU | ||
15623 | desc: in onplay menu | ||
15624 | user: core | ||
15625 | <source> | ||
15626 | *: "Queue..." | ||
15627 | </source> | ||
15628 | <dest> | ||
15629 | *: "Queue..." | ||
15630 | </dest> | ||
15631 | <voice> | ||
15632 | *: "Queue..." | ||
15633 | </voice> | ||
15634 | </phrase> | ||
15635 | <phrase> | ||
15636 | id: LANG_SHOW_QUEUE_OPTIONS | ||
15637 | desc: in Current Playlist settings | ||
15638 | user: core | ||
15639 | <source> | ||
15640 | *: "Show Queue Options" | ||
15641 | </source> | ||
15642 | <dest> | ||
15643 | *: "Show Queue Options" | ||
15644 | </dest> | ||
15645 | <voice> | ||
15646 | *: "Show Queue Options" | ||
15647 | </voice> | ||
15648 | </phrase> | ||
15649 | <phrase> | ||
15650 | id: LANG_SHOW_SHUFFLED_ADDING_OPTIONS | ||
15651 | desc: in Current Playlist settings | ||
15652 | user: core | ||
15653 | <source> | ||
15654 | *: "Show Shuffled Adding Options" | ||
15655 | </source> | ||
15656 | <dest> | ||
15657 | *: "Show Shuffled Adding Options" | ||
15658 | </dest> | ||
15659 | <voice> | ||
15660 | *: "Show Shuffled Adding Options" | ||
15661 | </voice> | ||
15662 | </phrase> | ||
15663 | <phrase> | ||
15664 | id: LANG_IN_SUBMENU | ||
15665 | desc: in Settings | ||
15666 | user: core | ||
15667 | <source> | ||
15668 | *: "In Submenu" | ||
15669 | </source> | ||
15670 | <dest> | ||
15671 | *: "In Submenu" | ||
15672 | </dest> | ||
15673 | <voice> | ||
15674 | *: "In Submenu" | ||
15675 | </voice> | ||
15676 | </phrase> \ No newline at end of file | ||
diff --git a/apps/menus/playlist_menu.c b/apps/menus/playlist_menu.c index b0d9a44a9e..dfb9d73d62 100644 --- a/apps/menus/playlist_menu.c +++ b/apps/menus/playlist_menu.c | |||
@@ -80,15 +80,14 @@ static int playlist_view_(void) | |||
80 | playlist_viewer_ex(NULL); | 80 | playlist_viewer_ex(NULL); |
81 | return 0; | 81 | return 0; |
82 | } | 82 | } |
83 | MENUITEM_FUNCTION(create_playlist_item, 0, ID2P(LANG_CREATE_PLAYLIST), | 83 | MENUITEM_FUNCTION(create_playlist_item, 0, ID2P(LANG_CREATE_PLAYLIST), |
84 | create_playlist, NULL, NULL, Icon_NOICON); | 84 | create_playlist, NULL, NULL, Icon_NOICON); |
85 | MENUITEM_FUNCTION(view_cur_playlist, 0, | 85 | MENUITEM_FUNCTION(view_cur_playlist, 0, |
86 | ID2P(LANG_VIEW_DYNAMIC_PLAYLIST), | 86 | ID2P(LANG_VIEW_DYNAMIC_PLAYLIST), |
87 | playlist_view_, NULL, NULL, Icon_NOICON); | 87 | playlist_view_, NULL, NULL, Icon_NOICON); |
88 | MENUITEM_FUNCTION(save_playlist, MENU_FUNC_USEPARAM, ID2P(LANG_SAVE_DYNAMIC_PLAYLIST), | 88 | MENUITEM_FUNCTION(save_playlist, MENU_FUNC_USEPARAM, ID2P(LANG_SAVE_DYNAMIC_PLAYLIST), |
89 | save_playlist_screen, NULL, NULL, Icon_NOICON); | 89 | save_playlist_screen, NULL, NULL, Icon_NOICON); |
90 | MENUITEM_SETTING(recursive_dir_insert, &global_settings.recursive_dir_insert, NULL); | 90 | MENUITEM_SETTING(recursive_dir_insert, &global_settings.recursive_dir_insert, NULL); |
91 | MENUITEM_SETTING(warn_on_erase, &global_settings.warnon_erase_dynplaylist, NULL); | ||
92 | static int clear_catalog_directory(void) | 91 | static int clear_catalog_directory(void) |
93 | { | 92 | { |
94 | catalog_set_directory(NULL); | 93 | catalog_set_directory(NULL); |
@@ -96,22 +95,29 @@ static int clear_catalog_directory(void) | |||
96 | splash(HZ, ID2P(LANG_RESET_DONE_CLEAR)); | 95 | splash(HZ, ID2P(LANG_RESET_DONE_CLEAR)); |
97 | return false; | 96 | return false; |
98 | } | 97 | } |
99 | MENUITEM_FUNCTION(clear_catalog_directory_item, 0, ID2P(LANG_RESET_PLAYLISTCAT_DIR), | 98 | MENUITEM_FUNCTION(clear_catalog_directory_item, 0, ID2P(LANG_RESET_PLAYLISTCAT_DIR), |
100 | clear_catalog_directory, NULL, NULL, Icon_file_view_menu); | 99 | clear_catalog_directory, NULL, NULL, Icon_file_view_menu); |
101 | 100 | ||
102 | /* Playlist viewer settings submenu */ | 101 | /* Playlist viewer settings submenu */ |
103 | MENUITEM_SETTING(show_icons, &global_settings.playlist_viewer_icons, NULL); | 102 | MENUITEM_SETTING(show_icons, &global_settings.playlist_viewer_icons, NULL); |
104 | MENUITEM_SETTING(show_indices, &global_settings.playlist_viewer_indices, NULL); | 103 | MENUITEM_SETTING(show_indices, &global_settings.playlist_viewer_indices, NULL); |
105 | MENUITEM_SETTING(track_display, | 104 | MENUITEM_SETTING(track_display, |
106 | &global_settings.playlist_viewer_track_display, NULL); | 105 | &global_settings.playlist_viewer_track_display, NULL); |
107 | MAKE_MENU(viewer_settings_menu, ID2P(LANG_PLAYLISTVIEWER_SETTINGS), | 106 | MAKE_MENU(viewer_settings_menu, ID2P(LANG_PLAYLISTVIEWER_SETTINGS), |
108 | NULL, Icon_Playlist, | 107 | NULL, Icon_Playlist, |
109 | &show_icons, &show_indices, &track_display); | 108 | &show_icons, &show_indices, &track_display); |
110 | 109 | ||
110 | /* Current Playlist submenu */ | ||
111 | MENUITEM_SETTING(warn_on_erase, &global_settings.warnon_erase_dynplaylist, NULL); | ||
112 | MENUITEM_SETTING(show_shuffled_adding_options, &global_settings.show_shuffled_adding_options, NULL); | ||
113 | MENUITEM_SETTING(show_queue_options, &global_settings.show_queue_options, NULL); | ||
114 | MAKE_MENU(currentplaylist_settings_menu, ID2P(LANG_CURRENT_PLAYLIST), | ||
115 | NULL, Icon_Playlist, | ||
116 | &warn_on_erase, &show_shuffled_adding_options, &show_queue_options); | ||
111 | 117 | ||
112 | MAKE_MENU(playlist_settings, ID2P(LANG_PLAYLISTS), NULL, | 118 | MAKE_MENU(playlist_settings, ID2P(LANG_PLAYLISTS), NULL, |
113 | Icon_Playlist, | 119 | Icon_Playlist, |
114 | &viewer_settings_menu, &recursive_dir_insert, &warn_on_erase); | 120 | &viewer_settings_menu, &recursive_dir_insert, ¤tplaylist_settings_menu); |
115 | MAKE_MENU(playlist_options, ID2P(LANG_PLAYLISTS), NULL, | 121 | MAKE_MENU(playlist_options, ID2P(LANG_PLAYLISTS), NULL, |
116 | Icon_Playlist, | 122 | Icon_Playlist, |
117 | &create_playlist_item, &view_cur_playlist, | 123 | &create_playlist_item, &view_cur_playlist, |
diff --git a/apps/onplay.c b/apps/onplay.c index 35d9a82bfd..be92a2909a 100644 --- a/apps/onplay.c +++ b/apps/onplay.c | |||
@@ -582,22 +582,8 @@ static int playlist_queue_func(void *param) | |||
582 | } | 582 | } |
583 | 583 | ||
584 | static int treeplaylist_wplayback_callback(int action, | 584 | static int treeplaylist_wplayback_callback(int action, |
585 | const struct menu_item_ex* this_item, | 585 | const struct menu_item_ex* this_item, |
586 | struct gui_synclist *this_list) | 586 | struct gui_synclist *this_list); |
587 | { | ||
588 | (void)this_item; | ||
589 | (void)this_list; | ||
590 | switch (action) | ||
591 | { | ||
592 | case ACTION_REQUEST_MENUITEM: | ||
593 | if (audio_status() & AUDIO_STATUS_PLAY) | ||
594 | return action; | ||
595 | else | ||
596 | return ACTION_EXIT_MENUITEM; | ||
597 | break; | ||
598 | } | ||
599 | return action; | ||
600 | } | ||
601 | 587 | ||
602 | static int treeplaylist_callback(int action, | 588 | static int treeplaylist_callback(int action, |
603 | const struct menu_item_ex *this_item, | 589 | const struct menu_item_ex *this_item, |
@@ -624,40 +610,95 @@ MENUITEM_FUNCTION(i_last_shuf_pl_item, MENU_FUNC_USEPARAM, | |||
624 | /* queue items */ | 610 | /* queue items */ |
625 | MENUITEM_FUNCTION(q_pl_item, MENU_FUNC_USEPARAM, ID2P(LANG_QUEUE), | 611 | MENUITEM_FUNCTION(q_pl_item, MENU_FUNC_USEPARAM, ID2P(LANG_QUEUE), |
626 | playlist_queue_func, (intptr_t*)PLAYLIST_INSERT, | 612 | playlist_queue_func, (intptr_t*)PLAYLIST_INSERT, |
627 | treeplaylist_wplayback_callback, Icon_Playlist); | 613 | treeplaylist_callback, Icon_Playlist); |
628 | MENUITEM_FUNCTION(q_first_pl_item, MENU_FUNC_USEPARAM, ID2P(LANG_QUEUE_FIRST), | 614 | MENUITEM_FUNCTION(q_first_pl_item, MENU_FUNC_USEPARAM, ID2P(LANG_QUEUE_FIRST), |
629 | playlist_queue_func, (intptr_t*)PLAYLIST_INSERT_FIRST, | 615 | playlist_queue_func, (intptr_t*)PLAYLIST_INSERT_FIRST, |
630 | treeplaylist_wplayback_callback, Icon_Playlist); | 616 | treeplaylist_callback, Icon_Playlist); |
631 | MENUITEM_FUNCTION(q_last_pl_item, MENU_FUNC_USEPARAM, ID2P(LANG_QUEUE_LAST), | 617 | MENUITEM_FUNCTION(q_last_pl_item, MENU_FUNC_USEPARAM, ID2P(LANG_QUEUE_LAST), |
632 | playlist_queue_func, (intptr_t*)PLAYLIST_INSERT_LAST, | 618 | playlist_queue_func, (intptr_t*)PLAYLIST_INSERT_LAST, |
633 | treeplaylist_wplayback_callback, Icon_Playlist); | 619 | treeplaylist_callback, Icon_Playlist); |
634 | MENUITEM_FUNCTION(q_shuf_pl_item, MENU_FUNC_USEPARAM, | 620 | MENUITEM_FUNCTION(q_shuf_pl_item, MENU_FUNC_USEPARAM, |
635 | ID2P(LANG_QUEUE_SHUFFLED), playlist_queue_func, | 621 | ID2P(LANG_QUEUE_SHUFFLED), playlist_queue_func, |
636 | (intptr_t*)PLAYLIST_INSERT_SHUFFLED, | 622 | (intptr_t*)PLAYLIST_INSERT_SHUFFLED, |
637 | treeplaylist_wplayback_callback, Icon_Playlist); | 623 | treeplaylist_callback, Icon_Playlist); |
638 | MENUITEM_FUNCTION(q_last_shuf_pl_item, MENU_FUNC_USEPARAM, | 624 | MENUITEM_FUNCTION(q_last_shuf_pl_item, MENU_FUNC_USEPARAM, |
639 | ID2P(LANG_QUEUE_LAST_SHUFFLED), playlist_queue_func, | 625 | ID2P(LANG_QUEUE_LAST_SHUFFLED), playlist_queue_func, |
640 | (intptr_t*)PLAYLIST_INSERT_LAST_SHUFFLED, | 626 | (intptr_t*)PLAYLIST_INSERT_LAST_SHUFFLED, |
641 | treeplaylist_callback, Icon_Playlist); | 627 | treeplaylist_callback, Icon_Playlist); |
628 | |||
629 | /* queue items in submenu */ | ||
630 | MENUITEM_FUNCTION(q_pl_submenu_item, MENU_FUNC_USEPARAM, ID2P(LANG_QUEUE), | ||
631 | playlist_queue_func, (intptr_t*)PLAYLIST_INSERT, | ||
632 | NULL, Icon_Playlist); | ||
633 | MENUITEM_FUNCTION(q_first_pl_submenu_item, MENU_FUNC_USEPARAM, ID2P(LANG_QUEUE_FIRST), | ||
634 | playlist_queue_func, (intptr_t*)PLAYLIST_INSERT_FIRST, | ||
635 | NULL, Icon_Playlist); | ||
636 | MENUITEM_FUNCTION(q_last_pl_submenu_item, MENU_FUNC_USEPARAM, ID2P(LANG_QUEUE_LAST), | ||
637 | playlist_queue_func, (intptr_t*)PLAYLIST_INSERT_LAST, | ||
638 | NULL, Icon_Playlist); | ||
639 | MENUITEM_FUNCTION(q_shuf_pl_submenu_item, MENU_FUNC_USEPARAM, | ||
640 | ID2P(LANG_QUEUE_SHUFFLED), playlist_queue_func, | ||
641 | (intptr_t*)PLAYLIST_INSERT_SHUFFLED, | ||
642 | treeplaylist_callback, Icon_Playlist); | ||
643 | MENUITEM_FUNCTION(q_last_shuf_pl_submenu_item, MENU_FUNC_USEPARAM, | ||
644 | ID2P(LANG_QUEUE_LAST_SHUFFLED), playlist_queue_func, | ||
645 | (intptr_t*)PLAYLIST_INSERT_LAST_SHUFFLED, | ||
646 | treeplaylist_callback, Icon_Playlist); | ||
647 | |||
648 | MAKE_ONPLAYMENU(queue_menu, ID2P(LANG_QUEUE_MENU), | ||
649 | treeplaylist_wplayback_callback, Icon_Playlist, | ||
650 | &q_pl_submenu_item, | ||
651 | &q_first_pl_submenu_item, | ||
652 | &q_last_pl_submenu_item, | ||
653 | &q_shuf_pl_submenu_item, | ||
654 | &q_last_shuf_pl_submenu_item); | ||
655 | |||
656 | static int treeplaylist_wplayback_callback(int action, | ||
657 | const struct menu_item_ex* this_item, | ||
658 | struct gui_synclist *this_list) | ||
659 | { | ||
660 | (void)this_list; | ||
661 | switch (action) | ||
662 | { | ||
663 | case ACTION_REQUEST_MENUITEM: | ||
664 | if ((audio_status() & AUDIO_STATUS_PLAY) && | ||
665 | (this_item != &queue_menu || | ||
666 | global_settings.show_queue_options == QUEUE_SHOW_IN_SUBMENU)) | ||
667 | return action; | ||
668 | else | ||
669 | return ACTION_EXIT_MENUITEM; | ||
670 | break; | ||
671 | } | ||
672 | return action; | ||
673 | } | ||
674 | |||
642 | /* replace playlist */ | 675 | /* replace playlist */ |
643 | MENUITEM_FUNCTION(replace_pl_item, MENU_FUNC_USEPARAM, ID2P(LANG_CLEAR_LIST_AND_PLAY_NEXT), | 676 | MENUITEM_FUNCTION(replace_pl_item, MENU_FUNC_USEPARAM, ID2P(LANG_CLEAR_LIST_AND_PLAY_NEXT), |
644 | playlist_insert_func, (intptr_t*)PLAYLIST_REPLACE, | 677 | playlist_insert_func, (intptr_t*)PLAYLIST_REPLACE, |
645 | NULL, Icon_Playlist); | 678 | NULL, Icon_Playlist); |
646 | 679 | ||
680 | MAKE_ONPLAYMENU(tree_playlist_menu, ID2P(LANG_CURRENT_PLAYLIST), | ||
681 | treeplaylist_callback, Icon_Playlist, | ||
647 | 682 | ||
648 | MAKE_ONPLAYMENU( tree_playlist_menu, ID2P(LANG_CURRENT_PLAYLIST), | 683 | /* insert */ |
649 | treeplaylist_callback, Icon_Playlist, | 684 | &i_pl_item, |
685 | &i_first_pl_item, | ||
686 | &i_last_pl_item, | ||
687 | &i_shuf_pl_item, | ||
688 | &i_last_shuf_pl_item, | ||
650 | 689 | ||
651 | /* insert */ | 690 | /* queue */ |
652 | &i_pl_item, &i_first_pl_item, &i_last_pl_item, | 691 | &q_pl_item, |
653 | &i_shuf_pl_item, &i_last_shuf_pl_item, | 692 | &q_first_pl_item, |
654 | /* queue */ | 693 | &q_last_pl_item, |
694 | &q_shuf_pl_item, | ||
695 | &q_last_shuf_pl_item, | ||
655 | 696 | ||
656 | &q_pl_item, &q_first_pl_item, &q_last_pl_item, | 697 | /* Queue submenu */ |
657 | &q_shuf_pl_item, &q_last_shuf_pl_item, | 698 | &queue_menu, |
658 | 699 | ||
659 | /* replace */ | 700 | /* replace */ |
660 | &replace_pl_item | 701 | &replace_pl_item |
661 | ); | 702 | ); |
662 | static int treeplaylist_callback(int action, | 703 | static int treeplaylist_callback(int action, |
663 | const struct menu_item_ex *this_item, | 704 | const struct menu_item_ex *this_item, |
@@ -669,36 +710,55 @@ static int treeplaylist_callback(int action, | |||
669 | case ACTION_REQUEST_MENUITEM: | 710 | case ACTION_REQUEST_MENUITEM: |
670 | if (this_item == &tree_playlist_menu) | 711 | if (this_item == &tree_playlist_menu) |
671 | { | 712 | { |
672 | if (((selected_file_attr & FILE_ATTR_MASK) == | 713 | if ((selected_file_attr & FILE_ATTR_MASK) == FILE_ATTR_AUDIO || |
673 | FILE_ATTR_AUDIO) || | 714 | (selected_file_attr & FILE_ATTR_MASK) == FILE_ATTR_M3U || |
674 | ((selected_file_attr & FILE_ATTR_MASK) == FILE_ATTR_M3U)|| | 715 | (selected_file_attr & ATTR_DIRECTORY)) |
675 | (selected_file_attr & ATTR_DIRECTORY)) | 716 | return action; |
676 | { | ||
677 | return action; | ||
678 | } | ||
679 | } | 717 | } |
680 | else if (this_item == &i_pl_item) | 718 | else if (this_item == &i_pl_item && |
719 | global_status.resume_index != -1) | ||
681 | { | 720 | { |
682 | if (global_status.resume_index != -1) | 721 | return action; |
683 | return action; | 722 | } |
723 | else if ((this_item == &q_pl_item || | ||
724 | this_item == &q_first_pl_item || | ||
725 | this_item == &q_last_pl_item) && | ||
726 | global_settings.show_queue_options == QUEUE_SHOW_AT_TOPLEVEL && | ||
727 | (audio_status() & AUDIO_STATUS_PLAY)) | ||
728 | { | ||
729 | return action; | ||
684 | } | 730 | } |
685 | else if (this_item == &i_shuf_pl_item) | 731 | else if (this_item == &i_shuf_pl_item) |
686 | { | 732 | { |
687 | if ((global_status.resume_index != -1) && | 733 | if (global_settings.show_shuffled_adding_options && |
688 | ((audio_status() & AUDIO_STATUS_PLAY) || | 734 | (global_status.resume_index != -1) && |
689 | (selected_file_attr & ATTR_DIRECTORY) || | 735 | ((audio_status() & AUDIO_STATUS_PLAY) || |
690 | ((selected_file_attr & FILE_ATTR_MASK) == FILE_ATTR_M3U))) | 736 | (selected_file_attr & ATTR_DIRECTORY) || |
737 | ((selected_file_attr & FILE_ATTR_MASK) == FILE_ATTR_M3U))) | ||
738 | { | ||
739 | return action; | ||
740 | } | ||
741 | } | ||
742 | else if (this_item == &q_shuf_pl_submenu_item || | ||
743 | (this_item == &q_shuf_pl_item && | ||
744 | global_settings.show_queue_options == QUEUE_SHOW_AT_TOPLEVEL)) | ||
745 | { | ||
746 | if (global_settings.show_shuffled_adding_options && | ||
747 | (audio_status() & AUDIO_STATUS_PLAY)) | ||
691 | { | 748 | { |
692 | return action; | 749 | return action; |
693 | } | 750 | } |
694 | } | 751 | } |
695 | else if (this_item == &i_last_shuf_pl_item || | 752 | else if (this_item == &i_last_shuf_pl_item || |
696 | this_item == &q_last_shuf_pl_item) | 753 | this_item == &q_last_shuf_pl_submenu_item || |
754 | (this_item == &q_last_shuf_pl_item && | ||
755 | global_settings.show_queue_options == QUEUE_SHOW_AT_TOPLEVEL)) | ||
697 | { | 756 | { |
698 | if ((playlist_amount() > 0) && | 757 | if (global_settings.show_shuffled_adding_options && |
758 | (playlist_amount() > 0) && | ||
699 | (audio_status() & AUDIO_STATUS_PLAY) && | 759 | (audio_status() & AUDIO_STATUS_PLAY) && |
700 | ((selected_file_attr & ATTR_DIRECTORY) || | 760 | ((selected_file_attr & ATTR_DIRECTORY) || |
701 | ((selected_file_attr & FILE_ATTR_MASK) == FILE_ATTR_M3U))) | 761 | ((selected_file_attr & FILE_ATTR_MASK) == FILE_ATTR_M3U))) |
702 | { | 762 | { |
703 | return action; | 763 | return action; |
704 | } | 764 | } |
diff --git a/apps/settings.h b/apps/settings.h index 60f2b44588..cc60617de4 100644 --- a/apps/settings.h +++ b/apps/settings.h | |||
@@ -109,6 +109,12 @@ enum | |||
109 | NUM_REPEAT_MODES | 109 | NUM_REPEAT_MODES |
110 | }; | 110 | }; |
111 | 111 | ||
112 | enum | ||
113 | { | ||
114 | QUEUE_HIDE = 0, | ||
115 | QUEUE_SHOW_AT_TOPLEVEL, | ||
116 | QUEUE_SHOW_IN_SUBMENU | ||
117 | }; | ||
112 | 118 | ||
113 | /* dir filter options */ | 119 | /* dir filter options */ |
114 | /* Note: Any new filter modes need to be added before NUM_FILTER_MODES. | 120 | /* Note: Any new filter modes need to be added before NUM_FILTER_MODES. |
@@ -574,6 +580,8 @@ struct user_settings | |||
574 | bool fade_on_stop; /* fade on pause/unpause/stop */ | 580 | bool fade_on_stop; /* fade on pause/unpause/stop */ |
575 | bool playlist_shuffle; | 581 | bool playlist_shuffle; |
576 | bool warnon_erase_dynplaylist; /* warn when erasing dynamic playlist */ | 582 | bool warnon_erase_dynplaylist; /* warn when erasing dynamic playlist */ |
583 | bool show_shuffled_adding_options; /* whether to display options for adding shuffled tracks to dynamic playlist */ | ||
584 | int show_queue_options; /* how and whether to display options to queue tracks */ | ||
577 | 585 | ||
578 | /* playlist viewer settings */ | 586 | /* playlist viewer settings */ |
579 | bool playlist_viewer_icons; /* display icons on viewer */ | 587 | bool playlist_viewer_icons; /* display icons on viewer */ |
diff --git a/apps/settings_list.c b/apps/settings_list.c index cf52f26080..e5c02f6bf3 100644 --- a/apps/settings_list.c +++ b/apps/settings_list.c | |||
@@ -1788,6 +1788,15 @@ const struct settings_list settings[] = { | |||
1788 | OFFON_SETTING(0, warnon_erase_dynplaylist, LANG_WARN_ERASEDYNPLAYLIST_MENU, | 1788 | OFFON_SETTING(0, warnon_erase_dynplaylist, LANG_WARN_ERASEDYNPLAYLIST_MENU, |
1789 | true, "warn when erasing dynamic playlist",NULL), | 1789 | true, "warn when erasing dynamic playlist",NULL), |
1790 | 1790 | ||
1791 | OFFON_SETTING(0, show_shuffled_adding_options, LANG_SHOW_SHUFFLED_ADDING_OPTIONS, true, | ||
1792 | "show shuffled adding options", NULL), | ||
1793 | CHOICE_SETTING(0, show_queue_options, LANG_SHOW_QUEUE_OPTIONS, 1, | ||
1794 | "show queue options", "off,on,in submenu", | ||
1795 | NULL, 3, | ||
1796 | ID2P(LANG_SET_BOOL_NO), | ||
1797 | ID2P(LANG_SET_BOOL_YES), | ||
1798 | ID2P(LANG_IN_SUBMENU)), | ||
1799 | |||
1791 | #ifdef HAVE_BACKLIGHT | 1800 | #ifdef HAVE_BACKLIGHT |
1792 | #ifdef HAS_BUTTON_HOLD | 1801 | #ifdef HAS_BUTTON_HOLD |
1793 | CHOICE_SETTING(0, backlight_on_button_hold, LANG_BACKLIGHT_ON_BUTTON_HOLD, | 1802 | CHOICE_SETTING(0, backlight_on_button_hold, LANG_BACKLIGHT_ON_BUTTON_HOLD, |
diff --git a/manual/appendix/config_file_options.tex b/manual/appendix/config_file_options.tex index 87e8a2ab96..abf6cf7f96 100644 --- a/manual/appendix/config_file_options.tex +++ b/manual/appendix/config_file_options.tex | |||
@@ -143,6 +143,10 @@ | |||
143 | & on, off & N/A\\ | 143 | & on, off & N/A\\ |
144 | warn when erasing dynamic playlist | 144 | warn when erasing dynamic playlist |
145 | & on, off & N/A\\ | 145 | & on, off & N/A\\ |
146 | show shuffled adding options | ||
147 | & off, on & N/A\\ | ||
148 | show queue options | ||
149 | & off, on, in submenu & N/A\\ | ||
146 | cuesheet support | 150 | cuesheet support |
147 | & on, off & N/A\\ | 151 | & on, off & N/A\\ |
148 | folder navigation & off, on, random & N/A\\ | 152 | folder navigation & off, on, random & N/A\\ |
diff --git a/manual/configure_rockbox/playlist_options.tex b/manual/configure_rockbox/playlist_options.tex index 35a2648f70..bd493d6e4b 100644 --- a/manual/configure_rockbox/playlist_options.tex +++ b/manual/configure_rockbox/playlist_options.tex | |||
@@ -1,14 +1,46 @@ | |||
1 | % $Id:$ % | 1 | % $Id:$ % |
2 | \section{\label{ref:PlaylistOptions}Playlist} | 2 | \section{\label{ref:PlaylistOptions}Playlists} |
3 | The \setting{Playlist} sub menu allows you to configure settings | 3 | |
4 | The \setting{Playlists} submenu allows you to configure settings | ||
4 | related to playlists. | 5 | related to playlists. |
6 | |||
7 | |||
5 | \begin{description} | 8 | \begin{description} |
9 | |||
10 | \item[Playlist Viewer Settings.] | ||
11 | This submenu contains settings related to the Playlist Viewer. | ||
12 | \begin{description} | ||
13 | \item[Show Icons.] This toggles display of the icon for the currently | ||
14 | selected playlist entry and the icon for moving a playlist entry | ||
15 | \item[Show Indices.] This toggles display of the line numbering for | ||
16 | the playlist | ||
17 | \item[Track Display.] This toggles between filename only and full path | ||
18 | for playlist entries | ||
19 | \end{description} | ||
20 | |||
6 | \item[Recursively Insert Directories.] | 21 | \item[Recursively Insert Directories.] |
7 | If set to \setting{On}, then when a directory is inserted or queued into a | 22 | If set to \setting{On}, then when a directory is inserted or queued into a |
8 | dynamic playlist, all subdirectories will also be inserted. If set to \setting{Ask}, | 23 | dynamic playlist, all subdirectories will also be inserted. If set to \setting{Ask}, |
9 | Rockbox will prompt the user about whether to include sub-directories. | 24 | Rockbox will prompt the user about whether to include sub-directories. |
10 | 25 | ||
11 | \item[Warn When Erasing Dynamic Playlist.] | 26 | \item[Current Playlist.] |
27 | This submenu contains settings related to the current dynamic playlist. | ||
28 | \begin{description} | ||
29 | |||
30 | \item[Warn When Erasing Dynamic Playlist.] | ||
12 | If set to \setting{Yes}, Rockbox will provide a warning if the user attempts to | 31 | If set to \setting{Yes}, Rockbox will provide a warning if the user attempts to |
13 | take an action that will cause Rockbox to erase the current dynamic playlist. | 32 | take an action that will cause Rockbox to erase the current dynamic playlist. |
33 | |||
34 | \item[Show Shuffled Adding Options.] | ||
35 | If set to \setting{No}, Rockbox will not offer to add shuffled tracks | ||
36 | in the \setting{Current Playlist submenu}. | ||
37 | |||
38 | \item[Show Queue Options.] | ||
39 | If set to \setting{No}, Rockbox will not display the options to queue items in | ||
40 | the \setting{Current Playlist submenu}. | ||
41 | If set to \setting{In Submenu}, Rockbox will move the options into a | ||
42 | separate submenu. | ||
43 | |||
44 | \end{description} | ||
45 | |||
14 | \end{description} | 46 | \end{description} |
diff --git a/manual/main_menu/main.tex b/manual/main_menu/main.tex index 7a83c61935..bdb422e10a 100644 --- a/manual/main_menu/main.tex +++ b/manual/main_menu/main.tex | |||
@@ -163,7 +163,7 @@ The details of this menu are covered in | |||
163 | the \setting{Playlist} menu. Both automatically and manually created | 163 | the \setting{Playlist} menu. Both automatically and manually created |
164 | playlists can be edited using this menu. | 164 | playlists can be edited using this menu. |
165 | 165 | ||
166 | \subsection{The Playlist Catalogue Context Menu} | 166 | \subsection{\label{ref:playlistcatalogue_contextmenu}The Playlist Catalogue Context Menu} |
167 | 167 | ||
168 | \begin{description} | 168 | \begin{description} |
169 | \item[Create Playlist:] | 169 | \item[Create Playlist:] |
diff --git a/manual/working_with_playlists/main.tex b/manual/working_with_playlists/main.tex index 16995caf78..8bc233d346 100644 --- a/manual/working_with_playlists/main.tex +++ b/manual/working_with_playlists/main.tex | |||
@@ -71,7 +71,7 @@ the selected track or directory. | |||
71 | \subsubsection{By using the Main Menu} | 71 | \subsubsection{By using the Main Menu} |
72 | To create a playlist containing some or all of the music on your \dap{}, you can use the | 72 | To create a playlist containing some or all of the music on your \dap{}, you can use the |
73 | \setting{Create Playlist} command in the \setting{Playlist Catalogue Context Menu} | 73 | \setting{Create Playlist} command in the \setting{Playlist Catalogue Context Menu} |
74 | (see \reference{ref:Contextmenu}). | 74 | (see \reference{ref:playlistcatalogue_contextmenu}). |
75 | 75 | ||
76 | \subsection{Adding music to playlists} | 76 | \subsection{Adding music to playlists} |
77 | 77 | ||
@@ -116,6 +116,12 @@ to the playlist file (see \reference{ref:playlistoptions}). | |||
116 | \item [Queue Last Shuffled.] Corresponds to \setting{Insert Last Shuffled}. | 116 | \item [Queue Last Shuffled.] Corresponds to \setting{Insert Last Shuffled}. |
117 | \end{description} | 117 | \end{description} |
118 | 118 | ||
119 | \note{You can hide the options to add shuffled tracks or to queue tracks, if you wish. | ||
120 | The latter can also be put into its own submenu. Simply go to | ||
121 | \setting{Settings} $\rightarrow$ \setting{General Settings} $\rightarrow$ \setting{Playlists} | ||
122 | $\rightarrow$ \setting{Current Playlist} and select either \setting{Show Shuffled Adding Options} | ||
123 | or \setting{Show Queue Options} to customize the displayed set of options.} | ||
124 | |||
119 | The \setting{Current Playlist Submenu} can be used to add either single tracks or | 125 | The \setting{Current Playlist Submenu} can be used to add either single tracks or |
120 | entire directories to a playlist. If the \setting{Current Playlist Submenu} is | 126 | entire directories to a playlist. If the \setting{Current Playlist Submenu} is |
121 | invoked on a single track, it will put only that track into the playlist. | 127 | invoked on a single track, it will put only that track into the playlist. |