From 892db1ad766927f08a67daae648e52b5a07f4773 Mon Sep 17 00:00:00 2001 From: zmike Date: Sun, 27 Apr 2014 23:03:02 -0400 Subject: [PATCH] add methods for saving and adding to playlists --- src/bin/empdd.c | 40 ++++++++++++++++++++++++++++++++++++++++ src/bin/empdd.xml | 9 +++++++++ 2 files changed, 49 insertions(+) diff --git a/src/bin/empdd.c b/src/bin/empdd.c index 63ce97d..a571e45 100644 --- a/src/bin/empdd.c +++ b/src/bin/empdd.c @@ -61,6 +61,8 @@ typedef enum EMPD_COMMAND_DELETE_LIST, EMPD_COMMAND_ADD_LIST, EMPD_COMMAND_MOVE_LIST, + EMPD_COMMAND_SAVE_PLAYLIST, + EMPD_COMMAND_ADDTO_PLAYLIST, EMPD_COMMAND_LOAD_PLAYLIST, EMPD_COMMAND_REPEAT, EMPD_COMMAND_RANDOM, @@ -92,6 +94,8 @@ static const char *cmd_txt[] = CMD_TXT(EMPD_COMMAND_DELETE_LIST) CMD_TXT(EMPD_COMMAND_ADD_LIST) CMD_TXT(EMPD_COMMAND_MOVE_LIST) + CMD_TXT(EMPD_COMMAND_SAVE_PLAYLIST) + CMD_TXT(EMPD_COMMAND_ADDTO_PLAYLIST) CMD_TXT(EMPD_COMMAND_LOAD_PLAYLIST) CMD_TXT(EMPD_COMMAND_REPEAT) CMD_TXT(EMPD_COMMAND_RANDOM) @@ -1054,6 +1058,40 @@ _dbus_move_list_cb(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldb return eldbus_message_method_return_new(msg); } +static Eldbus_Message * +_dbus_save_playlist_cb(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg) +{ + const char *uri; + + if (!empd->connected) + return eldbus_message_method_return_new(msg); + if (eldbus_message_arguments_get(msg, "s", &uri)) + { + cmd_append(EMPD_COMMAND_SAVE_PLAYLIST); + mpd_async_send_command(empd->async, "save", uri, NULL); + fdh_update(); + } + + return eldbus_message_method_return_new(msg); +} + +static Eldbus_Message * +_dbus_addto_playlist_cb(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg) +{ + const char *playlist, *uri; + + if (!empd->connected) + return eldbus_message_method_return_new(msg); + if (eldbus_message_arguments_get(msg, "ss", &playlist, &uri)) + { + cmd_append(EMPD_COMMAND_ADDTO_PLAYLIST); + mpd_async_send_command(empd->async, "playlistadd", playlist, uri, NULL); + fdh_update(); + } + + return eldbus_message_method_return_new(msg); +} + static Eldbus_Message * _dbus_load_playlist_cb(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg) { @@ -1154,6 +1192,8 @@ static const Eldbus_Method empd_methods[] = { "ClearList", NULL, NULL, _dbus_clear_cb, 0}, { "DeleteListRange", ELDBUS_ARGS({"i", "start"}, {"i", "num"}), NULL, _dbus_delete_list_cb, 0}, { "AddList", ELDBUS_ARGS({"s", "path"}), NULL, _dbus_add_list_cb, 0}, + { "SavePlaylist", ELDBUS_ARGS({"s", "path"}), NULL, _dbus_save_playlist_cb, 0}, + { "AddToPlaylist", ELDBUS_ARGS({"s", "playlist"}, {"s", "uri"}), NULL, _dbus_addto_playlist_cb, 0}, { "LoadPlaylist", ELDBUS_ARGS({"s", "path"}), NULL, _dbus_load_playlist_cb, 0}, { "MoveList", ELDBUS_ARGS({"u", "start_pos"}, {"i", "number"}, {"u", "target_pos"}), NULL, _dbus_move_list_cb, 0}, { "Repeat", ELDBUS_ARGS({"b", "mode"}), NULL, _dbus_repeat_cb, 0}, diff --git a/src/bin/empdd.xml b/src/bin/empdd.xml index fd1b4f4..e3bce56 100644 --- a/src/bin/empdd.xml +++ b/src/bin/empdd.xml @@ -78,6 +78,15 @@ + + + + + + + + +