aboutsummaryrefslogtreecommitdiff
path: root/libindicate-gtk/listener.c
diff options
context:
space:
mode:
Diffstat (limited to 'libindicate-gtk/listener.c')
-rw-r--r--libindicate-gtk/listener.c148
1 files changed, 0 insertions, 148 deletions
diff --git a/libindicate-gtk/listener.c b/libindicate-gtk/listener.c
deleted file mode 100644
index dceb05b..0000000
--- a/libindicate-gtk/listener.c
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
-A library to allow applictions to provide simple indications of
-information to be displayed to users of the application through the
-interface shell.
-
-Copyright 2009 Canonical Ltd.
-
-Authors:
- Ted Gould <ted@canonical.com>
-
-This program is free software: you can redistribute it and/or modify it
-under the terms of either or both of the following licenses:
-
-1) the GNU Lesser General Public License version 3, as published by the
-Free Software Foundation; and/or
-2) the GNU Lesser General Public License version 2.1, as published by
-the Free Software Foundation.
-
-This program is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranties of
-MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
-PURPOSE. See the applicable version of the GNU Lesser General Public
-License for more details.
-
-You should have received a copy of both the GNU Lesser General Public
-License version 3 and version 2.1 along with this program. If not, see
-<http://www.gnu.org/licenses/>
-*/
-
-#include "listener.h"
-#include <dbus/dbus-glib-bindings.h>
-
-#include "../libindicate/dbus-indicate-client.h"
-#include "../libindicate/listener-private.h"
-
-typedef enum _get_property_type get_property_type;
-enum _get_property_type {
- PROPERTY_TYPE_STRING,
- PROPERTY_TYPE_TIME,
- PROPERTY_TYPE_ICON
-};
-
-typedef struct _get_property_t get_property_t;
-struct _get_property_t {
- GCallback cb;
- gpointer data;
- IndicateListener * listener;
- IndicateListenerServer * server;
- IndicateListenerIndicator * indicator;
- gchar * property;
- get_property_type type;
-};
-
-static void
-get_property_cb (DBusGProxy *proxy, char * OUT_value, GError *error, gpointer userdata)
-{
- get_property_t * get_property_data = (get_property_t *)userdata;
-
- if (error != NULL) {
- g_warning("Unable to get property data: %s", error->message);
- g_error_free(error);
- return;
- }
-
- switch (get_property_data->type) {
- case PROPERTY_TYPE_STRING: {
- indicate_listener_get_property_cb cb = (indicate_listener_get_property_cb)get_property_data->cb;
- cb(get_property_data->listener, get_property_data->server, get_property_data->indicator, get_property_data->property, OUT_value, get_property_data->data);
- break;
- }
- case PROPERTY_TYPE_ICON: {
- indicate_listener_get_property_icon_cb cb = (indicate_listener_get_property_icon_cb)get_property_data->cb;
-
- /* There is no icon */
- if (OUT_value == NULL || OUT_value[0] == '\0') {
- break;
- }
-
- gsize length = 0;
- guchar * icondata = g_base64_decode(OUT_value, &length);
-
- GInputStream * input = g_memory_input_stream_new_from_data(icondata, length, NULL);
- if (input == NULL) {
- g_warning("Cound not create input stream from icon property data");
- g_free(icondata);
- break;
- }
-
- GError * error = NULL;
- GdkPixbuf * icon = gdk_pixbuf_new_from_stream(input, NULL, &error);
- if (icon != NULL) {
- cb(get_property_data->listener, get_property_data->server, get_property_data->indicator, get_property_data->property, icon, get_property_data->data);
- }
-
- if (error != NULL) {
- g_warning("Unable to build Pixbuf from icon data: %s", error->message);
- g_error_free(error);
- }
-
- error = NULL;
- g_input_stream_close(input, NULL, &error);
- if (error != NULL) {
- g_warning("Unable to close input stream: %s", error->message);
- g_error_free(error);
- }
- g_free(icondata);
- break;
- }
- case PROPERTY_TYPE_TIME: {
- indicate_listener_get_property_time_cb cb = (indicate_listener_get_property_time_cb)get_property_data->cb;
- GTimeVal time;
- if (g_time_val_from_iso8601(OUT_value, &time)) {
- cb(get_property_data->listener, get_property_data->server, get_property_data->indicator, get_property_data->property, &time, get_property_data->data);
- }
- break;
- }
- }
-
- g_free(get_property_data->property);
- g_free(get_property_data);
-
- return;
-};
-
-static void
-get_property_helper (IndicateListener * listener, IndicateListenerServer * server, IndicateListenerIndicator * indicator, gchar * property, GCallback callback, gpointer data, get_property_type prop_type)
-{
- /* g_debug("get_property_helper: %s %d", property, prop_type); */
- /* TODO: Do we need to somehow refcount the server/indicator while we're waiting on this? */
- get_property_t * get_property_data = g_new(get_property_t, 1);
- get_property_data->cb = callback;
- get_property_data->data = data;
- get_property_data->listener = listener;
- get_property_data->server = server;
- get_property_data->indicator = indicator;
- get_property_data->property = g_strdup(property);
- get_property_data->type = prop_type;
-
- org_freedesktop_indicator_get_indicator_property_async (server->proxy , INDICATE_LISTENER_INDICATOR_ID(indicator), property, get_property_cb, get_property_data);
- return;
-}
-
-void
-indicate_listener_get_property_icon (IndicateListener * listener, IndicateListenerServer * server, IndicateListenerIndicator * indicator, gchar * property, indicate_listener_get_property_icon_cb callback, gpointer data)
-{
- return get_property_helper(listener, server, indicator, property, G_CALLBACK(callback), data, PROPERTY_TYPE_ICON);
-}
-