From e34d450d1fbcdcc5b1fa688c80edcfdf1fafb18d Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Thu, 2 Oct 2008 17:07:09 -0300 Subject: Add property support for input interface. --- input/device.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/input/device.c b/input/device.c index 292bb779..adcb42ae 100644 --- a/input/device.c +++ b/input/device.c @@ -52,6 +52,7 @@ #include "../src/storage.h" #include "../src/manager.h" +#include "../src/dbus-common.h" #include "adapter.h" #include "device.h" @@ -981,17 +982,46 @@ static void device_unregister(void *data) input_device_free(idev); } +static DBusMessage *device_get_properties(DBusConnection *conn, + DBusMessage *msg, void *data) +{ + struct input_device *idev = data; + DBusMessage *reply; + DBusMessageIter iter; + DBusMessageIter dict; + dbus_bool_t connected; + + dbus_message_iter_init_append(reply, &iter); + + dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, + DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING + DBUS_TYPE_STRING_AS_STRING DBUS_TYPE_VARIANT_AS_STRING + DBUS_DICT_ENTRY_END_CHAR_AS_STRING, &dict); + + /* Connected */ + connected = !!g_slist_find_custom(idev->connections, NULL, + (GCompareFunc) is_connected); + dbus_message_iter_append_dict_entry(&dict, "Connected", + DBUS_TYPE_BOOLEAN, &connected); + + dbus_message_iter_close_container(&iter, &dict); + + return reply; +} + static GDBusMethodTable device_methods[] = { { "Connect", "", "", device_connect, G_DBUS_METHOD_FLAG_ASYNC }, { "Disconnect", "", "", device_disconnect }, { "IsConnected", "", "b", device_is_connected }, + { "GetProperties", "", "a{sv}",device_get_properties }, { } }; static GDBusSignalTable device_signals[] = { { "Connected", "" }, { "Disconnected", "" }, + { "PropertyChanged", "sv" }, { } }; -- cgit