Mercurial > pidgin.yaz
diff libpurple/protocols/qq/group.c @ 23753:5f454b975a99
2008.08.10 - csyfek <csyfek(at)gmail.com>
* Commit to Pidgin
2008.08.06 - ccpaging <ecc_hy(at)hotmail.com>
* Rename names of variables, Group, to Room
* Functions of group_network merged into qq_network and qq_process
* Canceled managing glist of group packet, add sub_cmdd and room_id to transaction
* Fixed error of demo group:
If 'room list' and 'room infor' are not setup, response received from server will emits
'room_id = 0' packet.
2008.08.04 - ccpaging <ecc_hy(at)hotmail.com>
* Use new crypt/decrypt functions
* Rename crypt.c/h to qq_crypt.c/h
* Clean code of decrypt functions
* Fixed decryption failure
2008.08.04 - csyfek <csyfek(at)gmail.com>
* Update AUTHORS
author | SHiNE CsyFeK <csyfek@gmail.com> |
---|---|
date | Sun, 10 Aug 2008 04:32:14 +0000 |
parents | dccfd999ffe7 |
children | 967344bc404d |
line wrap: on
line diff
--- a/libpurple/protocols/qq/group.c Sat Aug 09 23:23:48 2008 +0000 +++ b/libpurple/protocols/qq/group.c Sun Aug 10 04:32:14 2008 +0000 @@ -32,17 +32,18 @@ #include "group_info.h" #include "group_search.h" #include "utils.h" - +#include "qq_network.h" +#include "header_info.h" #include "group.h" static void _qq_group_search_callback(PurpleConnection *gc, const gchar *input) { - guint32 external_group_id; + guint32 ext_id; g_return_if_fail(input != NULL); - external_group_id = qq_string_to_dec_value(input); + ext_id = qq_string_to_dec_value(input); /* 0x00000000 means search for demo group */ - qq_send_cmd_group_search_group(gc, external_group_id); + qq_send_cmd_group_search_group(gc, ext_id); } static void _qq_group_search_cancel_callback(PurpleConnection *gc, const gchar *input) @@ -104,7 +105,7 @@ fields = g_list_append(fields, f); f = purple_roomlist_field_new(PURPLE_ROOMLIST_FIELD_STRING, "", QQ_GROUP_KEY_INTERNAL_ID, TRUE); fields = g_list_append(fields, f); - f = purple_roomlist_field_new(PURPLE_ROOMLIST_FIELD_STRING, "", QQ_GROUP_KEY_GROUP_TYPE, TRUE); + f = purple_roomlist_field_new(PURPLE_ROOMLIST_FIELD_STRING, "", QQ_GROUP_KEY_TYPE, TRUE); fields = g_list_append(fields, f); f = purple_roomlist_field_new(PURPLE_ROOMLIST_FIELD_STRING, _("Auth"), QQ_GROUP_KEY_AUTH_TYPE, TRUE); fields = g_list_append(fields, f); @@ -145,12 +146,12 @@ /* this should be called upon signin, even when we did not open group chat window */ void qq_group_init(PurpleConnection *gc) { - gint i; PurpleAccount *account; PurpleChat *chat; PurpleGroup *purple_group; PurpleBlistNode *node; qq_group *group; + gint count; account = purple_connection_get_account(gc); @@ -160,18 +161,25 @@ return; } - i = 0; - for (node = ((PurpleBlistNode *) purple_group)->child; node != NULL; node = node->next) - if (PURPLE_BLIST_NODE_IS_CHAT(node)) { /* got one */ - chat = (PurpleChat *) node; - if (account != chat->account) - continue; /* very important here ! */ - group = qq_group_from_hashtable(gc, chat->components); - if (group != NULL) { - i++; - qq_send_cmd_group_get_group_info(gc, group); /* get group info and members */ - } + count = 0; + for (node = ((PurpleBlistNode *) purple_group)->child; node != NULL; node = node->next) { + if ( !PURPLE_BLIST_NODE_IS_CHAT(node)) { + continue; } + /* got one */ + chat = (PurpleChat *) node; + if (account != chat->account) /* not qq account*/ + continue; + group = qq_group_from_hashtable(gc, chat->components); + if (group == NULL) + continue; - purple_debug(PURPLE_DEBUG_INFO, "QQ", "Load %d QQ Qun configurations\n", i); + if (group->id <= 0) + continue; + + count++; + qq_send_room_cmd_only(gc, QQ_ROOM_CMD_GET_INFO, group->id); + } + + purple_debug(PURPLE_DEBUG_INFO, "QQ", "Load %d QQ Qun configurations\n", count); }