aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLars Uebernickel <lars.uebernickel@canonical.com>2012-05-21 20:39:05 +0200
committerLars Uebernickel <lars.uebernickel@canonical.com>2012-05-21 20:39:05 +0200
commit6d16700bcbf52e66fffba24d8077ea7c09ddc771 (patch)
treec7d1b50ac7adc768f9f114835ac8201982e5e80b /src
parent5faae9360d6836f4b5ab59ef2bbbf7cb624bafc1 (diff)
downloadayatana-indicator-messages-6d16700bcbf52e66fffba24d8077ea7c09ddc771.tar.gz
ayatana-indicator-messages-6d16700bcbf52e66fffba24d8077ea7c09ddc771.tar.bz2
ayatana-indicator-messages-6d16700bcbf52e66fffba24d8077ea7c09ddc771.zip
Allow creating AppMenuItems without initial listener / server
Diffstat (limited to 'src')
-rw-r--r--src/app-menu-item.c23
-rw-r--r--src/app-menu-item.h4
-rw-r--r--src/messages-service.c2
3 files changed, 24 insertions, 5 deletions
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);