aboutsummaryrefslogtreecommitdiffstats
path: root/src/screen_file.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/screen_file.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/screen_file.c b/src/screen_file.c
index 1e13cc4c7..002e9cd73 100644
--- a/src/screen_file.c
+++ b/src/screen_file.c
@@ -284,6 +284,26 @@ load_playlist(screen_t *screen, mpdclient_t *c, filelist_entry_t *entry)
return 0;
}
+static int
+handle_save(screen_t *screen, mpdclient_t *c)
+{
+ filelist_entry_t *entry;
+ char *defaultname = NULL;
+
+
+ entry=( filelist_entry_t *) g_list_nth_data(filelist->list,lw->selected);
+ if( entry && entry->entity )
+ {
+ mpd_InfoEntity *entity = entry->entity;
+ if( entity->type==MPD_INFO_ENTITY_TYPE_PLAYLISTFILE )
+ {
+ mpd_PlaylistFile *plf = entity->info.playlistFile;
+ defaultname = plf->path;
+ }
+ }
+ return playlist_save(screen, c, NULL, defaultname);
+}
+
static int
handle_delete(screen_t *screen, mpdclient_t *c)
{
@@ -649,6 +669,9 @@ browse_cmd(screen_t *screen, mpdclient_t *c, command_t cmd)
case CMD_DELETE:
handle_delete(screen, c);
break;
+ case CMD_SAVE_PLAYLIST:
+ handle_save(screen, c);
+ break;
case CMD_SCREEN_UPDATE:
screen->painted = 0;
lw->clear = 1;