diff options
author | Tobias Brunner <tobias@strongswan.org> | 2010-09-24 16:15:04 +0200 |
---|---|---|
committer | Tobias Brunner <tobias@strongswan.org> | 2010-10-14 17:36:19 +0200 |
commit | 28c51809a7e34d2af70e508c86aa17ff350c06e3 (patch) | |
tree | 8f156bd5a0bf55f47766e0c0d342f24dee7e5df7 /src/frontends/maemo | |
parent | c2133533937aea4276ba9e0fa4c1f7635f06153a (diff) | |
download | strongswan-28c51809a7e34d2af70e508c86aa17ff350c06e3.tar.bz2 strongswan-28c51809a7e34d2af70e508c86aa17ff350c06e3.tar.xz |
Maemo: Basic functionality added to notify the applet about status updates.
Diffstat (limited to 'src/frontends/maemo')
-rw-r--r-- | src/frontends/maemo/src/strongswan-status.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/frontends/maemo/src/strongswan-status.c b/src/frontends/maemo/src/strongswan-status.c index 9a4ce78c0..c77de8cf1 100644 --- a/src/frontends/maemo/src/strongswan-status.c +++ b/src/frontends/maemo/src/strongswan-status.c @@ -16,6 +16,8 @@ #include <hildon/hildon.h> #include <libosso.h> +#include <string.h> + #include "strongswan-status.h" #include "strongswan-connections.h" @@ -24,6 +26,11 @@ STRONGSWAN_TYPE_STATUS, \ StrongswanStatusPrivate)) +#define OSSO_STATUS_NAME "status" +#define OSSO_STATUS_SERVICE "org.strongswan."OSSO_STATUS_NAME +#define OSSO_STATUS_OBJECT "/org/strongswan/"OSSO_STATUS_NAME +#define OSSO_STATUS_IFACE "org.strongswan."OSSO_STATUS_NAME + #define OSSO_CHARON_NAME "charon" #define OSSO_CHARON_SERVICE "org.strongswan."OSSO_CHARON_NAME #define OSSO_CHARON_OBJECT "/org/strongswan/"OSSO_CHARON_NAME @@ -423,6 +430,26 @@ button_clicked (HildonButton *button, StrongswanStatus *plugin) gtk_widget_show_all (priv->dialog); } +static gint +dbus_req_handler(const gchar *interface, const gchar *method, + GArray *arguments, StrongswanStatus *plugin, + osso_rpc_t *retval) +{ + if (!strcmp (method, "StatusChanged") && arguments->len == 1) + { + int status = 0; + osso_rpc_t *arg = &g_array_index(arguments, osso_rpc_t, 0); + if (arg->type == DBUS_TYPE_INT32) + { + status = arg->value.i; + } + gchar *msg = g_strdup_printf ("Status changed to %d...", status); + hildon_banner_show_information (NULL, NULL, msg); + g_free(msg); + } + return OSSO_OK; +} + static GdkPixbuf* load_icon (GtkIconTheme *theme, const gchar *name, gint size) { @@ -466,6 +493,17 @@ strongswan_status_init (StrongswanStatus *plugin) { return; } + osso_return_t result; + result = osso_rpc_set_cb_f (priv->context, + OSSO_STATUS_SERVICE, + OSSO_STATUS_OBJECT, + OSSO_STATUS_IFACE, + (osso_rpc_cb_f*)dbus_req_handler, + plugin); + if (result != OSSO_OK) + { + return; + } priv->conns = strongswan_connections_new (); |