aboutsummaryrefslogtreecommitdiffstats
path: root/src/frontends/maemo
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2010-09-24 16:15:04 +0200
committerTobias Brunner <tobias@strongswan.org>2010-10-14 17:36:19 +0200
commit28c51809a7e34d2af70e508c86aa17ff350c06e3 (patch)
tree8f156bd5a0bf55f47766e0c0d342f24dee7e5df7 /src/frontends/maemo
parentc2133533937aea4276ba9e0fa4c1f7635f06153a (diff)
downloadstrongswan-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.c38
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 ();