diff src/buddy.c @ 4227:a614423c648f

[gaim-migrate @ 4471] This is a patch from Nathan Walp that adds a "char server_alias[BUDDY_ALIAS_MAXLEN]" to struct buddy, and a preference option to show the server alias instead of the alias set by you. It shouldn't cause any problems. But then again, faceprint is a crazy patch writer, with an emphasis on crazy, if you know what I mean. Huh? Get it? "Crazy"? I kill me. But right after I kill Time Warner. committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Tue, 07 Jan 2003 17:44:34 +0000
parents 88ebcfcc3217
children 9b40fa57a8ed
line wrap: on
line diff
--- a/src/buddy.c	Tue Jan 07 16:18:08 2003 +0000
+++ b/src/buddy.c	Tue Jan 07 17:44:34 2003 +0000
@@ -84,7 +84,6 @@
 	GtkWidget *warn;
 	GtkWidget *idle;
 	char *name;
-	char *show;
 	GSList *connlist;
 	guint log_timer;
 	gint sound;
@@ -148,7 +147,6 @@
 						g_source_remove(bs->log_timer);
 					bs->log_timer = 0;
 					remove_buddy_show(gs, bs);
-					g_free(bs->show);
 					g_free(bs->name);
 					g_free(bs);
 				}
@@ -202,7 +200,6 @@
 							g_source_remove(bs->log_timer);
 						bs->log_timer = 0;
 						remove_buddy_show(gs, bs);
-						g_free(bs->show);
 						g_free(bs->name);
 						g_free(bs);
 					}
@@ -236,15 +233,12 @@
 	GtkCTreeNode *c;
 	char buf[256];
 
-	if (!strcmp(b->show, prevname))
-		g_snprintf(b->show, sizeof(b->show), "%s", b->name);
-
 	/* well you shouldn't be calling this if nothing changed. duh. */
 	do_export(b->gc);
 
 	c = gtk_ctree_find_by_row_data(GTK_CTREE(edittree), NULL, b);
-	if (strcmp(b->show, b->name))
-		g_snprintf(buf, sizeof(buf), "%s (%s)", b->name, b->show);
+	if (get_buddy_alias_only(b))
+		g_snprintf(buf, sizeof(buf), "%s (%s)", b->name, get_buddy_alias(b));
 	else
 		g_snprintf(buf, sizeof(buf), "%s", b->name);
 	gtk_ctree_node_set_text(GTK_CTREE(edittree), c, 0, buf);
@@ -252,8 +246,6 @@
 	if ((cnv = find_conversation(b->name)) != NULL)
 		set_convo_title(cnv);
 
-	gs = find_group_show(prevname);
-
 	g = find_group_by_buddy(b->gc, b->name);
 	if (!g) {
 		/* shouldn't happen */
@@ -277,13 +269,12 @@
 				g_source_remove(bs->log_timer);
 			bs->log_timer = 0;
 			remove_buddy_show(gs, bs);
-			g_free(bs->show);
 			g_free(bs->name);
 			g_free(bs);
 		}
 		update_num_group(gs);
 	} else {
-		gtk_label_set_text(GTK_LABEL(bs->label), b->show);
+		gtk_label_set_text(GTK_LABEL(bs->label), get_buddy_alias(b));
 		update_idle_time(bs);
 	}
 }
@@ -306,7 +297,6 @@
 				g_source_remove(b->log_timer);
 			b->log_timer = 0;
 			gtk_tree_remove_item(GTK_TREE(g->tree), b->item);
-			g_free(b->show);
 			g_free(b->name);
 			g_free(b);
 		}
@@ -750,12 +740,8 @@
 
 static void un_alias(GtkWidget *a, struct buddy *b)
 {
-	g_snprintf(b->show, sizeof(b->show), "%s", b->name);
-	/* passing b->show as the previous name seems to be the (current)
-	 * way to get the bs->lable changed for that buddy. However, this
-	 * function should do everything that needs to be done
-	 */
-	handle_buddy_rename(b, b->show); /* make me a sammich! */
+	b->alias[0] = '\0';
+	handle_buddy_rename(b, b->name); /* make me a sammich! */
 	serv_alias_buddy(b);
 
 }
@@ -820,7 +806,7 @@
 		gtk_menu_append(GTK_MENU(menu), button);
 		gtk_widget_show(button);
 
