comparison 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
comparison
equal deleted inserted replaced
4226:a7d1eddc0afc 4227:a614423c648f
82 GtkWidget *pix; 82 GtkWidget *pix;
83 GtkWidget *label; 83 GtkWidget *label;
84 GtkWidget *warn; 84 GtkWidget *warn;
85 GtkWidget *idle; 85 GtkWidget *idle;
86 char *name; 86 char *name;
87 char *show;
88 GSList *connlist; 87 GSList *connlist;
89 guint log_timer; 88 guint log_timer;
90 gint sound; 89 gint sound;
91 }; 90 };
92 91
146 gs->members = g_slist_remove(gs->members, bs); 145 gs->members = g_slist_remove(gs->members, bs);
147 if (bs->log_timer > 0) 146 if (bs->log_timer > 0)
148 g_source_remove(bs->log_timer); 147 g_source_remove(bs->log_timer);
149 bs->log_timer = 0; 148 bs->log_timer = 0;
150 remove_buddy_show(gs, bs); 149 remove_buddy_show(gs, bs);
151 g_free(bs->show);
152 g_free(bs->name); 150 g_free(bs->name);
153 g_free(bs); 151 g_free(bs);
154 } 152 }
155 if ((bs = find_buddy_show(new_gs, b->name)) == NULL) { 153 if ((bs = find_buddy_show(new_gs, b->name)) == NULL) {
156 if (g->gc->prpl->list_icon) { 154 if (g->gc->prpl->list_icon) {
200 gs->members = g_slist_remove(gs->members, bs); 198 gs->members = g_slist_remove(gs->members, bs);
201 if (bs->log_timer > 0) 199 if (bs->log_timer > 0)
202 g_source_remove(bs->log_timer); 200 g_source_remove(bs->log_timer);
203 bs->log_timer = 0; 201 bs->log_timer = 0;
204 remove_buddy_show(gs, bs); 202 remove_buddy_show(gs, bs);
205 g_free(bs->show);
206 g_free(bs->name); 203 g_free(bs->name);
207 g_free(bs); 204 g_free(bs);
208 } 205 }
209 if (g->gc->prpl->list_icon) { 206 if (g->gc->prpl->list_icon) {
210 bs = new_buddy_show(new_gs, b, 207 bs = new_buddy_show(new_gs, b,
234 struct group_show *gs; 231 struct group_show *gs;
235 struct group *g; 232 struct group *g;
236 GtkCTreeNode *c; 233 GtkCTreeNode *c;
237 char buf[256]; 234 char buf[256];
238 235
239 if (!strcmp(b->show, prevname))
240 g_snprintf(b->show, sizeof(b->show), "%s", b->name);
241
242 /* well you shouldn't be calling this if nothing changed. duh. */ 236 /* well you shouldn't be calling this if nothing changed. duh. */
243 do_export(b->gc); 237 do_export(b->gc);
244 238
245 c = gtk_ctree_find_by_row_data(GTK_CTREE(edittree), NULL, b); 239 c = gtk_ctree_find_by_row_data(GTK_CTREE(edittree), NULL, b);
246 if (strcmp(b->show, b->name)) 240 if (get_buddy_alias_only(b))
247 g_snprintf(buf, sizeof(buf), "%s (%s)", b->name, b->show); 241 g_snprintf(buf, sizeof(buf), "%s (%s)", b->name, get_buddy_alias(b));
248 else 242 else
249 g_snprintf(buf, sizeof(buf), "%s", b->name); 243 g_snprintf(buf, sizeof(buf), "%s", b->name);
250 gtk_ctree_node_set_text(GTK_CTREE(edittree), c, 0, buf); 244 gtk_ctree_node_set_text(GTK_CTREE(edittree), c, 0, buf);
251 245
252 if ((cnv = find_conversation(b->name)) != NULL) 246 if ((cnv = find_conversation(b->name)) != NULL)
253 set_convo_title(cnv); 247 set_convo_title(cnv);
254
255 gs = find_group_show(prevname);
256 248
257 g = find_group_by_buddy(b->gc, b->name); 249 g = find_group_by_buddy(b->gc, b->name);
258 if (!g) { 250 if (!g) {
259 /* shouldn't happen */ 251 /* shouldn't happen */
260 return; 252 return;
275 gs->members = g_slist_remove(gs->members, bs); 267 gs->members = g_slist_remove(gs->members, bs);
276 if (bs->log_timer > 0) 268 if (bs->log_timer > 0)
277 g_source_remove(bs->log_timer); 269 g_source_remove(bs->log_timer);
278 bs->log_timer = 0; 270 bs->log_timer = 0;
279 remove_buddy_show(gs, bs); 271 remove_buddy_show(gs, bs);
280 g_free(bs->show);
281 g_free(bs->name); 272 g_free(bs->name);
282 g_free(bs); 273 g_free(bs);
283 } 274 }
284 update_num_group(gs); 275 update_num_group(gs);
285 } else { 276 } else {
286 gtk_label_set_text(GTK_LABEL(bs->label), b->show); 277 gtk_label_set_text(GTK_LABEL(bs->label), get_buddy_alias(b));
287 update_idle_time(bs); 278 update_idle_time(bs);
288 } 279 }
289 } 280 }
290 281
291 void destroy_buddy() 282 void destroy_buddy()
304 m = g_slist_remove(m, b); 295 m = g_slist_remove(m, b);
305 if (b->log_timer > 0) 296 if (b->log_timer > 0)
306 g_source_remove(b->log_timer); 297 g_source_remove(b->log_timer);
307 b->log_timer = 0; 298 b->log_timer = 0;
308 gtk_tree_remove_item(GTK_TREE(g->tree), b->item); 299 gtk_tree_remove_item(GTK_TREE(g->tree), b->item);
309 g_free(b->show);
310 g_free(b->name); 300 g_free(b->name);
311 g_free(b); 301 g_free(b);
312 } 302 }
313 gtk_tree_remove_item(GTK_TREE(buddies), g->item); 303 gtk_tree_remove_item(GTK_TREE(buddies), g->item);
314 s = g_slist_remove(s, g); 304 s = g_slist_remove(s, g);
748 return FALSE; 738 return FALSE;
749 } 739 }
750 740
751 static void un_alias(GtkWidget *a, struct buddy *b) 741 static void un_alias(GtkWidget *a, struct buddy *b)
752 { 742 {
753 g_snprintf(b->show, sizeof(b->show), "%s", b->name); 743 b->alias[0] = '\0';
754 /* passing b->show as the previous name seems to be the (current) 744 handle_buddy_rename(b, b->name); /* make me a sammich! */
755 * way to get the bs->lable changed for that buddy. However, this
756 * function should do everything that needs to be done
757 */
758 handle_buddy_rename(b, b->show); /* make me a sammich! */
759 serv_alias_buddy(b); 745 serv_alias_buddy(b);
760 746
761 } 747 }
762 748
763 static gboolean click_edit_tree(GtkWidget *widget, GdkEventButton *event, gpointer data) 749 static gboolean click_edit_tree(GtkWidget *widget, GdkEventButton *event, gpointer data)
818 g_signal_connect(GTK_OBJECT(button), "activate", 804 g_signal_connect(GTK_OBJECT(button), "activate",
819 G_CALLBACK(pressed_alias_bud), b); 805 G_CALLBACK(pressed_alias_bud), b);
820 gtk_menu_append(GTK_MENU(menu), button); 806 gtk_menu_append(GTK_MENU(menu), button);
821 gtk_widget_show(button); 807 gtk_widget_show(button);
822 808
823 if (strcmp(b->name, b->show)) { 809 if (b->alias[0]) {
824 button = gtk_menu_item_new_with_label(_("Un-Alias")); 810 button = gtk_menu_item_new_with_label(_("Un-Alias"));
825 g_signal_connect(GTK_OBJECT(button), "activate", G_CALLBACK(un_alias), b); 811 g_signal_connect(GTK_OBJECT(button), "activate", G_CALLBACK(un_alias), b);
826 gtk_menu_append(GTK_MENU(menu), button); 812 gtk_menu_append(GTK_MENU(menu), button);
827 gtk_widget_show(button); 813 gtk_widget_show(button);
828 } 814 }
905 gs->members = g_slist_remove(gs->members, bs); 891 gs->members = g_slist_remove(gs->members, bs);
906 if (bs->log_timer > 0) 892 if (bs->log_timer > 0)
907 g_source_remove(bs->log_timer); 893 g_source_remove(bs->log_timer);
908 bs->log_timer = 0; 894 bs->log_timer = 0;
909 remove_buddy_show(gs, bs); 895 remove_buddy_show(gs, bs);
910 g_free(bs->show);
911 g_free(bs->name); 896 g_free(bs->name);
912 g_free(bs); 897 g_free(bs);
913 if (!g_slist_length(gs->members) && 898 if (!g_slist_length(gs->members) &&
914 (blist_options & OPT_BLIST_NO_MT_GRP)) { 899 (blist_options & OPT_BLIST_NO_MT_GRP)) {
915 shows = g_slist_remove(shows, gs); 900 shows = g_slist_remove(shows, gs);
1011 while (m) { 996 while (m) {
1012 bs = (struct buddy_show *)m->data; 997 bs = (struct buddy_show *)m->data;
1013 m = g_slist_remove(m, bs); 998 m = g_slist_remove(m, bs);
1014 if (bs->log_timer > 0) 999 if (bs->log_timer > 0)
1015 g_source_remove(bs->log_timer); 1000 g_source_remove(bs->log_timer);
1016 g_free(bs->show);
1017 g_free(bs->name); 1001 g_free(bs->name);
1018 g_free(bs); 1002 g_free(bs);
1019 } 1003 }
1020 g_free(gs->name); 1004 g_free(gs->name);
1021 g_free(gs); 1005 g_free(gs);
1180 1164
1181 mem = g2->members; 1165 mem = g2->members;
1182 while (mem) { 1166 while (mem) {
1183 b = (struct buddy *)mem->data; 1167 b = (struct buddy *)mem->data;
1184 if (!find_buddy(pc, b->name)) 1168 if (!find_buddy(pc, b->name))
1185 add_buddy(pc, g->name, b->name, b->show); 1169 add_buddy(pc, g->name, b->name, b->alias);
1186 mem = mem->next; 1170 mem = mem->next;
1187 } 1171 }
1188 } 1172 }
1189 do_export(pc); 1173 do_export(pc);
1190 } else { 1174 } else {
1299 mem = g->members; 1283 mem = g->members;
1300 1284
1301 while (mem) { 1285 while (mem) {
1302 char buf[256]; 1286 char buf[256];
1303 b = (struct buddy *)mem->data; 1287 b = (struct buddy *)mem->data;
1304 if (strcmp(b->name, b->show)) { 1288 if (get_buddy_alias_only(b)) {
1305 g_snprintf(buf, sizeof(buf), "%s (%s)", b->name, b->show); 1289 g_snprintf(buf, sizeof(buf), "%s (%s)", b->name, get_buddy_alias(b));
1306 text[0] = buf; 1290 text[0] = buf;
1307 } else 1291 } else
1308 text[0] = b->name; 1292 text[0] = b->name;
1309 1293
1310 n = gtk_ctree_insert_node(GTK_CTREE(edittree), 1294 n = gtk_ctree_insert_node(GTK_CTREE(edittree),
1339 1323
1340 if (!blist) 1324 if (!blist)
1341 return; 1325 return;
1342 1326
1343 p = gtk_ctree_find_by_row_data(GTK_CTREE(edittree), NULL, g); 1327 p = gtk_ctree_find_by_row_data(GTK_CTREE(edittree), NULL, g);
1344 if (strcmp(b->name, b->show)) { 1328 if (get_buddy_alias_only(b)) {
1345 g_snprintf(buf, sizeof(buf), "%s (%s)", b->name, b->show); 1329 g_snprintf(buf, sizeof(buf), "%s (%s)", b->name, get_buddy_alias(b));
1346 text[0] = buf; 1330 text[0] = buf;
1347 } else 1331 } else
1348 text[0] = b->name; 1332 text[0] = b->name;
1349 1333
1350 n = gtk_ctree_insert_node(GTK_CTREE(edittree), p, NULL, text, 5, NULL, NULL, NULL, NULL, 1, 1); 1334 n = gtk_ctree_insert_node(GTK_CTREE(edittree), p, NULL, text, 5, NULL, NULL, NULL, NULL, 1, 1);
1919 gtk_tree_item_expand(GTK_TREE_ITEM(gs->item)); 1903 gtk_tree_item_expand(GTK_TREE_ITEM(gs->item));
1920 gtk_widget_show(gs->tree); 1904 gtk_widget_show(gs->tree);
1921 } 1905 }
1922 1906
1923 b->name = g_strdup(buddy->name); 1907 b->name = g_strdup(buddy->name);
1924 b->show = g_strdup(buddy->show);
1925 1908
1926 b->item = gtk_tree_item_new(); 1909 b->item = gtk_tree_item_new();
1927 gtk_tree_insert(GTK_TREE(gs->tree), b->item, pos); 1910 gtk_tree_insert(GTK_TREE(gs->tree), b->item, pos);
1928 gtk_object_set_user_data(GTK_OBJECT(b->item), b); 1911 gtk_object_set_user_data(GTK_OBJECT(b->item), b);
1929 g_signal_connect(GTK_OBJECT(b->item), "button_press_event", 1912 g_signal_connect(GTK_OBJECT(b->item), "button_press_event",
1941 if (!(blist_options & OPT_BLIST_SHOW_PIXMAPS)) 1924 if (!(blist_options & OPT_BLIST_SHOW_PIXMAPS))
1942 gtk_widget_hide(b->pix); 1925 gtk_widget_hide(b->pix);
1943 gdk_pixmap_unref(pm); 1926 gdk_pixmap_unref(pm);
1944 gdk_bitmap_unref(bm); 1927 gdk_bitmap_unref(bm);
1945 1928
1946 b->label = gtk_label_new(buddy->show); 1929 b->label = gtk_label_new(get_buddy_alias(buddy));
1947 gtk_misc_set_alignment(GTK_MISC(b->label), 0.0, 0.5); 1930 gtk_misc_set_alignment(GTK_MISC(b->label), 0.0, 0.5);
1948 gtk_box_pack_start(GTK_BOX(box), b->label, FALSE, FALSE, 1); 1931 gtk_box_pack_start(GTK_BOX(box), b->label, FALSE, FALSE, 1);
1949 gtk_widget_show(b->label); 1932 gtk_widget_show(b->label);
1950 1933
1951 b->warn = gtk_label_new(""); 1934 b->warn = gtk_label_new("");
2135 g_free(g); 2118 g_free(g);
2136 } 2119 }
2137 g_source_remove(b->log_timer); 2120 g_source_remove(b->log_timer);
2138 b->log_timer = 0; 2121 b->log_timer = 0;
2139 g_free(b->name); 2122 g_free(b->name);
2140 g_free(b->show);
2141 g_free(b); 2123 g_free(b);
2142 } else { 2124 } else {
2143 /* um.... what do we have to do here? just update the pixmap? */ 2125 /* um.... what do we have to do here? just update the pixmap? */
2144 GdkPixmap *pm; 2126 GdkPixmap *pm;
2145 GdkBitmap *bm; 2127 GdkBitmap *bm;
2248 GtkStyle *style; 2230 GtkStyle *style;
2249 2231
2250 char infotip[2048]; 2232 char infotip[2048];
2251 char warn[256]; 2233 char warn[256];
2252 char caps[256]; 2234 char caps[256];
2235 char alias[512];
2236 char serv_alias[512];
2253 char *sotime = NULL, *itime; 2237 char *sotime = NULL, *itime;
2254 2238
2255 int i; 2239 int i;
2256 2240
2257 time(&t); 2241 time(&t);
2322 if (b->caps) 2306 if (b->caps)
2323 g_snprintf(caps, sizeof caps, _("Capabilities: %s\n"), caps_string(b->caps)); 2307 g_snprintf(caps, sizeof caps, _("Capabilities: %s\n"), caps_string(b->caps));
2324 else 2308 else
2325 caps[0] = '\0'; 2309 caps[0] = '\0';
2326 2310
2327 g_snprintf(infotip, sizeof infotip, _("Alias: %s \nScreen Name: %s\n" 2311 if (b->alias[0])
2328 "%s%s%s%s%s%s"), 2312 g_snprintf(alias, sizeof alias, _("Alias: %s\n"), b->alias);
2329 b->show, b->name, 2313 else
2330 (b->signon ? sotime : ""), warn, 2314 alias[0] = '\0';
2315
2316 if (b->server_alias[0])
2317 g_snprintf(serv_alias, sizeof serv_alias, _("Nickname: %s\n"),
2318 b->server_alias);
2319 else
2320 serv_alias[0] = '\0';
2321
2322 g_snprintf(infotip, sizeof infotip, _("%s%sScreen Name: %s\n%s%s%s%s%s%s"),
2323 alias, serv_alias, b->name, (b->signon ? sotime : ""), warn,
2331 (b->idle ? _("Idle: ") : ""), itime, (b->idle ? "\n" : ""), caps); 2324 (b->idle ? _("Idle: ") : ""), itime, (b->idle ? "\n" : ""), caps);
2332 2325
2333 gtk_tooltips_set_tip(tips, GTK_WIDGET(bs->item), infotip, ""); 2326 gtk_tooltips_set_tip(tips, GTK_WIDGET(bs->item), infotip, "");
2334 2327
2335 if (b->signon) 2328 if (b->signon)
2395 bs->log_timer = g_timeout_add(10000, log_timeout, bs); 2388 bs->log_timer = g_timeout_add(10000, log_timeout, bs);
2396 if ((bs->sound != 2) && (im_options & OPT_IM_LOGON)) { 2389 if ((bs->sound != 2) && (im_options & OPT_IM_LOGON)) {
2397 struct conversation *c = find_conversation(b->name); 2390 struct conversation *c = find_conversation(b->name);
2398 if (c) { 2391 if (c) {
2399 char tmp[1024]; 2392 char tmp[1024];
2400 g_snprintf(tmp, sizeof(tmp), _("%s logged in."), b->show); 2393 g_snprintf(tmp, sizeof(tmp), _("%s logged in."),
2394 get_buddy_alias(b));
2401 write_to_conv(c, tmp, WFLAG_SYSTEM, NULL, time(NULL), -1); 2395 write_to_conv(c, tmp, WFLAG_SYSTEM, NULL, time(NULL), -1);
2402 } else if (clistqueue && find_queue_total_by_name(b->name)) { 2396 } else if (clistqueue && find_queue_total_by_name(b->name)) {
2403 struct queued_message *qm = g_new0(struct queued_message, 1); 2397 struct queued_message *qm = g_new0(struct queued_message, 1);
2404 g_snprintf(qm->name, sizeof(qm->name), "%s", b->name); 2398 g_snprintf(qm->name, sizeof(qm->name), "%s", b->name);
2405 qm->message = g_strdup_printf(_("%s logged in."), b->show); 2399 qm->message = g_strdup_printf(_("%s logged in."),
2400 get_buddy_alias(b));
2406 qm->gc = gc; 2401 qm->gc = gc;
2407 qm->tm = time(NULL); 2402 qm->tm = time(NULL);
2408 qm->flags = WFLAG_SYSTEM; 2403 qm->flags = WFLAG_SYSTEM;
2409 qm->len = -1; 2404 qm->len = -1;
2410 message_queue = g_slist_append(message_queue, qm); 2405 message_queue = g_slist_append(message_queue, qm);
2454 gdk_bitmap_unref(bm); 2449 gdk_bitmap_unref(bm);
2455 if ((bs->sound != 1) && (im_options & OPT_IM_LOGON)) { 2450 if ((bs->sound != 1) && (im_options & OPT_IM_LOGON)) {
2456 struct conversation *c = find_conversation(b->name); 2451 struct conversation *c = find_conversation(b->name);
2457 if (c) { 2452 if (c) {
2458 char tmp[1024]; 2453 char tmp[1024];
2459 g_snprintf(tmp, sizeof(tmp), _("%s logged out."), b->show); 2454 g_snprintf(tmp, sizeof(tmp), _("%s logged out."),
2455 get_buddy_alias(b));
2460 write_to_conv(c, tmp, WFLAG_SYSTEM, NULL, time(NULL), -1); 2456 write_to_conv(c, tmp, WFLAG_SYSTEM, NULL, time(NULL), -1);
2461 } else if (clistqueue && find_queue_total_by_name(b->name)) { 2457 } else if (clistqueue && find_queue_total_by_name(b->name)) {
2462 struct queued_message *qm = g_new0(struct queued_message, 1); 2458 struct queued_message *qm = g_new0(struct queued_message, 1);
2463 g_snprintf(qm->name, sizeof(qm->name), "%s", b->name); 2459 g_snprintf(qm->name, sizeof(qm->name), "%s",
2464 qm->message = g_strdup_printf(_("%s logged out."), b->show); 2460 get_buddy_alias(b));
2461 qm->message = g_strdup_printf(_("%s logged out."),
2462 get_buddy_alias(b));
2465 qm->gc = gc; 2463 qm->gc = gc;
2466 qm->tm = time(NULL); 2464 qm->tm = time(NULL);
2467 qm->flags = WFLAG_SYSTEM; 2465 qm->flags = WFLAG_SYSTEM;
2468 qm->len = -1; 2466 qm->len = -1;
2469 message_queue = g_slist_append(message_queue, qm); 2467 message_queue = g_slist_append(message_queue, qm);