diff --git a/tools/mpris-player.c b/tools/mpris-player.c
index 47e98d7..a067fe5 100644
--- a/tools/mpris-player.c
+++ b/tools/mpris-player.c
static DBusMessage *playlist_get(DBusConnection *conn, DBusMessage *msg,
void *data)
{
- return g_dbus_create_error(msg, ERROR_INTERFACE ".NotImplemented",
- "Not implemented");
+ struct player *player = data;
+ struct tracklist *tracklist = player->tracklist;
+ uint32_t index, count;
+ const char *order;
+ dbus_bool_t reverse;
+ DBusMessage *reply;
+ DBusMessageIter iter, entry, value, name;
+ const char *string;
+ const char *empty = "";
+
+ if (!dbus_message_get_args(msg, NULL,
+ DBUS_TYPE_UINT32, &index,
+ DBUS_TYPE_UINT32, &count,
+ DBUS_TYPE_STRING, &order,
+ DBUS_TYPE_BOOLEAN, &reverse,
+ DBUS_TYPE_INVALID))
+ return g_dbus_create_error(msg,
+ ERROR_INTERFACE ".InvalidArguments",
+ "Invalid Arguments");
+
+ reply = dbus_message_new_method_return(msg);
+
+ dbus_message_iter_init_append(reply, &iter);
+
+ dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "(oss)",
+ &entry);
+ dbus_message_iter_open_container(&entry, DBUS_TYPE_STRUCT, NULL,
+ &value);
+ dbus_message_iter_append_basic(&value, DBUS_TYPE_OBJECT_PATH,
+ &tracklist->playlist);
+ if (g_dbus_proxy_get_property(tracklist->proxy, "Name", &name)) {
+ dbus_message_iter_get_basic(&name, &string);
+ dbus_message_iter_append_basic(&value, DBUS_TYPE_STRING,
+ &string);
+ } else {
+ dbus_message_iter_append_basic(&value, DBUS_TYPE_STRING,
+ &tracklist->playlist);
+ }
+ dbus_message_iter_append_basic(&value, DBUS_TYPE_STRING, &empty);
+ dbus_message_iter_close_container(&entry, &value);
+ dbus_message_iter_close_container(&iter, &entry);
+
+ return reply;
}
static const GDBusMethodTable playlist_methods[] = {