-		if (strcmp(b->name, b->show)) {
+		if (b->alias[0]) {
 			button = gtk_menu_item_new_with_label(_("Un-Alias"));
 			g_signal_connect(GTK_OBJECT(button), "activate", G_CALLBACK(un_alias), b);
 			gtk_menu_append(GTK_MENU(menu), button);
@@ -907,7 +893,6 @@
 						g_source_remove(bs->log_timer);
 					bs->log_timer = 0;
 					remove_buddy_show(gs, bs);
-					g_free(bs->show);
 					g_free(bs->name);
 					g_free(bs);
 					if (!g_slist_length(gs->members) &&
@@ -1013,7 +998,6 @@
 			m = g_slist_remove(m, bs);
 			if (bs->log_timer > 0)
 				g_source_remove(bs->log_timer);
-			g_free(bs->show);
 			g_free(bs->name);
 			g_free(bs);
 		}
@@ -1182,7 +1166,7 @@
 				while (mem) {
 					b = (struct buddy *)mem->data;
 					if (!find_buddy(pc, b->name))
-						add_buddy(pc, g->name, b->name, b->show);
+						add_buddy(pc, g->name, b->name, b->alias);
 					mem = mem->next;
 				}
 			}
@@ -1301,8 +1285,8 @@
 			while (mem) {
 				char buf[256];
 				b = (struct buddy *)mem->data;
-				if (strcmp(b->name, b->show)) {
-					g_snprintf(buf, sizeof(buf), "%s (%s)", b->name, b->show);
+				if (get_buddy_alias_only(b)) {
+					g_snprintf(buf, sizeof(buf), "%s (%s)", b->name, get_buddy_alias(b));
 					text[0] = buf;
 				} else
 					text[0] = b->name;
@@ -1341,8 +1325,8 @@
 		return;
 
 	p = gtk_ctree_find_by_row_data(GTK_CTREE(edittree), NULL, g);
-	if (strcmp(b->name, b->show)) {
-		g_snprintf(buf, sizeof(buf), "%s (%s)", b->name, b->show);
+	if (get_buddy_alias_only(b)) {
+		g_snprintf(buf, sizeof(buf), "%s (%s)", b->name, get_buddy_alias(b));
 		text[0] = buf;
 	} else
 		text[0] = b->name;
@@ -1921,7 +1905,6 @@
 	}
 
 	b->name = g_strdup(buddy->name);
-	b->show = g_strdup(buddy->show);
 
 	b->item = gtk_tree_item_new();
 	gtk_tree_insert(GTK_TREE(gs->tree), b->item, pos);
@@ -1943,7 +1926,7 @@
 	gdk_pixmap_unref(pm);
 	gdk_bitmap_unref(bm);
 
-	b->label = gtk_label_new(buddy->show);
+	b->label = gtk_label_new(get_buddy_alias(buddy));
 	gtk_misc_set_alignment(GTK_MISC(b->label), 0.0, 0.5);
 	gtk_box_pack_start(GTK_BOX(box), b->label, FALSE, FALSE, 1);
 	gtk_widget_show(b->label);
@@ -2137,7 +2120,6 @@
 		g_source_remove(b->log_timer);
 		b->log_timer = 0;
 		g_free(b->name);
-		g_free(b->show);
 		g_free(b);
 	} else {
 		/* um.... what do we have to do here? just update the pixmap? */
@@ -2250,6 +2232,8 @@
 	char infotip[2048];
 	char warn[256];
 	char caps[256];
+	char alias[512];
+	char serv_alias[512];
 	char *sotime = NULL, *itime;
 
 	int i;
@@ -2324,10 +2308,19 @@
 	else
 		caps[0] = '\0';
 
-	g_snprintf(infotip, sizeof infotip, _("Alias: %s               \nScreen Name: %s\n"
-					      "%s%s%s%s%s%s"),
-		   b->show, b->name,
-		   (b->signon ? sotime : ""), warn,
+	if (b->alias[0])
+		g_snprintf(alias, sizeof alias, _("Alias: %s\n"), b->alias);
+	else
+		alias[0] = '\0';
+
+	if (b->server_alias[0])
+		g_snprintf(serv_alias, sizeof serv_alias, _("Nickname: %s\n"),
+				b->server_alias);
+	else
+		serv_alias[0] = '\0';
+
+	g_snprintf(infotip, sizeof infotip, _("%s%sScreen Name: %s\n%s%s%s%s%s%s"),
+		   alias, serv_alias, b->name, (b->signon ? sotime : ""), warn,
 		   (b->idle ? _("Idle: ") : ""), itime, (b->idle ? "\n" : ""), caps);
 
 	gtk_tooltips_set_tip(tips, GTK_WIDGET(bs->item), infotip, "");
@@ -2397,12 +2390,14 @@
 				struct conversation *c = find_conversation(b->name);
 				if (c) {
 					char tmp[1024];
-					g_snprintf(tmp, sizeof(tmp), _("%s logged in."), b->show);
+					g_snprintf(tmp, sizeof(tmp), _("%s logged in."),
+							get_buddy_alias(b));
 					write_to_conv(c, tmp, WFLAG_SYSTEM, NULL, time(NULL), -1);
 				} else if (clistqueue && find_queue_total_by_name(b->name)) {
 					struct queued_message *qm = g_new0(struct queued_message, 1);
 					g_snprintf(qm->name, sizeof(qm->name), "%s", b->name);
-					qm->message = g_strdup_printf(_("%s logged in."), b->show);
+					qm->message = g_strdup_printf(_("%s logged in."),
+							get_buddy_alias(b));
 					qm->gc = gc;
 					qm->tm = time(NULL);
 					qm->flags = WFLAG_SYSTEM;
@@ -2456,12 +2451,15 @@
 			struct conversation *c = find_conversation(b->name);
 			if (c) {
 				char tmp[1024];
-				g_snprintf(tmp, sizeof(tmp), _("%s logged out."), b->show);
+				g_snprintf(tmp, sizeof(tmp), _("%s logged out."),
+						get_buddy_alias(b));
 				write_to_conv(c, tmp, WFLAG_SYSTEM, NULL, time(NULL), -1);
 			} else if (clistqueue && find_queue_total_by_name(b->name)) {
 				struct queued_message *qm = g_new0(struct queued_message, 1);
-				g_snprintf(qm->name, sizeof(qm->name), "%s", b->name);
-				qm->message = g_strdup_printf(_("%s logged out."), b->show);
+				g_snprintf(qm->name, sizeof(qm->name), "%s",
+						get_buddy_alias(b));
+				qm->message = g_strdup_printf(_("%s logged out."),
+						get_buddy_alias(b));
 				qm->gc = gc;
 				qm->tm = time(NULL);
 				qm->flags = WFLAG_SYSTEM;