From 7532947d4aabdee70733903cdd861a7c305ca987 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 6 Nov 2009 10:09:08 -0600 Subject: Migrating over to the libindicator 0.3.0 API. --- src/indicator-custom.c | 116 +++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 97 insertions(+), 19 deletions(-) diff --git a/src/indicator-custom.c b/src/indicator-custom.c index d9763ea..8528a52 100644 --- a/src/indicator-custom.c +++ b/src/indicator-custom.c @@ -1,42 +1,120 @@ +#include +#include + #include +#include #include #include "dbus-shared.h" + +#define INDICATOR_CUSTOM_TYPE (indicator_custom_get_type ()) +#define INDICATOR_CUSTOM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), INDICATOR_CUSTOM_TYPE, IndicatorCustom)) +#define INDICATOR_CUSTOM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), INDICATOR_CUSTOM_TYPE, IndicatorCustomClass)) +#define IS_INDICATOR_CUSTOM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), INDICATOR_CUSTOM_TYPE)) +#define IS_INDICATOR_CUSTOM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), INDICATOR_CUSTOM_TYPE)) +#define INDICATOR_CUSTOM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), INDICATOR_CUSTOM_TYPE, IndicatorCustomClass)) + +typedef struct _IndicatorCustom IndicatorCustom; +typedef struct _IndicatorCustomClass IndicatorCustomClass; + +struct _IndicatorCustomClass { + IndicatorObjectClass parent_class; +}; + +struct _IndicatorCustom { + IndicatorObject parent; +}; + +GType indicator_custom_get_type (void); + INDICATOR_SET_VERSION -INDICATOR_SET_NAME("indicator-custom") +INDICATOR_SET_TYPE(INDICATOR_CUSTOM_TYPE) -IndicatorServiceManager * sm = NULL; -void -connected (IndicatorServiceManager * sm, gboolean connected, gpointer not_used) +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +typedef struct _IndicatorCustomPrivate IndicatorCustomPrivate; + +struct _IndicatorCustomPrivate { + IndicatorServiceManager * sm; +}; + +#define INDICATOR_CUSTOM_GET_PRIVATE(o) \ +(G_TYPE_INSTANCE_GET_PRIVATE ((o), INDICATOR_CUSTOM_TYPE, IndicatorCustomPrivate)) + +static void indicator_custom_class_init (IndicatorCustomClass *klass); +static void indicator_custom_init (IndicatorCustom *self); +static void indicator_custom_dispose (GObject *object); +static void indicator_custom_finalize (GObject *object); +GList * get_entries (IndicatorObject * io); +void connected (IndicatorServiceManager * sm, gboolean connected, IndicatorCustom * custom); + +G_DEFINE_TYPE (IndicatorCustom, indicator_custom, INDICATOR_OBJECT_TYPE); + +static void +indicator_custom_class_init (IndicatorCustomClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (klass, sizeof (IndicatorCustomPrivate)); + + object_class->dispose = indicator_custom_dispose; + object_class->finalize = indicator_custom_finalize; + + IndicatorObjectClass * io_class = INDICATOR_OBJECT_CLASS(klass); + + io_class->get_entries = get_entries; return; } -GtkLabel * -get_label (void) +static void +indicator_custom_init (IndicatorCustom *self) { - return NULL; + IndicatorCustomPrivate * priv = INDICATOR_CUSTOM_GET_PRIVATE(self); + + priv->sm = indicator_service_manager_new(INDICATOR_CUSTOM_DBUS_ADDR); + g_signal_connect(G_OBJECT(priv->sm), INDICATOR_SERVICE_MANAGER_SIGNAL_CONNECTION_CHANGE, G_CALLBACK(connected), self); + + return; +} + +static void +indicator_custom_dispose (GObject *object) +{ + IndicatorCustomPrivate * priv = INDICATOR_CUSTOM_GET_PRIVATE(object); + + if (priv->sm != NULL) { + g_object_unref(priv->sm); + priv->sm = NULL; + } + + G_OBJECT_CLASS (indicator_custom_parent_class)->dispose (object); + return; } -GtkImage * -get_icon (void) +static void +indicator_custom_finalize (GObject *object) { - return GTK_IMAGE(gtk_image_new()); + + G_OBJECT_CLASS (indicator_custom_parent_class)->finalize (object); + return; } -GtkMenu * -get_menu (void) +void +connected (IndicatorServiceManager * sm, gboolean connected, IndicatorCustom * custom) { - GtkMenu * main_menu = GTK_MENU(gtk_menu_new()); - GtkWidget * loading_item = gtk_menu_item_new_with_label("Loading..."); - gtk_menu_shell_append(GTK_MENU_SHELL(main_menu), loading_item); - gtk_widget_show(GTK_WIDGET(loading_item)); - sm = indicator_service_manager_new(INDICATOR_CUSTOM_DBUS_ADDR); - g_signal_connect(G_OBJECT(sm), INDICATOR_SERVICE_MANAGER_SIGNAL_CONNECTION_CHANGE, G_CALLBACK(connected), NULL); + return; +} + +GList * +get_entries (IndicatorObject * io) +{ - return main_menu; + return NULL; } -- cgit v1.2.3