Mercurial > pidgin.yaz
comparison 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 |
comparison
equal
deleted
inserted
replaced
23748:107166bb2a64 | 23753:5f454b975a99 |
---|---|
30 | 30 |
31 #include "group_internal.h" | 31 #include "group_internal.h" |
32 #include "group_info.h" | 32 #include "group_info.h" |
33 #include "group_search.h" | 33 #include "group_search.h" |
34 #include "utils.h" | 34 #include "utils.h" |
35 | 35 #include "qq_network.h" |
36 #include "header_info.h" | |
36 #include "group.h" | 37 #include "group.h" |
37 | 38 |
38 static void _qq_group_search_callback(PurpleConnection *gc, const gchar *input) | 39 static void _qq_group_search_callback(PurpleConnection *gc, const gchar *input) |
39 { | 40 { |
40 guint32 external_group_id; | 41 guint32 ext_id; |
41 | 42 |
42 g_return_if_fail(input != NULL); | 43 g_return_if_fail(input != NULL); |
43 external_group_id = qq_string_to_dec_value(input); | 44 ext_id = qq_string_to_dec_value(input); |
44 /* 0x00000000 means search for demo group */ | 45 /* 0x00000000 means search for demo group */ |
45 qq_send_cmd_group_search_group(gc, external_group_id); | 46 qq_send_cmd_group_search_group(gc, ext_id); |
46 } | 47 } |
47 | 48 |
48 static void _qq_group_search_cancel_callback(PurpleConnection *gc, const gchar *input) | 49 static void _qq_group_search_cancel_callback(PurpleConnection *gc, const gchar *input) |
49 { | 50 { |
50 qq_data *qd; | 51 qq_data *qd; |
102 f = purple_roomlist_field_new(PURPLE_ROOMLIST_FIELD_STRING, | 103 f = purple_roomlist_field_new(PURPLE_ROOMLIST_FIELD_STRING, |
103 _("Group Description"), QQ_GROUP_KEY_GROUP_DESC_UTF8, FALSE); | 104 _("Group Description"), QQ_GROUP_KEY_GROUP_DESC_UTF8, FALSE); |
104 fields = g_list_append(fields, f); | 105 fields = g_list_append(fields, f); |
105 f = purple_roomlist_field_new(PURPLE_ROOMLIST_FIELD_STRING, "", QQ_GROUP_KEY_INTERNAL_ID, TRUE); | 106 f = purple_roomlist_field_new(PURPLE_ROOMLIST_FIELD_STRING, "", QQ_GROUP_KEY_INTERNAL_ID, TRUE); |
106 fields = g_list_append(fields, f); | 107 fields = g_list_append(fields, f); |
107 f = purple_roomlist_field_new(PURPLE_ROOMLIST_FIELD_STRING, "", QQ_GROUP_KEY_GROUP_TYPE, TRUE); | 108 f = purple_roomlist_field_new(PURPLE_ROOMLIST_FIELD_STRING, "", QQ_GROUP_KEY_TYPE, TRUE); |
108 fields = g_list_append(fields, f); | 109 fields = g_list_append(fields, f); |
109 f = purple_roomlist_field_new(PURPLE_ROOMLIST_FIELD_STRING, _("Auth"), QQ_GROUP_KEY_AUTH_TYPE, TRUE); | 110 f = purple_roomlist_field_new(PURPLE_ROOMLIST_FIELD_STRING, _("Auth"), QQ_GROUP_KEY_AUTH_TYPE, TRUE); |
110 fields = g_list_append(fields, f); | 111 fields = g_list_append(fields, f); |
111 f = purple_roomlist_field_new(PURPLE_ROOMLIST_FIELD_STRING, "", QQ_GROUP_KEY_GROUP_CATEGORY, TRUE); | 112 f = purple_roomlist_field_new(PURPLE_ROOMLIST_FIELD_STRING, "", QQ_GROUP_KEY_GROUP_CATEGORY, TRUE); |
112 fields = g_list_append(fields, f); | 113 fields = g_list_append(fields, f); |
143 } | 144 } |
144 | 145 |
145 /* this should be called upon signin, even when we did not open group chat window */ | 146 /* this should be called upon signin, even when we did not open group chat window */ |
146 void qq_group_init(PurpleConnection *gc) | 147 void qq_group_init(PurpleConnection *gc) |
147 { | 148 { |
148 gint i; | |
149 PurpleAccount *account; | 149 PurpleAccount *account; |
150 PurpleChat *chat; | 150 PurpleChat *chat; |
151 PurpleGroup *purple_group; | 151 PurpleGroup *purple_group; |
152 PurpleBlistNode *node; | 152 PurpleBlistNode *node; |
153 qq_group *group; | 153 qq_group *group; |
154 gint count; | |
154 | 155 |
155 account = purple_connection_get_account(gc); | 156 account = purple_connection_get_account(gc); |
156 | 157 |
157 purple_group = purple_find_group(PURPLE_GROUP_QQ_QUN); | 158 purple_group = purple_find_group(PURPLE_GROUP_QQ_QUN); |
158 if (purple_group == NULL) { | 159 if (purple_group == NULL) { |
159 purple_debug(PURPLE_DEBUG_INFO, "QQ", "We have no QQ Qun\n"); | 160 purple_debug(PURPLE_DEBUG_INFO, "QQ", "We have no QQ Qun\n"); |
160 return; | 161 return; |
161 } | 162 } |
162 | 163 |
163 i = 0; | 164 count = 0; |
164 for (node = ((PurpleBlistNode *) purple_group)->child; node != NULL; node = node->next) | 165 for (node = ((PurpleBlistNode *) purple_group)->child; node != NULL; node = node->next) { |
165 if (PURPLE_BLIST_NODE_IS_CHAT(node)) { /* got one */ | 166 if ( !PURPLE_BLIST_NODE_IS_CHAT(node)) { |
166 chat = (PurpleChat *) node; | 167 continue; |
167 if (account != chat->account) | |
168 continue; /* very important here ! */ | |
169 group = qq_group_from_hashtable(gc, chat->components); | |
170 if (group != NULL) { | |
171 i++; | |
172 qq_send_cmd_group_get_group_info(gc, group); /* get group info and members */ | |
173 } | |
174 } | 168 } |
169 /* got one */ | |
170 chat = (PurpleChat *) node; | |
171 if (account != chat->account) /* not qq account*/ | |
172 continue; | |
173 group = qq_group_from_hashtable(gc, chat->components); | |
174 if (group == NULL) | |
175 continue; | |
175 | 176 |
176 purple_debug(PURPLE_DEBUG_INFO, "QQ", "Load %d QQ Qun configurations\n", i); | 177 if (group->id <= 0) |
178 continue; | |
179 | |
180 count++; | |
181 qq_send_room_cmd_only(gc, QQ_ROOM_CMD_GET_INFO, group->id); | |
182 } | |
183 | |
184 purple_debug(PURPLE_DEBUG_INFO, "QQ", "Load %d QQ Qun configurations\n", count); | |
177 } | 185 } |