RemoteSettingsDatabase and d-bus client
[mokosuite2:libmokosuite.git] / mokosuite / utils / settings.c
1 #include <glib.h>
2 #include <dbus/dbus-glib.h>
3
4 #include "settings.h"
5 #include "settings-glue.h"
6
7 static DBusGConnection* bus = NULL;
8
9 void settings_get_async(DBusGProxy* proxy, const char* key, const char* default_val, void (*callback)
10     (GError *, const char* ret_value, gpointer userdata), gpointer userdata)
11 {
12     // TODO
13 }
14
15 void settings_set_async(DBusGProxy* proxy, const char* key, const char* value, void (*callback)
16     (GError *, gpointer userdata), gpointer userdata)
17 {
18     // TODO
19 }
20
21 char* settings_get(DBusGProxy* proxy, const char* key, const char* default_val, GError** error)
22 {
23     char* ret = NULL;
24
25     if (!org_mokosuite_Settings_get_setting (proxy, key, default_val, &ret, error)) {
26         g_warning("GetSetting: %s", (error != NULL && *error != NULL) ? (*error)->message : "unknown error");
27         ret = NULL;
28     }
29
30     return ret;
31 }
32
33 gboolean settings_set(DBusGProxy* proxy, const char* key, const char* value, GError** error)
34 {
35     gboolean ret = FALSE;
36
37     if (!(ret = org_mokosuite_Settings_set_setting (proxy, key, value, error))) {
38         g_warning("SetSetting: %s", (error != NULL && *error != NULL) ? (*error)->message : "unknown error");
39         ret = FALSE;
40     }
41
42     return ret;
43 }
44
45
46 DBusGProxy* settings_connect(const char* bus_name, const char* path)
47 {
48     GError* error = NULL;
49     bus = dbus_g_bus_get(DBUS_BUS_SYSTEM, &error);
50
51     if (!bus) {
52         g_critical("Couldn't connect to system bus (%s)", error->message);
53         g_error_free(error);
54         return NULL;
55     }
56
57     DBusGProxy* proxy = dbus_g_proxy_new_for_name(bus, bus_name, path, MOKO_SETTINGS_INTERFACE);
58         if (proxy == NULL)
59             g_warning("Couln't connect to the Mokosuite Remote Settings Interface");
60
61     return proxy;
62 }