diff options
Diffstat (limited to 'apps/playlist_menu.c')
-rw-r--r-- | apps/playlist_menu.c | 38 |
1 files changed, 25 insertions, 13 deletions
diff --git a/apps/playlist_menu.c b/apps/playlist_menu.c index c70a510a6e..c390e8077d 100644 --- a/apps/playlist_menu.c +++ b/apps/playlist_menu.c | |||
@@ -28,22 +28,11 @@ | |||
28 | #include "playlist_viewer.h" | 28 | #include "playlist_viewer.h" |
29 | #include "talk.h" | 29 | #include "talk.h" |
30 | #include "lang.h" | 30 | #include "lang.h" |
31 | #include "playlist_menu.h" | ||
31 | 32 | ||
32 | /* FIXME: there is a very similar function in onplay.c */ | ||
33 | static bool save_playlist(void) | 33 | static bool save_playlist(void) |
34 | { | 34 | { |
35 | char filename[MAX_PATH+1]; | 35 | save_playlist_screen(NULL); |
36 | |||
37 | strncpy(filename, DEFAULT_DYNAMIC_PLAYLIST_NAME, sizeof(filename)); | ||
38 | |||
39 | if (!kbd_input(filename, sizeof(filename))) | ||
40 | { | ||
41 | playlist_save(NULL, filename); | ||
42 | |||
43 | /* reload in case playlist was saved to cwd */ | ||
44 | reload_directory(); | ||
45 | } | ||
46 | |||
47 | return false; | 36 | return false; |
48 | } | 37 | } |
49 | 38 | ||
@@ -85,3 +74,26 @@ bool playlist_menu(void) | |||
85 | menu_exit(m); | 74 | menu_exit(m); |
86 | return result; | 75 | return result; |
87 | } | 76 | } |
77 | |||
78 | int save_playlist_screen(struct playlist_info* playlist) | ||
79 | { | ||
80 | char* filename; | ||
81 | char temp[MAX_PATH+1]; | ||
82 | int len; | ||
83 | |||
84 | filename = playlist_get_name(playlist, temp, sizeof(temp)); | ||
85 | |||
86 | if (!filename || (len=strlen(filename)) <= 4 || | ||
87 | strcasecmp(&filename[len-4], ".m3u")) | ||
88 | filename = DEFAULT_DYNAMIC_PLAYLIST_NAME; | ||
89 | |||
90 | if (!kbd_input(filename, sizeof(filename))) | ||
91 | { | ||
92 | playlist_save(playlist, filename); | ||
93 | |||
94 | /* reload in case playlist was saved to cwd */ | ||
95 | reload_directory(); | ||
96 | } | ||
97 | |||
98 | return 0; | ||
99 | } | ||