From 28c51809a7e34d2af70e508c86aa17ff350c06e3 Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Fri, 24 Sep 2010 16:15:04 +0200 Subject: [PATCH] Maemo: Basic functionality added to notify the applet about status updates. --- src/frontends/maemo/src/strongswan-status.c | 38 +++++++++++++++++++++++++++++ src/libcharon/plugins/maemo/maemo_plugin.c | 16 ++++++++++++ 2 files changed, 54 insertions(+) diff --git a/src/frontends/maemo/src/strongswan-status.c b/src/frontends/maemo/src/strongswan-status.c index 9a4ce78..c77de8c 100644 --- a/src/frontends/maemo/src/strongswan-status.c +++ b/src/frontends/maemo/src/strongswan-status.c @@ -16,6 +16,8 @@ #include #include +#include + #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 (); diff --git a/src/libcharon/plugins/maemo/maemo_plugin.c b/src/libcharon/plugins/maemo/maemo_plugin.c index ef5f651..042b7d4 100644 --- a/src/libcharon/plugins/maemo/maemo_plugin.c +++ b/src/libcharon/plugins/maemo/maemo_plugin.c @@ -22,6 +22,11 @@ #include #include +#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 @@ -61,6 +66,17 @@ struct private_maemo_plugin_t { }; +static gint change_status(private_maemo_plugin_t *this, int status) +{ + osso_rpc_t retval; + gint res; + res = osso_rpc_run (this->context, OSSO_STATUS_SERVICE, OSSO_STATUS_OBJECT, + OSSO_STATUS_IFACE, "StatusChanged", &retval, + DBUS_TYPE_INT32, status, + DBUS_TYPE_INVALID); + return res; +} + static gboolean initiate_connection(private_maemo_plugin_t *this, GArray *arguments) { -- 2.7.4