add methods for toggling play modes
This commit is contained in:
parent
a77401ce6f
commit
019357e12c
|
@ -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}
|
||||
};
|
||||
|
||||
|
|
|
@ -79,6 +79,22 @@
|
|||
<arg type="i" name="num" direction="in" />
|
||||
<annotation name="org.freedesktop.DBus.Method.NoReply" value="true" />
|
||||
</method>
|
||||
<method name="Repeat">
|
||||
<arg type="b" name="mode" direction="in" />
|
||||
<annotation name="org.freedesktop.DBus.Method.NoReply" value="true" />
|
||||
</method>
|
||||
<method name="Shuffle">
|
||||
<arg type="b" name="mode" direction="in" />
|
||||
<annotation name="org.freedesktop.DBus.Method.NoReply" value="true" />
|
||||
</method>
|
||||
<method name="Single">
|
||||
<arg type="b" name="mode" direction="in" />
|
||||
<annotation name="org.freedesktop.DBus.Method.NoReply" value="true" />
|
||||
</method>
|
||||
<method name="Consume">
|
||||
<arg type="b" name="mode" direction="in" />
|
||||
<annotation name="org.freedesktop.DBus.Method.NoReply" value="true" />
|
||||
</method>
|
||||
<signal name="Status">
|
||||
<arg type="i" name="volume" direction="out" /><!-- volume % -->
|
||||
<arg type="b" name="repeat" direction="out" />
|
||||
|
|
Loading…
Reference in New Issue