diff options
Diffstat (limited to 'apps/menus/playlist_menu.c')
-rw-r--r-- | apps/menus/playlist_menu.c | 53 |
1 files changed, 40 insertions, 13 deletions
diff --git a/apps/menus/playlist_menu.c b/apps/menus/playlist_menu.c index a47c3b15e4..be3ad307c4 100644 --- a/apps/menus/playlist_menu.c +++ b/apps/menus/playlist_menu.c | |||
@@ -21,6 +21,7 @@ | |||
21 | 21 | ||
22 | #include <stdbool.h> | 22 | #include <stdbool.h> |
23 | #include <string.h> | 23 | #include <string.h> |
24 | #include <stdio.h> | ||
24 | #include "config.h" | 25 | #include "config.h" |
25 | #include "lang.h" | 26 | #include "lang.h" |
26 | #include "action.h" | 27 | #include "action.h" |
@@ -35,20 +36,28 @@ | |||
35 | #include "playlist_viewer.h" | 36 | #include "playlist_viewer.h" |
36 | #include "talk.h" | 37 | #include "talk.h" |
37 | #include "playlist_catalog.h" | 38 | #include "playlist_catalog.h" |
39 | #include "splash.h" | ||
38 | 40 | ||
39 | int save_playlist_screen(struct playlist_info* playlist) | 41 | int save_playlist_screen(struct playlist_info* playlist) |
40 | { | 42 | { |
41 | char temp[MAX_PATH+1]; | 43 | char temp[MAX_PATH+1], *dot; |
42 | int len; | 44 | int len; |
43 | 45 | ||
44 | playlist_get_name(playlist, temp, sizeof(temp)-1); | 46 | playlist_get_name(playlist, temp, sizeof(temp)-1); |
45 | len = strlen(temp); | 47 | len = strlen(temp); |
46 | 48 | ||
47 | if (len > 4 && !strcasecmp(&temp[len-4], ".m3u")) | 49 | dot = strrchr(temp, '.'); |
50 | if (!dot) | ||
51 | { | ||
52 | /* folder of some type */ | ||
53 | if (temp[1] != '\0') | ||
54 | strcpy(&temp[len-1], ".m3u8"); | ||
55 | else | ||
56 | snprintf(temp, sizeof(temp), "%s%s", | ||
57 | catalog_get_directory(), DEFAULT_DYNAMIC_PLAYLIST_NAME); | ||
58 | } | ||
59 | else if (len > 4 && !strcasecmp(dot, ".m3u")) | ||
48 | strcat(temp, "8"); | 60 | strcat(temp, "8"); |
49 | |||
50 | if (len <= 5 || strcasecmp(&temp[len-5], ".m3u8")) | ||
51 | strcpy(temp, DEFAULT_DYNAMIC_PLAYLIST_NAME); | ||
52 | 61 | ||
53 | if (!kbd_input(temp, sizeof(temp))) | 62 | if (!kbd_input(temp, sizeof(temp))) |
54 | { | 63 | { |
@@ -63,27 +72,45 @@ int save_playlist_screen(struct playlist_info* playlist) | |||
63 | 72 | ||
64 | static int playlist_view_(void) | 73 | static int playlist_view_(void) |
65 | { | 74 | { |
66 | return GO_TO_PLAYLIST_VIEWER; | 75 | playlist_viewer_ex(NULL); |
76 | return 0; | ||
67 | } | 77 | } |
68 | 78 | ||
69 | MENUITEM_FUNCTION(create_playlist_item, 0, ID2P(LANG_CREATE_PLAYLIST), | 79 | MENUITEM_FUNCTION(create_playlist_item, 0, ID2P(LANG_CREATE_PLAYLIST), |
70 | (int(*)(void))create_playlist, NULL, NULL, Icon_NOICON); | 80 | (int(*)(void))create_playlist, NULL, NULL, Icon_NOICON); |
71 | MENUITEM_FUNCTION(view_cur_playlist, MENU_FUNC_CHECK_RETVAL, | 81 | MENUITEM_FUNCTION(view_cur_playlist, 0, |
72 | ID2P(LANG_VIEW_DYNAMIC_PLAYLIST), | 82 | ID2P(LANG_VIEW_DYNAMIC_PLAYLIST), |
73 | (int(*)(void))playlist_view_, NULL, NULL, Icon_NOICON); | 83 | (int(*)(void))playlist_view_, NULL, NULL, Icon_NOICON); |
74 | MENUITEM_FUNCTION(save_playlist, MENU_FUNC_USEPARAM, ID2P(LANG_SAVE_DYNAMIC_PLAYLIST), | 84 | MENUITEM_FUNCTION(save_playlist, MENU_FUNC_USEPARAM, ID2P(LANG_SAVE_DYNAMIC_PLAYLIST), |
75 | (int(*)(void*))save_playlist_screen, | 85 | (int(*)(void*))save_playlist_screen, |
76 | NULL, NULL, Icon_NOICON); | 86 | NULL, NULL, Icon_NOICON); |
77 | MENUITEM_FUNCTION(catalog, 0, ID2P(LANG_CATALOG_VIEW), | ||
78 | (int(*)(void))catalog_view_playlists, | ||
79 | NULL, NULL, Icon_NOICON); | ||
80 | MENUITEM_SETTING(recursive_dir_insert, &global_settings.recursive_dir_insert, NULL); | 87 | MENUITEM_SETTING(recursive_dir_insert, &global_settings.recursive_dir_insert, NULL); |
81 | MENUITEM_SETTING(warn_on_erase, &global_settings.warnon_erase_dynplaylist, NULL); | 88 | MENUITEM_SETTING(warn_on_erase, &global_settings.warnon_erase_dynplaylist, NULL); |
89 | static int clear_catalog_directory(void) | ||
90 | { | ||
91 | catalog_set_directory(NULL); | ||
92 | settings_save(); | ||
93 | splash(HZ, ID2P(LANG_RESET_DONE_CLEAR)); | ||
94 | return false; | ||
95 | } | ||
96 | MENUITEM_FUNCTION(clear_catalog_directory_item, 0, ID2P(LANG_RESET_PLAYLISTCAT_DIR), | ||
97 | clear_catalog_directory, NULL, NULL, Icon_file_view_menu); | ||
98 | |||
99 | /* Playlist viewer settings submenu */ | ||
100 | MENUITEM_SETTING(show_icons, &global_settings.playlist_viewer_icons, NULL); | ||
101 | MENUITEM_SETTING(show_indices, &global_settings.playlist_viewer_indices, NULL); | ||
102 | MENUITEM_SETTING(track_display, | ||
103 | &global_settings.playlist_viewer_track_display, NULL); | ||
104 | MAKE_MENU(viewer_settings_menu, ID2P(LANG_PLAYLISTVIEWER_SETTINGS), | ||
105 | NULL, Icon_Playlist, | ||
106 | &show_icons, &show_indices, &track_display); | ||
107 | |||
82 | 108 | ||
83 | MAKE_MENU(playlist_settings, ID2P(LANG_PLAYLISTS), NULL, | 109 | MAKE_MENU(playlist_settings, ID2P(LANG_PLAYLISTS), NULL, |
84 | Icon_Playlist, | 110 | Icon_Playlist, |
85 | &recursive_dir_insert, &warn_on_erase); | 111 | &viewer_settings_menu, &recursive_dir_insert, &warn_on_erase); |
86 | MAKE_MENU(playlist_options, ID2P(LANG_PLAYLISTS), NULL, | 112 | MAKE_MENU(playlist_options, ID2P(LANG_PLAYLISTS), NULL, |
87 | Icon_Playlist, | 113 | Icon_Playlist, |
88 | &create_playlist_item, &view_cur_playlist, &save_playlist, &catalog); | 114 | &create_playlist_item, &view_cur_playlist, |
115 | &save_playlist, &clear_catalog_directory_item); | ||
89 | 116 | ||