diff options
author | Ted Gould <ted@canonical.com> | 2009-02-12 10:47:54 -0600 |
---|---|---|
committer | Ted Gould <ted@canonical.com> | 2009-02-12 10:47:54 -0600 |
commit | ee2747416fa823d805af6d417dcd5f6159399f11 (patch) | |
tree | 8f9f2c67c27ba1888f9c6b39b7cfccfa2116cb6e /libindicate/listener.c | |
parent | 8a2cf3491cfd800cf6525b4d9180136976809311 (diff) | |
download | libayatana-indicator-ee2747416fa823d805af6d417dcd5f6159399f11.tar.gz libayatana-indicator-ee2747416fa823d805af6d417dcd5f6159399f11.tar.bz2 libayatana-indicator-ee2747416fa823d805af6d417dcd5f6159399f11.zip |
Rebuilding the way that priorities get done so that we can handle a time and icon version of the functions so that apps don't have to worry about those details.
Diffstat (limited to 'libindicate/listener.c')
-rw-r--r-- | libindicate/listener.c | 46 |
1 files changed, 42 insertions, 4 deletions
diff --git a/libindicate/listener.c b/libindicate/listener.c index 4da6d59..f641b56 100644 --- a/libindicate/listener.c +++ b/libindicate/listener.c @@ -650,14 +650,22 @@ proxy_indicators_free (gpointer data) return; } +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 { - indicate_listener_get_property_cb cb; + GCallback cb; gpointer data; IndicateListener * listener; IndicateListenerServer * server; IndicateListenerIndicator * indicator; gchar * property; + get_property_type type; }; static void @@ -671,7 +679,19 @@ get_property_cb (DBusGProxy *proxy, char * OUT_value, GError *error, gpointer us return; } - get_property_data->cb(get_property_data->listener, get_property_data->server, get_property_data->indicator, get_property_data->property, OUT_value, get_property_data->data); + 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: { + break; + } + case PROPERTY_TYPE_TIME: { + break; + } + } g_free(get_property_data->property); g_free(get_property_data); @@ -679,8 +699,8 @@ get_property_cb (DBusGProxy *proxy, char * OUT_value, GError *error, gpointer us return; }; -void -indicate_listener_get_property (IndicateListener * listener, IndicateListenerServer * server, IndicateListenerIndicator * indicator, gchar * property, indicate_listener_get_property_cb callback, gpointer data) +static void +get_property_helper (IndicateListener * listener, IndicateListenerServer * server, IndicateListenerIndicator * indicator, gchar * property, GCallback callback, gpointer data, get_property_type prop_type) { /* TODO: Do we need to somehow refcount the server/indicator while we're waiting on this? */ IndicateListenerPrivate * priv = INDICATE_LISTENER_GET_PRIVATE(listener); @@ -703,6 +723,24 @@ indicate_listener_get_property (IndicateListener * listener, IndicateListenerSer return; } +void +indicate_listener_get_property (IndicateListener * listener, IndicateListenerServer * server, IndicateListenerIndicator * indicator, gchar * property, indicate_listener_get_property_cb callback, gpointer data) +{ + return get_property_helper(listener, server, indicator, property, G_CALLBACK(callback), data, PROPERTY_TYPE_STRING); +} + +void +indicate_listener_get_property_time (IndicateListener * listener, IndicateListenerServer * server, IndicateListenerIndicator * indicator, gchar * property, indicate_listener_get_property_time_cb callback, gpointer data) +{ + return get_property_helper(listener, server, indicator, property, G_CALLBACK(callback), data, PROPERTY_TYPE_TIME); +} + +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); +} + static void listener_display_cb (DBusGProxy *proxy, GError *error, gpointer userdata) { |