comparison libpurple/protocols/qq/buddy_opt.c @ 24077:ce94189f15ad

Flos Lonicerae <lonicerae(at)gmail.com> * Merge lonicerae and ccpaging into trunk
author SHiNE CsyFeK <csyfek@gmail.com>
date Wed, 22 Oct 2008 14:52:26 +0000
parents ec3f7d3e0445
children 1bdf7b602684
comparison
equal deleted inserted replaced
24076:ec3f7d3e0445 24077:ce94189f15ad
344 who = buddy->name; 344 who = buddy->name;
345 g_return_if_fail(who != NULL); 345 g_return_if_fail(who != NULL);
346 346
347 uid = purple_name_to_uid(who); 347 uid = purple_name_to_uid(who);
348 g_return_if_fail(uid > 0); 348 g_return_if_fail(uid > 0);
349 349
350 if (uid == qd->uid) { 350 if (uid == qd->uid) {
351 return; 351 return;
352 } 352 }
353 353
354 add_req = g_new0(qq_add_request, 1); 354 add_req = g_new0(qq_add_request, 1);
499 return g; 499 return g;
500 } 500 }
501 501
502 /* we add new buddy, if the received packet is from someone not in my list 502 /* we add new buddy, if the received packet is from someone not in my list
503 * return the PurpleBuddy that is just created */ 503 * return the PurpleBuddy that is just created */
504 PurpleBuddy *qq_create_buddy(PurpleConnection *gc, guint32 uid, gboolean is_known, gboolean create) 504 PurpleBuddy *qq_create_buddy(PurpleConnection *gc, guint32 uid,
505 { 505 gboolean is_known, gboolean is_create_data)
506 PurpleBuddy *buddy; 506 {
507 PurpleBuddy *purple_buddy;
507 PurpleGroup *group; 508 PurpleGroup *group;
508 qq_data *qd; 509 qq_data *qd;
509 qq_buddy *q_bud; 510 qq_buddy *buddy;
510 gchar *buddy_name, *group_name; 511 gchar *buddy_name, *group_name;
511 512
512 g_return_val_if_fail(gc->account != NULL && uid != 0, NULL); 513 g_return_val_if_fail(gc->account != NULL && uid != 0, NULL);
513 qd = (qq_data *) gc->proto_data; 514 qd = (qq_data *) gc->proto_data;
514 515
520 } 521 }
521 522
522 group = qq_create_group(group_name); 523 group = qq_create_group(group_name);
523 524
524 buddy_name = uid_to_purple_name(uid); 525 buddy_name = uid_to_purple_name(uid);
525 buddy = purple_find_buddy(gc->account, buddy_name); 526 purple_buddy = purple_find_buddy(gc->account, buddy_name);
526 /* remove old, we can not simply return here 527 /* remove old, we can not simply return here
527 * because there might be old local copy of this buddy */ 528 * because there might be old local copy of this buddy */
528 if (buddy != NULL) 529 if (purple_buddy != NULL)
529 purple_blist_remove_buddy(buddy); 530 purple_blist_remove_buddy(purple_buddy);
530 531
531 buddy = purple_buddy_new(gc->account, buddy_name, NULL); 532 purple_buddy = purple_buddy_new(gc->account, buddy_name, NULL);
532 if ( !is_known) { 533 if ( !is_known) {
533 if (purple_privacy_check(gc->account, buddy_name)) { 534 if (purple_privacy_check(gc->account, buddy_name)) {
534 purple_privacy_deny(gc->account, buddy_name, TRUE, FALSE); 535 purple_privacy_deny(gc->account, buddy_name, TRUE, FALSE);
535 } else { 536 } else {
536 purple_privacy_deny_add(gc->account, buddy_name, TRUE); 537 purple_privacy_deny_add(gc->account, buddy_name, TRUE);
537 } 538 }
538 } 539 }
539 540
540 if (!create) 541 if (!is_create_data)
541 buddy->proto_data = NULL; 542 purple_buddy->proto_data = NULL;
542 else { 543 else {
543 q_bud = g_new0(qq_buddy, 1); 544 buddy = g_new0(qq_buddy, 1);
544 q_bud->uid = uid; 545 buddy->uid = uid;
545 buddy->proto_data = q_bud; 546 purple_buddy->proto_data = buddy;
546 qd->buddies = g_list_append(qd->buddies, q_bud); 547 qd->buddies = g_list_append(qd->buddies, buddy);
547 qq_request_buddy_info(gc, qd->uid, 0, 0); 548 qq_request_buddy_info(gc, uid, 0, 0);
548 qq_request_get_buddies_online(gc, 0, 0); 549 qq_request_get_buddies_online(gc, 0, 0);
549 if (qd->client_version >= 2007) { 550 if (qd->client_version >= 2007) {
550 qq_request_get_level_2007(gc, q_bud->uid); 551 qq_request_get_level_2007(gc, uid);
551 } else { 552 } else {
552 qq_request_get_level(gc, q_bud->uid); 553 qq_request_get_level(gc, uid);
553 } 554 }
554 } 555 }
555 556
556 purple_blist_add_buddy(buddy, NULL, group, NULL); 557 purple_blist_add_buddy(purple_buddy, NULL, group, NULL);
557 purple_debug_warning("QQ", "Add new buddy: [%s]\n", buddy_name); 558 purple_debug_warning("QQ", "Add new buddy: [%s]\n", buddy_name);
558 559
559 g_free(buddy_name); 560 g_free(buddy_name);
560 g_free(group_name); 561 g_free(group_name);
561 562
562 return buddy; 563 return purple_buddy;
563 } 564 }
564 565
565 qq_buddy *qq_get_buddy(PurpleConnection *gc, guint32 uid) 566 qq_buddy *qq_get_buddy(PurpleConnection *gc, guint32 uid)
566 { 567 {
567 gchar *purple_name; 568 gchar *purple_name;
572 if (purple_name == NULL) return NULL; 573 if (purple_name == NULL) return NULL;
573 574
574 purple_buddy = purple_find_buddy(purple_connection_get_account(gc), purple_name); 575 purple_buddy = purple_find_buddy(purple_connection_get_account(gc), purple_name);
575 g_free(purple_name); 576 g_free(purple_name);
576 if (purple_buddy == NULL) return NULL; 577 if (purple_buddy == NULL) return NULL;
577 578
578 if (purple_buddy->proto_data == NULL) { 579 if (purple_buddy->proto_data == NULL) {
579 purple_debug_error("QQ", "Null data of buddy %d\n", uid); 580 purple_debug_error("QQ", "Can not find buddy data of %d\n", uid);
580 return NULL; 581 return NULL;
581 } 582 }
582 return (qq_buddy *) purple_buddy->proto_data; 583 return (qq_buddy *) purple_buddy->proto_data;
583 } 584 }
584 585