diff libpurple/protocols/yahoo/libymsg.c @ 27538:fa827f6f990f

Add support for receiving contact details from buddies. Also, show some contact details (e.g. phone number) in the tooltip and in 'Get Info' when available.
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Tue, 14 Jul 2009 21:08:56 +0000
parents a12574d982a1
children b909c4a7bfc8
line wrap: on
line diff
--- a/libpurple/protocols/yahoo/libymsg.c	Tue Jul 14 19:55:40 2009 +0000
+++ b/libpurple/protocols/yahoo/libymsg.c	Tue Jul 14 21:08:56 2009 +0000
@@ -2898,6 +2898,9 @@
 	case YAHOO_SERVICE_AUDIBLE:
 		yahoo_process_audible(gc, pkt);
 		break;
+	case YAHOO_SERVICE_CONTACT_DETAILS:
+		yahoo_process_contact_details(gc, pkt);
+		break;
 	case YAHOO_SERVICE_FILETRANS_15:
 		yahoo_process_filetrans_15(gc, pkt);
 		break;
@@ -3539,7 +3542,7 @@
 	g_free(yd->pending_chat_goto);
 	g_strfreev(yd->profiles);
 
-	yahoo_personal_details_reset(&yd->ypd);
+	yahoo_personal_details_reset(&yd->ypd, TRUE);
 
 	g_free(yd->current_list15_grp);
 
@@ -3772,6 +3775,26 @@
 
 	if (presence != NULL)
 		purple_notify_user_info_add_pair(user_info, _("Presence"), presence);
+
+	if (full) {
+		YahooPersonalDetails *ypd = &f->ypd;
+		int i;
+		struct {
+			char *id;
+			char *text;
+			char *value;
+		} yfields[] = {
+			{"hp", N_("Home Phone Number"), ypd->phone.home},
+			{"wp", N_("Work Phone Number"), ypd->phone.work},
+			{"mo", N_("Mobile Phone Number"), ypd->phone.mobile},
+			{NULL, NULL, NULL}
+		};
+		for (i = 0; yfields[i].id; i++) {
+			if (!yfields[i].value || !*yfields[i].value)
+				continue;
+			purple_notify_user_info_add_pair(user_info, _(yfields[i].text), yfields[i].value);
+		}
+	}
 }
 
 static void yahoo_addbuddyfrommenu_cb(PurpleBlistNode *node, gpointer data)