Mercurial > pidgin
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); |