Mercurial > pidgin
diff src/protocols/msn/userlist.c @ 19840:5568b3ac6fce
[gaim-migrate @ 17481]
gradually got SOAP contact list and address book from Server.
Cache the info in blist.xml
committer: Ethan Blanton <elb@pidgin.im>
author | Ma Yuan <mayuan2006@gmail.com> |
---|---|
date | Sat, 14 Oct 2006 20:00:56 +0000 |
parents | ea8b7028e8bb |
children |
line wrap: on
line diff
--- a/src/protocols/msn/userlist.c Sat Sep 16 18:27:25 2006 +0000 +++ b/src/protocols/msn/userlist.c Sat Oct 14 20:00:56 2006 +0000 @@ -718,3 +718,46 @@ msn_userlist_rem_buddy(userlist, who, MSN_LIST_FL, old_group_name); } +/*load userlist from the Blist file cache*/ +void +msn_userlist_load(MsnSession *session) +{ + GaimBlistNode *gnode, *cnode, *bnode; + GaimConnection *gc = gaim_account_get_connection(session->account); + GSList *l; + MsnUser * user; + + g_return_if_fail(gc != NULL); + + for (gnode = gaim_get_blist()->root; gnode; gnode = gnode->next){ + if(!GAIM_BLIST_NODE_IS_GROUP(gnode)) + continue; + for(cnode = gnode->child; cnode; cnode = cnode->next) { + if(!GAIM_BLIST_NODE_IS_CONTACT(cnode)) + continue; + for(bnode = cnode->child; bnode; bnode = bnode->next) { + GaimBuddy *b; + if(!GAIM_BLIST_NODE_IS_BUDDY(bnode)) + continue; + b = (GaimBuddy *)bnode; + if(b->account == gc->account){ + user = msn_userlist_find_add_user(session->userlist, + b->name,NULL); + msn_user_set_op(user,MSN_LIST_FL_OP); + } + } + } + } + for (l = session->account->permit; l != NULL; l = l->next) { + user = msn_userlist_find_add_user(session->userlist, + (char *)l->data,NULL); + msn_user_set_op(user,MSN_LIST_AL_OP); + } + for (l = session->account->deny; l != NULL; l = l->next) { + user = msn_userlist_find_add_user(session->userlist, + (char *)l->data,NULL); + msn_user_set_op(user,MSN_LIST_BL_OP); + } + +} +