From 6d16700bcbf52e66fffba24d8077ea7c09ddc771 Mon Sep 17 00:00:00 2001 From: Lars Uebernickel Date: Mon, 21 May 2012 20:39:05 +0200 Subject: Allow creating AppMenuItems without initial listener / server --- src/app-menu-item.c | 23 ++++++++++++++++++++--- src/app-menu-item.h | 4 +++- src/messages-service.c | 2 +- 3 files changed, 24 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/app-menu-item.c b/src/app-menu-item.c index f7b1469..dd218ee 100644 --- a/src/app-menu-item.c +++ b/src/app-menu-item.c @@ -216,12 +216,29 @@ app_menu_item_finalize (GObject *object) } AppMenuItem * -app_menu_item_new (IndicateListener * listener, IndicateListenerServer * server) +app_menu_item_new () +{ + return g_object_new(APP_MENU_ITEM_TYPE, NULL); +} + +AppMenuItem * +app_menu_item_new_with_server (IndicateListener * listener, IndicateListenerServer * server) { AppMenuItem * self = g_object_new(APP_MENU_ITEM_TYPE, NULL); + app_menu_item_set_server (self, listener, server); + return self; +} +void +app_menu_item_set_server (AppMenuItem *self, + IndicateListener *listener, + IndicateListenerServer *server) +{ AppMenuItemPrivate * priv = APP_MENU_ITEM_GET_PRIVATE(self); + /* only allow setting this once */ + g_return_if_fail (priv->listener == NULL && priv->server == NULL); + /* Copy the listener so we can use it later */ priv->listener = listener; g_object_ref(G_OBJECT(listener)); @@ -247,8 +264,6 @@ app_menu_item_new (IndicateListener * listener, IndicateListenerServer * server) indicate_listener_server_show_interest(listener, server, INDICATE_INTEREST_INDICATOR_DISPLAY); indicate_listener_server_show_interest(listener, server, INDICATE_INTEREST_INDICATOR_SIGNAL); indicate_listener_set_server_max_indicators(listener, server, MAX_NUMBER_OF_INDICATORS); - - return self; } static void @@ -512,6 +527,8 @@ activate_cb (AppMenuItem * self, guint timestamp, gpointer data) { AppMenuItemPrivate * priv = APP_MENU_ITEM_GET_PRIVATE(self); + g_return_if_fail (priv->listener != NULL && priv->server != NULL); + indicate_listener_display(priv->listener, priv->server, NULL, timestamp); return; diff --git a/src/app-menu-item.h b/src/app-menu-item.h index d616856..a474de0 100644 --- a/src/app-menu-item.h +++ b/src/app-menu-item.h @@ -59,7 +59,9 @@ struct _AppMenuItem { }; GType app_menu_item_get_type (void); -AppMenuItem * app_menu_item_new (IndicateListener * listener, IndicateListenerServer * server); +AppMenuItem * app_menu_item_new (); +AppMenuItem * app_menu_item_new_with_server (IndicateListener * listener, IndicateListenerServer * server); +void app_menu_item_set_server (AppMenuItem *self, IndicateListener *listener, IndicateListenerServer *server); guint app_menu_item_get_count (AppMenuItem * appitem); IndicateListenerServer * app_menu_item_get_server (AppMenuItem * appitem); const gchar * app_menu_item_get_name (AppMenuItem * appitem); diff --git a/src/messages-service.c b/src/messages-service.c index 547e527..1b01e4b 100644 --- a/src/messages-service.c +++ b/src/messages-service.c @@ -286,7 +286,7 @@ server_added (IndicateListener * listener, IndicateListenerServer * server, gcha } /* Build the Menu item */ - AppMenuItem * menuitem = app_menu_item_new(listener, server); + AppMenuItem * menuitem = app_menu_item_new_with_server (listener, server); /* Build a possible server structure */ serverList_t * sl_item = g_new0(serverList_t, 1); -- cgit v1.2.3