diff libpurple/protocols/jabber/buddy.c @ 23253:4f49d4b25e24

If the status name and status message are the same for a jabber buddy, don't duplicate the information when displaying the Get Info window. (e.g. "Status: Away: Away")
author Evan Schoenberg <evan.s@dreskin.net>
date Fri, 30 May 2008 14:40:10 +0000
parents e166f9e91d6d
children b4ed2512be3b 4ac5db6e39f3
line wrap: on
line diff
--- a/libpurple/protocols/jabber/buddy.c	Fri May 30 04:33:44 2008 +0000
+++ b/libpurple/protocols/jabber/buddy.c	Fri May 30 14:40:10 2008 +0000
@@ -824,10 +824,14 @@
 		}		
 		if(jbr) {
 			char *purdy = NULL;
+			char *status_name = jabber_buddy_state_get_name(jbr->state);
 			if(jbr->status)
 				purdy = purple_strdup_withhtml(jbr->status);
-			tmp = g_strdup_printf("%s%s%s", jabber_buddy_state_get_name(jbr->state),
-							(purdy ? ": " : ""),
+			if(status_name && purdy && !strcmp(status_name, purdy))
+				status_name = NULL;
+
+			tmp = g_strdup_printf("%s%s%s", (status_name ? status_name : ""),
+							((status_name && purdy) ? ": " : ""),
 							(purdy ? purdy : ""));
 			purple_notify_user_info_prepend_pair(user_info, _("Status"), tmp);
 			g_free(tmp);
@@ -963,7 +967,8 @@
 		gboolean multiple_resources = jbi->jb->resources && (g_list_length(jbi->jb->resources) > 1);
 
 		for(resources = jbi->jb->resources; resources; resources = resources->next) {
-			char *purdy = NULL;
+			char *purdy = NULL, *status_name = NULL;
+			
 			jbr = resources->data;
 
 			if(jbr->client.name) {
@@ -987,10 +992,14 @@
 				}
 			}
 
+			status_name = jabber_buddy_state_get_name(jbr->state);
 			if(jbr->status)
 				purdy = purple_strdup_withhtml(jbr->status);
-			tmp = g_strdup_printf("%s%s%s", jabber_buddy_state_get_name(jbr->state),
-								  (purdy ? ": " : ""),
+			if(status_name && purdy && !strcmp(status_name, purdy))
+				status_name = NULL;
+			
+			tmp = g_strdup_printf("%s%s%s", (status_name ? status_name : ""),
+								  ((status_name && purdy) ? ": " : ""),
 								  (purdy ? purdy : ""));
 			purple_notify_user_info_prepend_pair(user_info, _("Status"), tmp);
 			g_free(tmp);