Ted Gould has proposed merging 
lp:~indicator-applet-developers/indicator-applet/messages-packaging into 
lp:~ubuntu-core-dev/indicator-applet/messages-ubuntu.

Requested reviews:
    Ubuntu Sponsors for main (ubuntu-main-sponsors)
-- 
https://code.launchpad.net/~indicator-applet-developers/indicator-applet/messages-packaging/+merge/4997
Your team Indicator Applet Developers is subscribed to branch 
lp:~indicator-applet-developers/indicator-applet/messages-packaging.
=== modified file 'configure.ac'
--- configure.ac	2009-03-18 19:25:23 +0000
+++ configure.ac	2009-03-28 04:52:04 +0000
@@ -4,7 +4,7 @@
 AC_PREREQ(2.53)
 
 AM_CONFIG_HEADER(config.h)
-AM_INIT_AUTOMAKE(indicator-messages, 0.1.3)
+AM_INIT_AUTOMAKE(indicator-messages, 0.1.4)
 
 AM_MAINTAINER_MODE
 

=== modified file 'debian/changelog'
--- debian/changelog	2009-03-19 11:34:58 +0000
+++ debian/changelog	2009-03-28 05:05:23 +0000
@@ -1,3 +1,15 @@
+indicator-messages (0.1.4-0ubuntu1) jaunty; urgency=low
+
+  * New upstream version
+    * Adding the display of indicators that are login messages coming from
+      other applications.  (LP: #345494)
+    * Making all times displayed for IM messages relative instead of
+      absolute.  (LP: #346345)
+    * Cleaning up the server removal code.  May fix (LP: #345599), I can't
+      recreate it anymore afterwards.
+
+ -- Ted Gould <[email protected]>  Sat, 28 Mar 2009 00:05:06 -0500
+
 indicator-messages (0.1.3-0ubuntu1) jaunty; urgency=low
 
   [ Ted Gould ]

=== modified file 'src/im-menu-item.c'
--- src/im-menu-item.c	2009-03-18 18:21:21 +0000
+++ src/im-menu-item.c	2009-03-27 15:53:04 +0000
@@ -43,6 +43,9 @@
 	IndicateListenerIndicator *  indicator;
 
 	glong seconds;
+	gboolean show_time;
+
+	guint time_update_min;
 
 	GtkHBox * hbox;
 	GtkLabel * user;
@@ -161,6 +164,13 @@
 im_menu_item_dispose (GObject *object)
 {
 	G_OBJECT_CLASS (im_menu_item_parent_class)->dispose (object);
+
+	ImMenuItem * self = IM_MENU_ITEM(object);
+	ImMenuItemPrivate * priv = IM_MENU_ITEM_GET_PRIVATE(self);
+
+	if (priv->time_update_min != 0) {
+		g_source_remove(priv->time_update_min);
+	}
 }
 
 static void
@@ -190,6 +200,62 @@
 }
 
 static void
+update_time (ImMenuItem * self)
+{
+	ImMenuItemPrivate * priv = IM_MENU_ITEM_GET_PRIVATE(self);
+
+	if (!priv->show_time) {
+		gtk_label_set_label(priv->time, "");
+		return;
+	}
+	
+	gchar * timestring = NULL;
+
+	GTimeVal current_time;
+	g_get_current_time(&current_time);
+
+	guint elapsed_seconds = current_time.tv_sec - priv->seconds;
+	guint elapsed_minutes = elapsed_seconds / 60;
+
+	if (elapsed_seconds % 60 > 55) {
+		/* We're using fuzzy timers, so we need fuzzy comparisons */
+		elapsed_minutes += 1;
+	}
+
+	if (elapsed_minutes < 60) {
+		timestring = g_strdup_printf(ngettext("%d m", "%d m", elapsed_minutes), elapsed_minutes);
+	} else {
+		guint elapsed_hours = elapsed_minutes / 60;
+
+		if (elapsed_minutes % 60 > 55) {
+			/* We're using fuzzy timers, so we need fuzzy comparisons */
+			elapsed_hours += 1;
+		}
+
+		timestring = g_strdup_printf(ngettext("%d h", "%d h", elapsed_hours), elapsed_hours);
+	}
+
+	if (timestring != NULL) {
+		gtk_label_set_label(priv->time, timestring);
+		gtk_widget_show(GTK_WIDGET(priv->time));
+
+		g_free(timestring);
+	}
+
+	return;
+}
+
+static gboolean
+time_update_cb (gpointer data)
+{
+	ImMenuItem * self = IM_MENU_ITEM(data);
+
+	update_time(self);
+
+	return TRUE;
+}
+
+static void
 time_cb (IndicateListener * listener, IndicateListenerServer * server, IndicateListenerIndicator * indicator, gchar * property, GTimeVal * propertydata, gpointer data)
 {
 	g_debug("Got Time info");
@@ -208,18 +274,11 @@
 
 	priv->seconds = propertydata->tv_sec;
 
-	time_t timet;
-	struct tm * structtm;
-
-	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);
-
-	gtk_label_set_label(priv->time, timestring);
-	gtk_widget_show(GTK_WIDGET(priv->time));
+	update_time(self);
+
+	if (priv->time_update_min == 0) {
+		g_timeout_add_seconds(60, time_update_cb, self);
+	}
 
 	g_signal_emit(G_OBJECT(self), signals[TIME_CHANGED], 0, priv->seconds, TRUE);
 
@@ -281,7 +340,7 @@
 }
 
 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 +350,8 @@
 	priv->listener = listener;
 	priv->server = server;
 	priv->indicator = indicator;
+	priv->show_time = show_time;
+	priv->time_update_min = 0;
 
 	indicate_listener_get_property(listener, server, indicator, "sender", sender_cb, self);	
 	indicate_listener_get_property_time(listener, server, indicator, "time",   time_cb, self);	

=== modified file 'src/im-menu-item.h'
--- src/im-menu-item.h	2009-03-18 18:21:21 +0000
+++ src/im-menu-item.h	2009-03-24 21:57:06 +0000
@@ -52,7 +52,7 @@
 };
 
 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

=== modified file 'src/indicator-messages.c'
--- src/indicator-messages.c	2009-03-18 18:45:51 +0000
+++ src/indicator-messages.c	2009-03-27 15:48:54 +0000
@@ -112,7 +112,7 @@
 	return (gint)(im_menu_item_get_seconds(IM_MENU_ITEM(pb->menuitem)) - im_menu_item_get_seconds(IM_MENU_ITEM(pa->menuitem)));
 }
 
-void 
+static void 
 server_added (IndicateListener * listener, IndicateListenerServer * server, gchar * type, gpointer data)
 {
 	g_debug("Server Added '%s' of type '%s'.", INDICATE_LISTENER_SERVER_DBUS_NAME(server), type);
@@ -227,7 +227,7 @@
 	return;
 }
 
-void 
+static void 
 server_removed (IndicateListener * listener, IndicateListenerServer * server, gchar * type, gpointer data)
 {
 	g_debug("Removing server: %s", INDICATE_LISTENER_SERVER_DBUS_NAME(server));
@@ -342,13 +342,13 @@
 
 	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);
 

_______________________________________________
Mailing list: https://launchpad.net/~dx-team
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~dx-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to