Sun, 06 Feb 2011 05:23:22 +0000
2010.01.23 - flos <lonicerae(at)gmail.com>
* added an option to force incoming message in chat room to use a default font instead of the font in message itself
2010.01.18 - flos <lonicerae(at)gmail.com>
* added type 'UPDCLS' and 'UID' for implementing business logic layer
2010.01.13 - ccpaging <ccpaging(at)gmail.com>
* qq2009-1 patch from ccpaging
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
1 | /** |
|
15087
78879d4adf13
[gaim-migrate @ 17807]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14691
diff
changeset
|
2 | * @file group_info.c |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
3 | * |
| 15884 | 4 | * purple |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
5 | * |
| 15884 | 6 | * Purple is the legal property of its developers, whose names are too numerous |
|
15087
78879d4adf13
[gaim-migrate @ 17807]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14691
diff
changeset
|
7 | * to list here. Please refer to the COPYRIGHT file distributed with this |
|
78879d4adf13
[gaim-migrate @ 17807]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14691
diff
changeset
|
8 | * source distribution. |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
9 | * |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
10 | * This program is free software; you can redistribute it and/or modify |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
11 | * it under the terms of the GNU General Public License as published by |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
12 | * the Free Software Foundation; either version 2 of the License, or |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
13 | * (at your option) any later version. |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
14 | * |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
15 | * This program is distributed in the hope that it will be useful, |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
18 | * GNU General Public License for more details. |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
19 | * |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
20 | * You should have received a copy of the GNU General Public License |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
21 | * along with this program; if not, write to the Free Software |
|
19859
71d37b57eff2
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
18273
diff
changeset
|
22 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
23 | */ |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
24 | |
|
18273
e61c53184c52
#include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
15884
diff
changeset
|
25 | #include "internal.h" |
|
e61c53184c52
#include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
15884
diff
changeset
|
26 | |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
27 | #include "conversation.h" |
|
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
28 | #include "debug.h" |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
29 | |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
30 | #include "char_conv.h" |
|
24360
f7e260e79429
2008.10.08 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
31 | #include "group_im.h" |
|
14466
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14327
diff
changeset
|
32 | #include "group_internal.h" |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
33 | #include "group_info.h" |
|
23950
a974649cdb89
2008.08.02 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23212
diff
changeset
|
34 | #include "buddy_list.h" |
|
24340
36ceebf026a0
patch 20080922 from ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24314
diff
changeset
|
35 | #include "qq_define.h" |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
36 | #include "packet_parse.h" |
|
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
37 | #include "qq_network.h" |
|
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
38 | #include "utils.h" |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
39 | |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
40 | /* we check who needs to update member info every minutes |
|
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
41 | * this interval determines if their member info is outdated */ |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
42 | #define QQ_GROUP_CHAT_REFRESH_NICKNAME_INTERNAL 180 |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
43 | |
|
24355
c9deccad8f3f
2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24354
diff
changeset
|
44 | static gboolean check_update_interval(qq_buddy_data *member) |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
45 | { |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
46 | g_return_val_if_fail(member != NULL, FALSE); |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
47 | return (member->nickname == NULL) || |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
48 | (time(NULL) - member->last_update) > QQ_GROUP_CHAT_REFRESH_NICKNAME_INTERNAL; |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
49 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
50 | |
|
14466
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14327
diff
changeset
|
51 | /* this is done when we receive the reply to get_online_members sub_cmd |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
52 | * all member are set offline, and then only those in reply packets are online */ |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
53 | static void set_all_offline(qq_room_data *rmd) |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
54 | { |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
55 | GList *list; |
|
24355
c9deccad8f3f
2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24354
diff
changeset
|
56 | qq_buddy_data *bd; |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
57 | g_return_if_fail(rmd != NULL); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
58 | |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
59 | list = rmd->members; |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
60 | while (list != NULL) { |
|
24355
c9deccad8f3f
2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24354
diff
changeset
|
61 | bd = (qq_buddy_data *) list->data; |
|
c9deccad8f3f
2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24354
diff
changeset
|
62 | bd->status = QQ_BUDDY_CHANGE_TO_OFFLINE; |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
63 | list = list->next; |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
64 | } |
|
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
65 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
66 | |
|
14466
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14327
diff
changeset
|
67 | /* send packet to get info for each group member */ |
|
31393
04447b1f6403
2010.01.23 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
29965
diff
changeset
|
68 | gint qq_request_room_get_buddies(PurpleConnection *gc, guint32 room_id, UPDCLS update_class) |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
69 | { |
| 23190 | 70 | guint8 *raw_data; |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
71 | gint bytes, num; |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
72 | GList *list; |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
73 | qq_room_data *rmd; |
|
24355
c9deccad8f3f
2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24354
diff
changeset
|
74 | qq_buddy_data *bd; |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
75 | |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
76 | g_return_val_if_fail(room_id > 0, 0); |
|
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
77 | |
|
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
78 | rmd = qq_room_data_find(gc, room_id); |
|
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
79 | g_return_val_if_fail(rmd != NULL, 0); |
|
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
80 | |
|
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
81 | for (num = 0, list = rmd->members; list != NULL; list = list->next) { |
|
24355
c9deccad8f3f
2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24354
diff
changeset
|
82 | bd = (qq_buddy_data *) list->data; |
|
c9deccad8f3f
2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24354
diff
changeset
|
83 | if (check_update_interval(bd)) |
| 23190 | 84 | num++; |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
85 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
86 | |
| 23190 | 87 | if (num <= 0) { |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
88 | purple_debug_info("QQ", "No group member info needs to be updated now.\n"); |
|
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
89 | return 0; |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
90 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
91 | |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
92 | raw_data = g_newa(guint8, 4 * num); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
93 | |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
94 | bytes = 0; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
95 | |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
96 | list = rmd->members; |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
97 | while (list != NULL) { |
|
24355
c9deccad8f3f
2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24354
diff
changeset
|
98 | bd = (qq_buddy_data *) list->data; |
|
c9deccad8f3f
2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24354
diff
changeset
|
99 | if (check_update_interval(bd)) |
|
c9deccad8f3f
2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24354
diff
changeset
|
100 | bytes += qq_put32(raw_data + bytes, bd->uid); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
101 | list = list->next; |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
102 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
103 | |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
104 | qq_send_room_cmd_mess(gc, QQ_ROOM_CMD_GET_BUDDIES, rmd->id, raw_data, bytes, |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
105 | update_class, 0); |
|
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
106 | return num; |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
107 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
108 | |
|
24361
de1985a5045f
2008.10.08 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24360
diff
changeset
|
109 | static gchar *get_role_desc(qq_room_role role) |
|
de1985a5045f
2008.10.08 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24360
diff
changeset
|
110 | { |
|
de1985a5045f
2008.10.08 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24360
diff
changeset
|
111 | const char *role_desc; |
|
de1985a5045f
2008.10.08 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24360
diff
changeset
|
112 | switch (role) { |
|
de1985a5045f
2008.10.08 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24360
diff
changeset
|
113 | case QQ_ROOM_ROLE_NO: |
|
de1985a5045f
2008.10.08 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24360
diff
changeset
|
114 | role_desc = _("Not member"); |
|
de1985a5045f
2008.10.08 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24360
diff
changeset
|
115 | break; |
|
de1985a5045f
2008.10.08 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24360
diff
changeset
|
116 | case QQ_ROOM_ROLE_YES: |
|
de1985a5045f
2008.10.08 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24360
diff
changeset
|
117 | role_desc = _("Member"); |
|
de1985a5045f
2008.10.08 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24360
diff
changeset
|
118 | break; |
|
de1985a5045f
2008.10.08 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24360
diff
changeset
|
119 | case QQ_ROOM_ROLE_REQUESTING: |
|
de1985a5045f
2008.10.08 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24360
diff
changeset
|
120 | role_desc = _("Requesting"); |
|
de1985a5045f
2008.10.08 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24360
diff
changeset
|
121 | break; |
|
de1985a5045f
2008.10.08 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24360
diff
changeset
|
122 | case QQ_ROOM_ROLE_ADMIN: |
|
de1985a5045f
2008.10.08 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24360
diff
changeset
|
123 | role_desc = _("Admin"); |
|
de1985a5045f
2008.10.08 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24360
diff
changeset
|
124 | break; |
|
de1985a5045f
2008.10.08 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24360
diff
changeset
|
125 | default: |
|
de1985a5045f
2008.10.08 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24360
diff
changeset
|
126 | role_desc = _("Unknown"); |
|
de1985a5045f
2008.10.08 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24360
diff
changeset
|
127 | } |
|
de1985a5045f
2008.10.08 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24360
diff
changeset
|
128 | |
|
de1985a5045f
2008.10.08 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24360
diff
changeset
|
129 | return g_strdup(role_desc); |
|
de1985a5045f
2008.10.08 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24360
diff
changeset
|
130 | } |
|
de1985a5045f
2008.10.08 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24360
diff
changeset
|
131 | |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
132 | static void room_info_display(PurpleConnection *gc, qq_room_data *rmd) |
|
24341
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
133 | { |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
134 | PurpleNotifyUserInfo *room_info; |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
135 | gchar *utf8_value; |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
136 | |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
137 | g_return_if_fail(rmd != NULL && rmd->id > 0); |
|
24341
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
138 | |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
139 | room_info = purple_notify_user_info_new(); |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
140 | |
|
29965
d4d794093d2d
Eliminate the name collisions on "Title". I have a few qualms:
Paul Aurich <darkrain42@pidgin.im>
parents:
25658
diff
changeset
|
141 | /* XXX: Should this be "Topic"? */ |
|
d4d794093d2d
Eliminate the name collisions on "Title". I have a few qualms:
Paul Aurich <darkrain42@pidgin.im>
parents:
25658
diff
changeset
|
142 | purple_notify_user_info_add_pair(room_info, _("Room Title"), rmd->title_utf8); |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
143 | purple_notify_user_info_add_pair(room_info, _("Notice"), rmd->notice_utf8); |
|
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
144 | purple_notify_user_info_add_pair(room_info, _("Detail"), rmd->desc_utf8); |
|
24341
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
145 | |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
146 | purple_notify_user_info_add_section_break(room_info); |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
147 | |
|
25034
28e8c034205b
Change Qun number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents:
24363
diff
changeset
|
148 | utf8_value = g_strdup_printf(("%u"), rmd->creator_uid); |
|
24341
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
149 | purple_notify_user_info_add_pair(room_info, _("Creator"), utf8_value); |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
150 | g_free(utf8_value); |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
151 | |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
152 | utf8_value = get_role_desc(rmd->my_role); |
|
24361
de1985a5045f
2008.10.08 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24360
diff
changeset
|
153 | purple_notify_user_info_add_pair(room_info, _("About me"), utf8_value); |
|
de1985a5045f
2008.10.08 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24360
diff
changeset
|
154 | g_free(utf8_value); |
|
24341
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
155 | |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
156 | utf8_value = g_strdup_printf(("%d"), rmd->category); |
|
24341
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
157 | purple_notify_user_info_add_pair(room_info, _("Category"), utf8_value); |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
158 | g_free(utf8_value); |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
159 | |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
160 | utf8_value = g_strdup_printf(("%d"), rmd->auth_type); |
|
24341
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
161 | purple_notify_user_info_add_pair(room_info, _("Authorize"), utf8_value); |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
162 | g_free(utf8_value); |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
163 | |
|
25034
28e8c034205b
Change Qun number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents:
24363
diff
changeset
|
164 | utf8_value = g_strdup_printf(("%u"), rmd->ext_id); |
|
24341
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
165 | purple_notify_userinfo(gc, utf8_value, room_info, NULL, NULL); |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
166 | g_free(utf8_value); |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
167 | |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
168 | purple_notify_user_info_destroy(room_info); |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
169 | } |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
170 | |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
171 | void qq_process_room_cmd_get_info(guint8 *data, gint data_len, guint32 action, PurpleConnection *gc) |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
172 | { |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
173 | qq_data *qd; |
|
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
174 | qq_room_data *rmd; |
|
24355
c9deccad8f3f
2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24354
diff
changeset
|
175 | qq_buddy_data *bd; |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
176 | PurpleChat *chat; |
|
24341
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
177 | PurpleConversation *conv; |
|
14466
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14327
diff
changeset
|
178 | guint8 organization, role; |
|
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14327
diff
changeset
|
179 | guint16 unknown, max_members; |
|
31393
04447b1f6403
2010.01.23 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
29965
diff
changeset
|
180 | UID member_uid; |
|
04447b1f6403
2010.01.23 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
29965
diff
changeset
|
181 | guint32 id, ext_id; |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
182 | guint32 unknown4; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
183 | guint8 unknown1; |
| 23190 | 184 | gint bytes, num; |
|
23212
a39a33c79a3f
2008.07.12 - ccpaging <ecc_hy(at)hotmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23194
diff
changeset
|
185 | gchar *notice; |
|
24341
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
186 | gchar *topic_utf8; |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
187 | |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
188 | g_return_if_fail(data != NULL && data_len > 0); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
189 | qd = (qq_data *) gc->proto_data; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
190 | |
|
24348
1249d8b99aa9
2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24341
diff
changeset
|
191 | /* qq_show_packet("Room Info", data, data_len); */ |
|
24352
871c27553af6
Flos Lonicerae <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24351
diff
changeset
|
192 | |
| 23190 | 193 | bytes = 0; |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
194 | bytes += qq_get32(&id, data + bytes); |
|
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
195 | g_return_if_fail(id > 0); |
| 23190 | 196 | |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
197 | bytes += qq_get32(&ext_id, data + bytes); |
|
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
198 | g_return_if_fail(ext_id > 0); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
199 | |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
200 | chat = qq_room_find_or_new(gc, id, ext_id); |
|
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
201 | g_return_if_fail(chat != NULL); |
|
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
202 | rmd = qq_room_data_find(gc, id); |
|
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
203 | g_return_if_fail(rmd != NULL); |
|
14466
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14327
diff
changeset
|
204 | |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
205 | bytes += qq_get8(&(rmd->type8), data + bytes); |
| 23190 | 206 | bytes += qq_get32(&unknown4, data + bytes); /* unknown 4 bytes */ |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
207 | bytes += qq_get32(&(rmd->creator_uid), data + bytes); |
|
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
208 | bytes += qq_get8(&(rmd->auth_type), data + bytes); |
| 23190 | 209 | bytes += qq_get32(&unknown4, data + bytes); /* oldCategory */ |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
210 | bytes += qq_get16(&unknown, data + bytes); |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
211 | bytes += qq_get32(&(rmd->category), data + bytes); |
| 23190 | 212 | bytes += qq_get16(&max_members, data + bytes); |
| 213 | bytes += qq_get8(&unknown1, data + bytes); | |
|
23212
a39a33c79a3f
2008.07.12 - ccpaging <ecc_hy(at)hotmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23194
diff
changeset
|
214 | /* the following, while Eva: |
|
23194
e8c312705ee8
Sun Jun 29 22:00:12 CST 2008 csyfek@gmail.com
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23190
diff
changeset
|
215 | * 4(unk), 4(verID), 1(nameLen), nameLen(qunNameContent), 1(0x00), |
|
e8c312705ee8
Sun Jun 29 22:00:12 CST 2008 csyfek@gmail.com
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23190
diff
changeset
|
216 | * 2(qunNoticeLen), qunNoticeLen(qunNoticeContent, 1(qunDescLen), |
|
e8c312705ee8
Sun Jun 29 22:00:12 CST 2008 csyfek@gmail.com
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23190
diff
changeset
|
217 | * qunDestLen(qunDestcontent)) */ |
|
e8c312705ee8
Sun Jun 29 22:00:12 CST 2008 csyfek@gmail.com
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23190
diff
changeset
|
218 | bytes += qq_get8(&unknown1, data + bytes); |
| 25053 | 219 | purple_debug_info("QQ", "type: %u creator: %u category: %u maxmembers: %u\n", |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
220 | rmd->type8, rmd->creator_uid, rmd->category, max_members); |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
221 | |
|
24352
871c27553af6
Flos Lonicerae <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24351
diff
changeset
|
222 | if (qd->client_version >= 2007) { |
|
871c27553af6
Flos Lonicerae <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24351
diff
changeset
|
223 | /* skip 7 bytes unknow in qq2007 0x(00 00 01 00 00 00 fc)*/ |
|
871c27553af6
Flos Lonicerae <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24351
diff
changeset
|
224 | bytes += 7; |
|
871c27553af6
Flos Lonicerae <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24351
diff
changeset
|
225 | } |
|
24348
1249d8b99aa9
2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24341
diff
changeset
|
226 | /* qq_show_packet("Room Info", data + bytes, data_len - bytes); */ |
| 23190 | 227 | /* strlen + <str content> */ |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
228 | bytes += qq_get_vstr(&(rmd->title_utf8), QQ_CHARSET_DEFAULT, data + bytes); |
| 23190 | 229 | bytes += qq_get16(&unknown, data + bytes); /* 0x0000 */ |
|
24352
871c27553af6
Flos Lonicerae <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24351
diff
changeset
|
230 | bytes += qq_get_vstr(¬ice, QQ_CHARSET_DEFAULT, data + bytes); |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
231 | bytes += qq_get_vstr(&(rmd->desc_utf8), QQ_CHARSET_DEFAULT, data + bytes); |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
232 | |
|
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
233 | purple_debug_info("QQ", "room [%s] notice [%s] desc [%s] unknow 0x%04X\n", |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
234 | rmd->title_utf8, notice, rmd->desc_utf8, unknown); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
235 | |
| 23190 | 236 | num = 0; |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
237 | /* now comes the member list separated by 0x00 */ |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
238 | while (bytes < data_len) { |
| 23190 | 239 | bytes += qq_get32(&member_uid, data + bytes); |
| 240 | num++; | |
| 241 | bytes += qq_get8(&organization, data + bytes); | |
| 242 | bytes += qq_get8(&role, data + bytes); | |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
243 | |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
244 | #if 0 |
|
14466
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14327
diff
changeset
|
245 | if(organization != 0 || role != 0) { |
|
25034
28e8c034205b
Change Qun number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents:
24363
diff
changeset
|
246 | purple_debug_info("QQ", "%u, organization=%d, role=%d\n", member_uid, organization, role); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
247 | } |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
248 | #endif |
|
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
249 | |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
250 | bd = qq_room_buddy_find_or_new(gc, rmd, member_uid); |
|
24355
c9deccad8f3f
2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24354
diff
changeset
|
251 | if (bd != NULL) |
|
c9deccad8f3f
2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24354
diff
changeset
|
252 | bd->role = role; |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
253 | } |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
254 | if(bytes > data_len) { |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
255 | purple_debug_error("QQ", |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
256 | "group_cmd_get_group_info: Dangerous error! maybe protocol changed, notify me!"); |
| 23190 | 257 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
258 | |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
259 | purple_debug_info("QQ", "group \"%s\" has %d members\n", rmd->title_utf8, num); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
260 | |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
261 | if (rmd->creator_uid == qd->uid) |
|
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
262 | rmd->my_role = QQ_ROOM_ROLE_ADMIN; |
|
23212
a39a33c79a3f
2008.07.12 - ccpaging <ecc_hy(at)hotmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23194
diff
changeset
|
263 | |
|
a39a33c79a3f
2008.07.12 - ccpaging <ecc_hy(at)hotmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23194
diff
changeset
|
264 | /* filter \r\n in notice */ |
|
a39a33c79a3f
2008.07.12 - ccpaging <ecc_hy(at)hotmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23194
diff
changeset
|
265 | qq_filter_str(notice); |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
266 | rmd->notice_utf8 = strdup(notice); |
|
23212
a39a33c79a3f
2008.07.12 - ccpaging <ecc_hy(at)hotmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23194
diff
changeset
|
267 | g_free(notice); |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
268 | |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
269 | qq_room_update_chat_info(chat, rmd); |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
270 | |
|
24341
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
271 | if (action == QQ_ROOM_INFO_DISPLAY) { |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
272 | room_info_display(gc, rmd); |
|
24341
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
273 | } |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
274 | |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
275 | conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
276 | rmd->title_utf8, purple_connection_get_account(gc)); |
|
24341
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
277 | if(NULL == conv) { |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
278 | purple_debug_warning("QQ", "Conversation \"%s\" is not opened\n", rmd->title_utf8); |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
279 | return; |
|
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
280 | } |
|
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
281 | |
|
25034
28e8c034205b
Change Qun number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents:
24363
diff
changeset
|
282 | topic_utf8 = g_strdup_printf("%u %s", rmd->ext_id, rmd->notice_utf8); |
|
24341
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
283 | purple_debug_info("QQ", "Set chat topic to %s\n", topic_utf8); |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
284 | purple_conv_chat_set_topic(PURPLE_CONV_CHAT(conv), NULL, topic_utf8); |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
285 | g_free(topic_utf8); |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
286 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
287 | |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
288 | void qq_process_room_cmd_get_onlines(guint8 *data, gint len, PurpleConnection *gc) |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
289 | { |
|
31393
04447b1f6403
2010.01.23 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
29965
diff
changeset
|
290 | guint32 room_id; |
|
04447b1f6403
2010.01.23 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
29965
diff
changeset
|
291 | UID member_uid; |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
292 | guint8 unknown; |
| 23190 | 293 | gint bytes, num; |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
294 | qq_room_data *rmd; |
|
24355
c9deccad8f3f
2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24354
diff
changeset
|
295 | qq_buddy_data *bd; |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
296 | |
|
14691
efb5fd0a34b7
[gaim-migrate @ 17375]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14580
diff
changeset
|
297 | g_return_if_fail(data != NULL && len > 0); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
298 | |
| 23190 | 299 | if (len <= 3) { |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
300 | purple_debug_error("QQ", "Invalid group online member reply, discard it!\n"); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
301 | return; |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
302 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
303 | |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
304 | bytes = 0; |
|
25034
28e8c034205b
Change Qun number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents:
24363
diff
changeset
|
305 | bytes += qq_get32(&room_id, data + bytes); |
| 23190 | 306 | bytes += qq_get8(&unknown, data + bytes); /* 0x3c ?? */ |
|
25034
28e8c034205b
Change Qun number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents:
24363
diff
changeset
|
307 | g_return_if_fail(room_id > 0); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
308 | |
|
25034
28e8c034205b
Change Qun number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents:
24363
diff
changeset
|
309 | rmd = qq_room_data_find(gc, room_id); |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
310 | if (rmd == NULL) { |
|
25034
28e8c034205b
Change Qun number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents:
24363
diff
changeset
|
311 | purple_debug_error("QQ", "Can not info of room id [%u]\n", room_id); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
312 | return; |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
313 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
314 | |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
315 | /* set all offline first, then update those online */ |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
316 | set_all_offline(rmd); |
| 23190 | 317 | num = 0; |
| 318 | while (bytes < len) { | |
| 319 | bytes += qq_get32(&member_uid, data + bytes); | |
| 320 | num++; | |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
321 | bd = qq_room_buddy_find_or_new(gc, rmd, member_uid); |
|
24355
c9deccad8f3f
2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24354
diff
changeset
|
322 | if (bd != NULL) |
|
c9deccad8f3f
2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24354
diff
changeset
|
323 | bd->status = QQ_BUDDY_ONLINE_NORMAL; |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
324 | } |
| 23190 | 325 | if(bytes > len) { |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
326 | purple_debug_error("QQ", |
|
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
327 | "group_cmd_get_online_members: Dangerous error! maybe protocol changed, notify developers!"); |
| 23190 | 328 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
329 | |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
330 | purple_debug_info("QQ", "Group \"%s\" has %d online members\n", rmd->title_utf8, num); |
|
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
331 | qq_room_conv_set_onlines(gc, rmd); |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
332 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
333 | |
|
14466
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14327
diff
changeset
|
334 | /* process the reply to get_members_info packet */ |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
335 | void qq_process_room_cmd_get_buddies(guint8 *data, gint len, PurpleConnection *gc) |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
336 | { |
| 23190 | 337 | gint bytes; |
| 338 | gint num; | |
|
31393
04447b1f6403
2010.01.23 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
29965
diff
changeset
|
339 | guint32 id; |
|
04447b1f6403
2010.01.23 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
29965
diff
changeset
|
340 | UID member_uid; |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
341 | guint16 unknown; |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
342 | qq_room_data *rmd; |
|
24355
c9deccad8f3f
2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24354
diff
changeset
|
343 | qq_buddy_data *bd; |
|
23212
a39a33c79a3f
2008.07.12 - ccpaging <ecc_hy(at)hotmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23194
diff
changeset
|
344 | gchar *nick; |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
345 | |
|
14691
efb5fd0a34b7
[gaim-migrate @ 17375]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14580
diff
changeset
|
346 | g_return_if_fail(data != NULL && len > 0); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
347 | |
|
24352
871c27553af6
Flos Lonicerae <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24351
diff
changeset
|
348 | /* qq_show_packet("qq_process_room_cmd_get_buddies", data, len); */ |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
349 | |
| 23190 | 350 | bytes = 0; |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
351 | bytes += qq_get32(&id, data + bytes); |
|
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
352 | g_return_if_fail(id > 0); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
353 | |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
354 | rmd = qq_room_data_find(gc, id); |
|
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
355 | g_return_if_fail(rmd != NULL); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
356 | |
| 23190 | 357 | num = 0; |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
358 | /* now starts the member info, as get buddy list reply */ |
| 23190 | 359 | while (bytes < len) { |
| 360 | bytes += qq_get32(&member_uid, data + bytes); | |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
361 | g_return_if_fail(member_uid > 0); |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
362 | bd = qq_room_buddy_find_or_new(gc, rmd, member_uid); |
|
24355
c9deccad8f3f
2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24354
diff
changeset
|
363 | g_return_if_fail(bd != NULL); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
364 | |
| 23190 | 365 | num++; |
|
24355
c9deccad8f3f
2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24354
diff
changeset
|
366 | bytes += qq_get16(&(bd->face), data + bytes); |
|
c9deccad8f3f
2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24354
diff
changeset
|
367 | bytes += qq_get8(&(bd->age), data + bytes); |
|
c9deccad8f3f
2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24354
diff
changeset
|
368 | bytes += qq_get8(&(bd->gender), data + bytes); |
|
24352
871c27553af6
Flos Lonicerae <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24351
diff
changeset
|
369 | bytes += qq_get_vstr(&nick, QQ_CHARSET_DEFAULT, data + bytes); |
| 23190 | 370 | bytes += qq_get16(&unknown, data + bytes); |
|
24355
c9deccad8f3f
2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24354
diff
changeset
|
371 | bytes += qq_get8(&(bd->ext_flag), data + bytes); |
|
c9deccad8f3f
2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24354
diff
changeset
|
372 | bytes += qq_get8(&(bd->comm_flag), data + bytes); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
373 | |
|
23212
a39a33c79a3f
2008.07.12 - ccpaging <ecc_hy(at)hotmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23194
diff
changeset
|
374 | /* filter \r\n in nick */ |
|
a39a33c79a3f
2008.07.12 - ccpaging <ecc_hy(at)hotmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23194
diff
changeset
|
375 | qq_filter_str(nick); |
|
24355
c9deccad8f3f
2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24354
diff
changeset
|
376 | bd->nickname = g_strdup(nick); |
|
23212
a39a33c79a3f
2008.07.12 - ccpaging <ecc_hy(at)hotmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23194
diff
changeset
|
377 | g_free(nick); |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
378 | |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
379 | #if 0 |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
380 | purple_debug_info("QQ", |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
381 | "member [%09d]: ext_flag=0x%02x, comm_flag=0x%02x, nick=%s\n", |
|
24355
c9deccad8f3f
2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24354
diff
changeset
|
382 | member_uid, bd->ext_flag, bd->comm_flag, bd->nickname); |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
383 | #endif |
|
23212
a39a33c79a3f
2008.07.12 - ccpaging <ecc_hy(at)hotmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23194
diff
changeset
|
384 | |
|
24355
c9deccad8f3f
2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24354
diff
changeset
|
385 | bd->last_update = time(NULL); |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
386 | } |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
387 | if (bytes > len) { |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
388 | purple_debug_error("QQ", |
| 23190 | 389 | "group_cmd_get_members_info: Dangerous error! maybe protocol changed, notify developers!"); |
| 390 | } | |
| 25053 | 391 | purple_debug_info("QQ", "Group \"%s\" got %d member info\n", rmd->title_utf8, num); |
|
24360
f7e260e79429
2008.10.08 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
392 | |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
393 | rmd->is_got_buddies = TRUE; |
|
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24361
diff
changeset
|
394 | qq_room_conv_set_onlines(gc, rmd); |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
395 | } |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
396 |