comparison libpurple/protocols/msn/contact.c @ 30877:23be655cc688

propagate from branch 'im.pidgin.cpw.qulogic.msnp16' (head a27b68b2e6653e6b96aa0279bd649181c89b20ed) to branch 'im.pidgin.soc.2010.msn-tlc' (head 20ad1c813e2b512df4a065dda88f3cfa732463a3)
author masca@cpw.pidgin.im
date Wed, 15 Sep 2010 17:34:21 +0000
parents 230caecf5435 351d07aefb09
children 5c2af6c30e52
comparison
equal deleted inserted replaced
30873:4b1eecab50e8 30877:23be655cc688
529 MsnSession *session = state->session; 529 MsnSession *session = state->session;
530 530
531 g_return_if_fail(session != NULL); 531 g_return_if_fail(session != NULL);
532 532
533 if (resp != NULL) { 533 if (resp != NULL) {
534 #ifdef MSN_PARTIAL_LISTS
534 const char *abLastChange; 535 const char *abLastChange;
535 const char *dynamicItemLastChange; 536 const char *dynamicItemLastChange;
537 #endif
536 538
537 purple_debug_misc("msn", "Got the contact list!\n"); 539 purple_debug_misc("msn", "Got the contact list!\n");
538 540
539 msn_parse_contact_list(session, resp->xml); 541 msn_parse_contact_list(session, resp->xml);
542 #ifdef MSN_PARTIAL_LISTS
540 abLastChange = purple_account_get_string(session->account, 543 abLastChange = purple_account_get_string(session->account,
541 "ablastChange", NULL); 544 "ablastChange", NULL);
542 dynamicItemLastChange = purple_account_get_string(session->account, 545 dynamicItemLastChange = purple_account_get_string(session->account,
543 "dynamicItemLastChange", NULL); 546 "DynamicItemLastChanged", NULL);
547 #endif
544 548
545 if (state->partner_scenario == MSN_PS_INITIAL) { 549 if (state->partner_scenario == MSN_PS_INITIAL) {
546 #ifdef MSN_PARTIAL_LISTS 550 #ifdef MSN_PARTIAL_LISTS
547 /* XXX: this should be enabled when we can correctly do partial 551 /* XXX: this should be enabled when we can correctly do partial
548 syncs with the server. Currently we need to retrieve the whole 552 syncs with the server. Currently we need to retrieve the whole
686 contactNode = xmlnode_get_next_twin(contactNode)) { 690 contactNode = xmlnode_get_next_twin(contactNode)) {
687 xmlnode *contactId, *contactInfo, *contactType, *passportName, *displayName, *guid, *groupIds; 691 xmlnode *contactId, *contactInfo, *contactType, *passportName, *displayName, *guid, *groupIds;
688 xmlnode *annotation; 692 xmlnode *annotation;
689 MsnUser *user; 693 MsnUser *user;
690 694
695 g_free(passport);
696 g_free(Name);
697 g_free(uid);
698 g_free(type);
699 g_free(mobile_number);
700 g_free(alias);
701 passport = Name = uid = type = mobile_number = alias = NULL;
702 mobile = FALSE;
703
691 if (!(contactId = xmlnode_get_child(contactNode,"contactId")) 704 if (!(contactId = xmlnode_get_child(contactNode,"contactId"))
692 || !(contactInfo = xmlnode_get_child(contactNode, "contactInfo")) 705 || !(contactInfo = xmlnode_get_child(contactNode, "contactInfo"))
693 || !(contactType = xmlnode_get_child(contactInfo, "contactType"))) 706 || !(contactType = xmlnode_get_child(contactInfo, "contactType")))
694 continue; 707 continue;
695
696 g_free(passport);
697 g_free(Name);
698 g_free(alias);
699 g_free(uid);
700 g_free(type);
701 g_free(mobile_number);
702 passport = Name = uid = type = mobile_number = alias = NULL;
703 mobile = FALSE;
704 708
705 uid = xmlnode_get_data(contactId); 709 uid = xmlnode_get_data(contactId);
706 type = xmlnode_get_data(contactType); 710 type = xmlnode_get_data(contactType);
707 711
708 /*setup the Display Name*/ 712 /*setup the Display Name*/
838 g_free(passport); 842 g_free(passport);
839 g_free(Name); 843 g_free(Name);
840 g_free(uid); 844 g_free(uid);
841 g_free(type); 845 g_free(type);
842 g_free(mobile_number); 846 g_free(mobile_number);
847 g_free(alias);
843 } 848 }
844 849
845 static gboolean 850 static gboolean
846 msn_parse_addressbook(MsnSession *session, xmlnode *node) 851 msn_parse_addressbook(MsnSession *session, xmlnode *node)
847 { 852 {
887 groups = xmlnode_get_child(result, "groups"); 892 groups = xmlnode_get_child(result, "groups");
888 if (groups != NULL) { 893 if (groups != NULL) {
889 msn_parse_addressbook_groups(session, groups); 894 msn_parse_addressbook_groups(session, groups);
890 } 895 }
891 896
892 /*add a default No group to set up the no group Membership*/ 897 /* Add an "Other Contacts" group for buddies who aren't in a group */
893 msn_group_new(session->userlist, MSN_INDIVIDUALS_GROUP_ID, 898 msn_group_new(session->userlist, MSN_INDIVIDUALS_GROUP_ID,
894 MSN_INDIVIDUALS_GROUP_NAME); 899 MSN_INDIVIDUALS_GROUP_NAME);
895 purple_debug_misc("msn", "AB group_id:%s name:%s\n", 900 purple_debug_misc("msn", "AB group_id:%s name:%s\n",
896 MSN_INDIVIDUALS_GROUP_ID, MSN_INDIVIDUALS_GROUP_NAME); 901 MSN_INDIVIDUALS_GROUP_ID, MSN_INDIVIDUALS_GROUP_NAME);
897 if ((purple_find_group(MSN_INDIVIDUALS_GROUP_NAME)) == NULL){ 902 if ((purple_find_group(MSN_INDIVIDUALS_GROUP_NAME)) == NULL){
898 PurpleGroup *g = purple_group_new(MSN_INDIVIDUALS_GROUP_NAME); 903 PurpleGroup *g = purple_group_new(MSN_INDIVIDUALS_GROUP_NAME);
899 purple_blist_add_group(g, NULL); 904 purple_blist_add_group(g, NULL);
900 } 905 }
901 906
902 /*add a default No group to set up the no group Membership*/ 907 /* Add a "Non-IM Contacts" group */
903 msn_group_new(session->userlist, MSN_NON_IM_GROUP_ID, MSN_NON_IM_GROUP_NAME); 908 msn_group_new(session->userlist, MSN_NON_IM_GROUP_ID, MSN_NON_IM_GROUP_NAME);
904 purple_debug_misc("msn", "AB group_id:%s name:%s\n", MSN_NON_IM_GROUP_ID, MSN_NON_IM_GROUP_NAME); 909 purple_debug_misc("msn", "AB group_id:%s name:%s\n", MSN_NON_IM_GROUP_ID, MSN_NON_IM_GROUP_NAME);
905 if ((purple_find_group(MSN_NON_IM_GROUP_NAME)) == NULL) { 910 if ((purple_find_group(MSN_NON_IM_GROUP_NAME)) == NULL) {
906 PurpleGroup *g = purple_group_new(MSN_NON_IM_GROUP_NAME); 911 PurpleGroup *g = purple_group_new(MSN_NON_IM_GROUP_NAME);
907 purple_blist_add_group(g, NULL); 912 purple_blist_add_group(g, NULL);
1566 1571
1567 user = msn_userlist_find_user(session->userlist, passport); 1572 user = msn_userlist_find_user(session->userlist, passport);
1568 1573
1569 if (list == MSN_LIST_PL) { 1574 if (list == MSN_LIST_PL) {
1570 partner_scenario = MSN_PS_CONTACT_API; 1575 partner_scenario = MSN_PS_CONTACT_API;
1571 if (user && user->networkid != MSN_NETWORK_PASSPORT) 1576 if (user->networkid != MSN_NETWORK_PASSPORT)
1572 member = g_strdup_printf(MSN_MEMBER_MEMBERSHIPID_XML, 1577 member = g_strdup_printf(MSN_MEMBER_MEMBERSHIPID_XML,
1573 "EmailMember", "Email", 1578 "EmailMember", "Email",
1574 user->member_id_on_pending_list); 1579 user->member_id_on_pending_list);
1575 else 1580 else
1576 member = g_strdup_printf(MSN_MEMBER_MEMBERSHIPID_XML, 1581 member = g_strdup_printf(MSN_MEMBER_MEMBERSHIPID_XML,