comparison libpurple/protocols/qq/buddy_opt.c @ 24120:16734635febf

Start hiding blist.h internals in prpls.
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Sat, 27 Sep 2008 06:33:42 +0000
parents bcfc98c7a55f
children 5ace6c024230
comparison
equal deleted inserted replaced
24119:d1cfa8c11902 24120:16734635febf
238 238
239 gc = g->gc; 239 gc = g->gc;
240 uid = g->uid; 240 uid = g->uid;
241 g_return_if_fail(uid > 0); 241 g_return_if_fail(uid > 0);
242 242
243 /* XXX: This looks very wrong */
243 buddy.name = uid_to_purple_name(uid); 244 buddy.name = uid_to_purple_name(uid);
244 group.name = PURPLE_GROUP_QQ_BLOCKED; 245 group.name = PURPLE_GROUP_QQ_BLOCKED;
245 246
246 qq_remove_buddy(gc, &buddy, &group); 247 qq_remove_buddy(gc, &buddy, &group);
247 _qq_send_packet_remove_self_from(gc, uid); 248 _qq_send_packet_remove_self_from(gc, uid);
458 void qq_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) 459 void qq_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
459 { 460 {
460 qq_data *qd; 461 qq_data *qd;
461 guint32 uid; 462 guint32 uid;
462 PurpleBuddy *b; 463 PurpleBuddy *b;
464 const char *bname;
463 465
464 qd = (qq_data *) gc->proto_data; 466 qd = (qq_data *) gc->proto_data;
465 if (!qd->is_login) 467 if (!qd->is_login)
466 return; /* IMPORTANT ! */ 468 return; /* IMPORTANT ! */
467 469
468 uid = purple_name_to_uid(buddy->name); 470 bname = purple_buddy_get_name(buddy);
471 uid = purple_name_to_uid(bname);
469 if (uid > 0) 472 if (uid > 0)
470 _qq_send_packet_add_buddy(gc, uid); 473 _qq_send_packet_add_buddy(gc, uid);
471 else { 474 else {
472 b = purple_find_buddy(gc->account, buddy->name); 475 b = purple_find_buddy(gc->account, bname);
473 if (b != NULL) 476 if (b != NULL)
474 purple_blist_remove_buddy(b); 477 purple_blist_remove_buddy(b);
475 purple_notify_error(gc, NULL, 478 purple_notify_error(gc, NULL,
476 _("QQ Number Error"), 479 _("QQ Number Error"),
477 _("Invalid QQ Number")); 480 _("Invalid QQ Number"));
483 { 486 {
484 qq_data *qd; 487 qq_data *qd;
485 PurpleBuddy *b; 488 PurpleBuddy *b;
486 qq_buddy *q_bud; 489 qq_buddy *q_bud;
487 guint32 uid; 490 guint32 uid;
488 491 const char *bname;
489 qd = (qq_data *) gc->proto_data; 492
490 uid = purple_name_to_uid(buddy->name); 493 qd = (qq_data *) gc->proto_data;
494 bname = purple_buddy_get_name(buddy);
495 uid = purple_name_to_uid(bname);
491 496
492 if (!qd->is_login) 497 if (!qd->is_login)
493 return; 498 return;
494 499
495 if (uid > 0) 500 if (uid > 0)
496 _qq_send_packet_remove_buddy(gc, uid); 501 _qq_send_packet_remove_buddy(gc, uid);
497 502
498 b = purple_find_buddy(gc->account, buddy->name); 503 b = purple_find_buddy(gc->account, bname);
499 if (b != NULL) { 504 if (b != NULL) {
500 q_bud = (qq_buddy *) b->proto_data; 505 q_bud = (qq_buddy *) b->proto_data;
501 if (q_bud != NULL) 506 if (q_bud != NULL)
502 qd->buddies = g_list_remove(qd->buddies, q_bud); 507 qd->buddies = g_list_remove(qd->buddies, q_bud);
503 else 508 else
504 purple_debug_warning("QQ", "We have no qq_buddy record for %s\n", buddy->name); 509 purple_debug_warning("QQ", "We have no qq_buddy record for %s\n", bname);
505 /* remove buddy on blist, this does not trigger qq_remove_buddy again 510 /* remove buddy on blist, this does not trigger qq_remove_buddy again
506 * do this only if the request comes from block request, 511 * do this only if the request comes from block request,
507 * otherwise purple segmentation fault */ 512 * otherwise purple segmentation fault */
508 if (g_ascii_strcasecmp(group->name, PURPLE_GROUP_QQ_BLOCKED) == 0) 513 if (g_ascii_strcasecmp(purple_group_get_name(group), PURPLE_GROUP_QQ_BLOCKED) == 0)
509 purple_blist_remove_buddy(b); 514 purple_blist_remove_buddy(b);
510 } 515 }
511 } 516 }
512 517
513 /* free add buddy request queue */ 518 /* free add buddy request queue */