comparison libpurple/protocols/qq/buddy_list.c @ 25807:e35115192593

Finished struct hiding in bonjour and qq
author Gary Kramlich <grim@reaperworld.com>
date Sun, 02 Nov 2008 10:21:19 +0000
parents d35672443baa
children 65cfc59858cf
comparison
equal deleted inserted replaced
25806:b48f6d0ecdf7 25807:e35115192593
324 purple_debug_info("QQ", "buddy [%09d]: ext_flag=0x%02x, comm_flag=0x%02x, nick=%s\n", 324 purple_debug_info("QQ", "buddy [%09d]: ext_flag=0x%02x, comm_flag=0x%02x, nick=%s\n",
325 bd.uid, bd.ext_flag, bd.comm_flag, bd.nickname); 325 bd.uid, bd.ext_flag, bd.comm_flag, bd.nickname);
326 #endif 326 #endif
327 327
328 buddy = qq_buddy_find_or_new(gc, bd.uid); 328 buddy = qq_buddy_find_or_new(gc, bd.uid);
329 if (buddy == NULL || buddy->proto_data == NULL) { 329 if (buddy == NULL || purple_buddy_get_protocol_data(buddy) == NULL) {
330 g_free(bd.nickname); 330 g_free(bd.nickname);
331 continue; 331 continue;
332 } 332 }
333 purple_blist_server_alias_buddy(buddy, bd.nickname); 333 purple_blist_server_alias_buddy(buddy, bd.nickname);
334 bd.last_update = time(NULL); 334 bd.last_update = time(NULL);
335 qq_update_buddy_status(gc, bd.uid, bd.status, bd.comm_flag); 335 qq_update_buddy_status(gc, bd.uid, bd.status, bd.comm_flag);
336 336
337 g_memmove(buddy->proto_data, &bd, sizeof(qq_buddy_data)); 337 g_memmove(purple_buddy_get_protocol_data(buddy), &bd, sizeof(qq_buddy_data));
338 /* nickname has been copy to buddy_data do not free 338 /* nickname has been copy to buddy_data do not free
339 g_free(bd.nickname); 339 g_free(bd.nickname);
340 */ 340 */
341 } 341 }
342 342
639 639
640 buddies = purple_find_buddies(purple_connection_get_account(gc), NULL); 640 buddies = purple_find_buddies(purple_connection_get_account(gc), NULL);
641 for (it = buddies; it; it = it->next) { 641 for (it = buddies; it; it = it->next) {
642 buddy = it->data; 642 buddy = it->data;
643 if (buddy == NULL) continue; 643 if (buddy == NULL) continue;
644 if (buddy->proto_data == NULL) continue; 644
645 645 bd = purple_buddy_get_protocol_data(buddy);
646 bd = (qq_buddy_data *)buddy->proto_data; 646 if (bd == NULL) continue;
647
647 if (bd->uid == 0) continue; 648 if (bd->uid == 0) continue;
648 if (bd->uid == qd->uid) continue; /* my status is always online in my buddy list */ 649 if (bd->uid == qd->uid) continue; /* my status is always online in my buddy list */
649 if (tm_limit < bd->last_update) continue; 650 if (tm_limit < bd->last_update) continue;
650 if (bd->status == QQ_BUDDY_ONLINE_INVISIBLE) continue; 651 if (bd->status == QQ_BUDDY_ONLINE_INVISIBLE) continue;
651 if (bd->status == QQ_BUDDY_CHANGE_TO_OFFLINE) continue; 652 if (bd->status == QQ_BUDDY_CHANGE_TO_OFFLINE) continue;
661 qq_data *qd; 662 qq_data *qd;
662 PurpleBuddy *buddy; 663 PurpleBuddy *buddy;
663 GSList *buddies, *it; 664 GSList *buddies, *it;
664 gint count = 0; 665 gint count = 0;
665 666
666 qd = (qq_data *) (gc->proto_data); 667 qd = (qq_data *)purple_connection_get_protocol_data(gc);
667 668
668 buddies = purple_find_buddies(purple_connection_get_account(gc), NULL); 669 buddies = purple_find_buddies(purple_connection_get_account(gc), NULL);
669 for (it = buddies; it; it = it->next) { 670 for (it = buddies; it; it = it->next) {
671 qq_buddy_data *qbd = NULL;
672
670 buddy = it->data; 673 buddy = it->data;
671 if (buddy == NULL) continue; 674 if (buddy == NULL) continue;
672 if (buddy->proto_data == NULL) continue; 675
673 676 qbd = purple_buddy_get_protocol_data(buddy);
674 qq_buddy_data_free(buddy->proto_data); 677 if (qbd == NULL) continue;
675 buddy->proto_data = NULL; 678
679 qq_buddy_data_free(qbd);
680 purple_buddy_set_protocol_data(buddy, NULL);
676 681
677 count++; 682 count++;
678 } 683 }
679 684
680 if (count > 0) { 685 if (count > 0) {