From 019357e12c984b6aa2ace826cb547e38884ea121 Mon Sep 17 00:00:00 2001 From: zmike Date: Thu, 6 Feb 2014 17:19:29 -0500 Subject: [PATCH] add methods for toggling play modes --- src/bin/empdd.c | 80 +++++++++++++++++++++++++++++++++++++++++++++-- src/bin/empdd.xml | 16 ++++++++++ 2 files changed, 94 insertions(+), 2 deletions(-) diff --git a/src/bin/empdd.c b/src/bin/empdd.c index b8693cf..f365bc9 100644 --- a/src/bin/empdd.c +++ b/src/bin/empdd.c @@ -54,6 +54,10 @@ typedef enum EMPD_COMMAND_PLAY_ID, EMPD_COMMAND_QUEUE_LIST, EMPD_COMMAND_DELETE_LIST, + EMPD_COMMAND_REPEAT, + EMPD_COMMAND_RANDOM, + EMPD_COMMAND_SINGLE, + EMPD_COMMAND_CONSUME, } EMPD_Command; static const char *cmd_txt[] = @@ -74,6 +78,10 @@ static const char *cmd_txt[] = CMD_TXT(EMPD_COMMAND_PLAY_ID) CMD_TXT(EMPD_COMMAND_QUEUE_LIST) CMD_TXT(EMPD_COMMAND_DELETE_LIST) + CMD_TXT(EMPD_COMMAND_REPEAT) + CMD_TXT(EMPD_COMMAND_RANDOM) + CMD_TXT(EMPD_COMMAND_SINGLE) + CMD_TXT(EMPD_COMMAND_CONSUME) }; typedef enum @@ -474,8 +482,8 @@ static Eldbus_Message * \ _dbus_##name##_cb(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg) \ { \ mpd_async_send_command(empd->async, S(name), NULL); \ - fdh_update(); \ cmd_append(EMPD_COMMAND_##CMD); \ + pinger_cb(NULL); \ return eldbus_message_method_return_new(msg); \ } @@ -499,7 +507,71 @@ _dbus_pause_cb(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_M mpd_async_send_command(empd->async, "pause", NULL); cmd_append(EMPD_COMMAND_TOGGLE_PAUSE); } - fdh_update(); + pinger_cb(NULL); + return eldbus_message_method_return_new(msg); +} + +static Eldbus_Message * +_dbus_repeat_cb(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg) +{ + Eina_Bool mode; + const char *sig; + + sig = eldbus_message_signature_get(msg); + if (sig && (!strcmp(sig, "b")) && eldbus_message_arguments_get(msg, "b", &mode)) + { + mpd_async_send_command(empd->async, "repeat", mode ? "1" : "0", NULL); + cmd_append(EMPD_COMMAND_REPEAT); + pinger_cb(NULL); + } + return eldbus_message_method_return_new(msg); +} + +static Eldbus_Message * +_dbus_shuffle_cb(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg) +{ + Eina_Bool mode; + const char *sig; + + sig = eldbus_message_signature_get(msg); + if (sig && (!strcmp(sig, "b")) && eldbus_message_arguments_get(msg, "b", &mode)) + { + mpd_async_send_command(empd->async, "random", mode ? "1" : "0", NULL); + cmd_append(EMPD_COMMAND_RANDOM); + pinger_cb(NULL); + } + return eldbus_message_method_return_new(msg); +} + +static Eldbus_Message * +_dbus_single_cb(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg) +{ + Eina_Bool mode; + const char *sig; + + sig = eldbus_message_signature_get(msg); + if (sig && (!strcmp(sig, "b")) && eldbus_message_arguments_get(msg, "b", &mode)) + { + mpd_async_send_command(empd->async, "single", mode ? "1" : "0", NULL); + cmd_append(EMPD_COMMAND_SINGLE); + pinger_cb(NULL); + } + return eldbus_message_method_return_new(msg); +} + +static Eldbus_Message * +_dbus_consume_cb(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg) +{ + Eina_Bool mode; + const char *sig; + + sig = eldbus_message_signature_get(msg); + if (sig && (!strcmp(sig, "b")) && eldbus_message_arguments_get(msg, "b", &mode)) + { + mpd_async_send_command(empd->async, "consume", mode ? "1" : "0", NULL); + cmd_append(EMPD_COMMAND_CONSUME); + pinger_cb(NULL); + } return eldbus_message_method_return_new(msg); } @@ -627,6 +699,10 @@ static const Eldbus_Method empd_methods[] = { "QueueListRange", ELDBUS_ARGS({"i", "start"}, {"i", "num"}), NULL, _dbus_queue_list_cb, 0}, { "QueueListCachedRange", ELDBUS_ARGS({"i", "start"}, {"i", "num"}), NULL, _dbus_queue_list_cached_cb, 0}, { "DeleteListRange", ELDBUS_ARGS({"i", "start"}, {"i", "num"}), NULL, _dbus_delete_list_cb, 0}, + { "Repeat", ELDBUS_ARGS({"b", "mode"}), NULL, _dbus_repeat_cb, 0}, + { "Shuffle", ELDBUS_ARGS({"b", "mode"}), NULL, _dbus_shuffle_cb, 0}, + { "Single", ELDBUS_ARGS({"b", "mode"}), NULL, _dbus_single_cb, 0}, + { "Consume", ELDBUS_ARGS({"b", "mode"}), NULL, _dbus_consume_cb, 0}, {NULL, NULL, NULL, NULL, 0} }; diff --git a/src/bin/empdd.xml b/src/bin/empdd.xml index 0f49cbb..8a41399 100644 --- a/src/bin/empdd.xml +++ b/src/bin/empdd.xml @@ -79,6 +79,22 @@ + + + + + + + + + + + + + + + +