From 9137a01fe438d2d1c3b7e3037ebd5ea66bcae57d Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 24 Mar 2009 16:57:06 -0500 Subject: Making it so that an indicator gets displayed when someone logs in, eventually it disappears. --- src/im-menu-item.c | 24 ++++++++++++++---------- src/im-menu-item.h | 2 +- src/indicator-messages.c | 4 ++-- 3 files changed, 17 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/im-menu-item.c b/src/im-menu-item.c index eaf65a6..90c7422 100644 --- a/src/im-menu-item.c +++ b/src/im-menu-item.c @@ -43,6 +43,7 @@ struct _ImMenuItemPrivate IndicateListenerIndicator * indicator; glong seconds; + gboolean show_time; GtkHBox * hbox; GtkLabel * user; @@ -208,18 +209,20 @@ time_cb (IndicateListener * listener, IndicateListenerServer * server, IndicateL priv->seconds = propertydata->tv_sec; - time_t timet; - struct tm * structtm; + if (priv->show_time) { + time_t timet; + struct tm * structtm; - timet = propertydata->tv_sec; - structtm = localtime(&timet); + timet = propertydata->tv_sec; + structtm = localtime(&timet); - /* I can't imagine needing more than 80 characters */ - gchar timestring[80]; - strftime(timestring, 80, _("%I:%M"), structtm); + /* I can't imagine needing more than 80 characters */ + gchar timestring[80]; + strftime(timestring, 80, _("%I:%M"), structtm); - gtk_label_set_label(priv->time, timestring); - gtk_widget_show(GTK_WIDGET(priv->time)); + gtk_label_set_label(priv->time, timestring); + gtk_widget_show(GTK_WIDGET(priv->time)); + } g_signal_emit(G_OBJECT(self), signals[TIME_CHANGED], 0, priv->seconds, TRUE); @@ -281,7 +284,7 @@ indicator_modified_cb (IndicateListener * listener, IndicateListenerServer * ser } ImMenuItem * -im_menu_item_new (IndicateListener * listener, IndicateListenerServer * server, IndicateListenerIndicator * indicator) +im_menu_item_new (IndicateListener * listener, IndicateListenerServer * server, IndicateListenerIndicator * indicator, gboolean show_time) { g_debug("Building a new IM Menu Item"); ImMenuItem * self = g_object_new(IM_MENU_ITEM_TYPE, NULL); @@ -291,6 +294,7 @@ im_menu_item_new (IndicateListener * listener, IndicateListenerServer * server, priv->listener = listener; priv->server = server; priv->indicator = indicator; + priv->show_time = show_time; indicate_listener_get_property(listener, server, indicator, "sender", sender_cb, self); indicate_listener_get_property_time(listener, server, indicator, "time", time_cb, self); diff --git a/src/im-menu-item.h b/src/im-menu-item.h index 34da453..f1f95ea 100644 --- a/src/im-menu-item.h +++ b/src/im-menu-item.h @@ -52,7 +52,7 @@ struct _ImMenuItem { }; GType im_menu_item_get_type (void); -ImMenuItem * im_menu_item_new (IndicateListener * listener, IndicateListenerServer * server, IndicateListenerIndicator * indicator); +ImMenuItem * im_menu_item_new (IndicateListener * listener, IndicateListenerServer * server, IndicateListenerIndicator * indicator, gboolean show_time); glong im_menu_item_get_seconds (ImMenuItem * menuitem); G_END_DECLS diff --git a/src/indicator-messages.c b/src/indicator-messages.c index c600460..0df7dfa 100644 --- a/src/indicator-messages.c +++ b/src/indicator-messages.c @@ -342,13 +342,13 @@ subtype_cb (IndicateListener * listener, IndicateListenerServer * server, Indica g_debug("Message subtype: %s", propertydata); - if (!strcmp(propertydata, "im")) { + if (!strcmp(propertydata, "im") || !strcmp(propertydata, "login")) { imList_t * listItem = g_new(imList_t, 1); listItem->server = server; listItem->indicator = indicator; g_debug("Building IM Item"); - ImMenuItem * menuitem = im_menu_item_new(listener, server, indicator); + ImMenuItem * menuitem = im_menu_item_new(listener, server, indicator, !strcmp(propertydata, "im")); g_object_ref(G_OBJECT(menuitem)); listItem->menuitem = GTK_WIDGET(menuitem); -- cgit v1.2.3