Wed, 22 Oct 2008 14:40:04 +0000
2008.09.28 - ccpaging <ccpaging(at)gmail.com>
* The source is only for debug, not for user:
1. Implement new QQ protocol 2007/2008, include login and change status
2. Check 2005's login reply packet, get last 3 login time.
3. Server's notice and news is displayed in self buddy (The new buddy
created in buddy list).
4. The notice messages when adding/removing QQ Qun's buddy displayed
in char conversation. They are displayed as purple notify windows in the past.
5. The notice messages when adding/removing buddy displayed in self
buddy's conversation. They are displayed as purple notify windows in the past.
6. Client version can be selected in account option. Now only qq2005 is
working, other new version is only for debug.
|
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" |
|
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
31 | #include "group_find.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 | |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
44 | static gboolean check_update_interval(qq_buddy *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 */ |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
53 | static void set_all_offline(qq_group *group) |
|
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; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
56 | qq_buddy *member; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
57 | g_return_if_fail(group != NULL); |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
58 | |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
59 | list = group->members; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
60 | while (list != NULL) { |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
61 | member = (qq_buddy *) list->data; |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
62 | member->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 */ |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
68 | gint qq_request_room_get_buddies(PurpleConnection *gc, qq_group *group, gint 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; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
73 | qq_buddy *member; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
74 | |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
75 | g_return_val_if_fail(group != NULL, 0); |
| 23190 | 76 | for (num = 0, list = group->members; list != NULL; list = list->next) { |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
77 | member = (qq_buddy *) list->data; |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
78 | if (check_update_interval(member)) |
| 23190 | 79 | num++; |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
80 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
81 | |
| 23190 | 82 | if (num <= 0) { |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
83 | 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
|
84 | return 0; |
|
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 | |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
87 | raw_data = g_newa(guint8, 4 * num); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
88 | |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
89 | bytes = 0; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
90 | |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
91 | list = group->members; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
92 | while (list != NULL) { |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
93 | member = (qq_buddy *) list->data; |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
94 | if (check_update_interval(member)) |
| 23190 | 95 | bytes += qq_put32(raw_data + bytes, member->uid); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
96 | list = list->next; |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
97 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
98 | |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
99 | qq_send_room_cmd_mess(gc, QQ_ROOM_CMD_GET_BUDDIES, group->id, raw_data, bytes, |
|
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
100 | update_class, 0); |
|
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
101 | return num; |
|
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 | |
|
24341
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
104 | static void room_info_display(PurpleConnection *gc, qq_group *group) |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
105 | { |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
106 | PurpleNotifyUserInfo *room_info; |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
107 | gchar *utf8_value; |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
108 | |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
109 | g_return_if_fail(group != NULL && group->id > 0); |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
110 | |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
111 | 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
|
112 | |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
113 | purple_notify_user_info_add_pair(room_info, _("Title"), group->title_utf8); |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
114 | purple_notify_user_info_add_pair(room_info, _("Notice"), group->notice_utf8); |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
115 | purple_notify_user_info_add_pair(room_info, _("Detail"), group->desc_utf8); |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
116 | |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
117 | 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
|
118 | |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
119 | utf8_value = g_strdup_printf(("%d"), group->creator_uid); |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
120 | 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
|
121 | g_free(utf8_value); |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
122 | |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
123 | purple_notify_user_info_add_pair(room_info, _("About me"), group->my_role_desc); |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
124 | |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
125 | utf8_value = g_strdup_printf(("%d"), group->category); |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
126 | 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
|
127 | g_free(utf8_value); |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
128 | |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
129 | utf8_value = g_strdup_printf(("%d"), group->auth_type); |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
130 | 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
|
131 | g_free(utf8_value); |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
132 | |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
133 | utf8_value = g_strdup_printf(("%d"), group->ext_id); |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
134 | 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
|
135 | g_free(utf8_value); |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
136 | |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
137 | 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
|
138 | } |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
139 | |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
140 | 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
|
141 | { |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
142 | qq_group *group; |
|
14120
c7e54fa6147e
[gaim-migrate @ 16673]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14083
diff
changeset
|
143 | qq_buddy *member; |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
144 | qq_data *qd; |
|
24341
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
145 | PurpleConversation *conv; |
|
14466
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14327
diff
changeset
|
146 | guint8 organization, role; |
|
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14327
diff
changeset
|
147 | guint16 unknown, max_members; |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
148 | guint32 member_uid, id, ext_id; |
|
14466
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14327
diff
changeset
|
149 | GSList *pending_id; |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
150 | guint32 unknown4; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
151 | guint8 unknown1; |
| 23190 | 152 | gint bytes, num; |
|
23212
a39a33c79a3f
2008.07.12 - ccpaging <ecc_hy(at)hotmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23194
diff
changeset
|
153 | gchar *notice; |
|
24341
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
154 | gchar *topic_utf8; |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
155 | |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
156 | g_return_if_fail(data != NULL && data_len > 0); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
157 | qd = (qq_data *) gc->proto_data; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
158 | |
| 23190 | 159 | bytes = 0; |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
160 | bytes += qq_get32(&id, data + bytes); |
|
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
161 | g_return_if_fail(id > 0); |
| 23190 | 162 | |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
163 | 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
|
164 | g_return_if_fail(ext_id > 0); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
165 | |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
166 | pending_id = qq_get_pending_id(qd->adding_groups_from_server, id); |
|
14466
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14327
diff
changeset
|
167 | if (pending_id != NULL) { |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
168 | qq_set_pending_id(&qd->adding_groups_from_server, id, FALSE); |
|
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
169 | qq_group_create_internal_record(gc, id, ext_id, NULL); |
|
14466
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14327
diff
changeset
|
170 | } |
|
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14327
diff
changeset
|
171 | |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
172 | group = qq_room_search_id(gc, id); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
173 | g_return_if_fail(group != NULL); |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
174 | |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
175 | bytes += qq_get8(&(group->type8), data + bytes); |
| 23190 | 176 | bytes += qq_get32(&unknown4, data + bytes); /* unknown 4 bytes */ |
| 177 | bytes += qq_get32(&(group->creator_uid), data + bytes); | |
| 178 | bytes += qq_get8(&(group->auth_type), data + bytes); | |
| 179 | bytes += qq_get32(&unknown4, data + bytes); /* oldCategory */ | |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
180 | bytes += qq_get16(&unknown, data + bytes); |
|
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
181 | bytes += qq_get32(&(group->category), data + bytes); |
| 23190 | 182 | bytes += qq_get16(&max_members, data + bytes); |
| 183 | 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
|
184 | /* 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
|
185 | * 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
|
186 | * 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
|
187 | * qunDestLen(qunDestcontent)) */ |
|
e8c312705ee8
Sun Jun 29 22:00:12 CST 2008 csyfek@gmail.com
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23190
diff
changeset
|
188 | bytes += qq_get8(&unknown1, data + bytes); |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
189 | purple_debug_info("QQ", "type=%u creatorid=%u category=%u maxmembers=%u\n", |
|
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
190 | group->type8, group->creator_uid, group->category, max_members); |
|
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
191 | |
| 23190 | 192 | /* strlen + <str content> */ |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
193 | bytes += convert_as_pascal_string(data + bytes, &(group->title_utf8), QQ_CHARSET_DEFAULT); |
| 23190 | 194 | bytes += qq_get16(&unknown, data + bytes); /* 0x0000 */ |
|
23212
a39a33c79a3f
2008.07.12 - ccpaging <ecc_hy(at)hotmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23194
diff
changeset
|
195 | bytes += convert_as_pascal_string(data + bytes, ¬ice, QQ_CHARSET_DEFAULT); |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
196 | bytes += convert_as_pascal_string(data + bytes, &(group->desc_utf8), QQ_CHARSET_DEFAULT); |
|
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
197 | |
|
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
198 | purple_debug_info("QQ", "room [%s] notice [%s] desc [%s] unknow 0x%04X\n", |
|
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
199 | group->title_utf8, notice, group->desc_utf8, unknown); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
200 | |
| 23190 | 201 | num = 0; |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
202 | /* 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
|
203 | while (bytes < data_len) { |
| 23190 | 204 | bytes += qq_get32(&member_uid, data + bytes); |
| 205 | num++; | |
| 206 | bytes += qq_get8(&organization, data + bytes); | |
| 207 | bytes += qq_get8(&role, data + bytes); | |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
208 | |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
209 | #if 0 |
|
14466
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14327
diff
changeset
|
210 | if(organization != 0 || role != 0) { |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
211 | purple_debug_info("QQ_GRP", "%d, organization=%d, role=%d\n", member_uid, organization, role); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
212 | } |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
213 | #endif |
|
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
214 | |
|
14120
c7e54fa6147e
[gaim-migrate @ 16673]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14083
diff
changeset
|
215 | member = qq_group_find_or_add_member(gc, group, member_uid); |
|
14466
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14327
diff
changeset
|
216 | if (member != NULL) |
|
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14327
diff
changeset
|
217 | member->role = role; |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
218 | } |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
219 | if(bytes > data_len) { |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
220 | purple_debug_error("QQ", |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
221 | "group_cmd_get_group_info: Dangerous error! maybe protocol changed, notify me!"); |
| 23190 | 222 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
223 | |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
224 | purple_debug_info("QQ", "group \"%s\" has %d members\n", group->title_utf8, num); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
225 | |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
226 | if (group->creator_uid == qd->uid) |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
227 | group->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
|
228 | |
|
a39a33c79a3f
2008.07.12 - ccpaging <ecc_hy(at)hotmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23194
diff
changeset
|
229 | /* filter \r\n in notice */ |
|
a39a33c79a3f
2008.07.12 - ccpaging <ecc_hy(at)hotmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23194
diff
changeset
|
230 | qq_filter_str(notice); |
|
a39a33c79a3f
2008.07.12 - ccpaging <ecc_hy(at)hotmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23194
diff
changeset
|
231 | group->notice_utf8 = strdup(notice); |
|
a39a33c79a3f
2008.07.12 - ccpaging <ecc_hy(at)hotmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23194
diff
changeset
|
232 | g_free(notice); |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
233 | |
|
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
234 | qq_group_refresh(gc, group); |
|
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
235 | |
|
24341
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
236 | if (action == QQ_ROOM_INFO_DISPLAY) { |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
237 | room_info_display(gc, group); |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
238 | } |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
239 | |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
240 | conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
241 | group->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
|
242 | if(NULL == conv) { |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
243 | purple_debug_warning("QQ", |
|
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
244 | "Conversation \"%s\" is not open, do not set topic\n", group->title_utf8); |
|
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
245 | return; |
|
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
246 | } |
|
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
247 | |
|
24341
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
248 | topic_utf8 = g_strdup_printf("%d %s", group->ext_id, group->notice_utf8); |
|
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
249 | 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
|
250 | 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
|
251 | g_free(topic_utf8); |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
252 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
253 | |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
254 | 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
|
255 | { |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
256 | guint32 id, member_uid; |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
257 | guint8 unknown; |
| 23190 | 258 | gint bytes, num; |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
259 | qq_group *group; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
260 | qq_buddy *member; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
261 | |
|
14691
efb5fd0a34b7
[gaim-migrate @ 17375]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14580
diff
changeset
|
262 | g_return_if_fail(data != NULL && len > 0); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
263 | |
| 23190 | 264 | if (len <= 3) { |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
265 | 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
|
266 | return; |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
267 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
268 | |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
269 | bytes = 0; |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
270 | bytes += qq_get32(&id, data + bytes); |
| 23190 | 271 | bytes += qq_get8(&unknown, data + bytes); /* 0x3c ?? */ |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
272 | g_return_if_fail(id > 0); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
273 | |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
274 | group = qq_room_search_id(gc, id); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
275 | if (group == NULL) { |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
276 | purple_debug_error("QQ", "We have no group info for internal id [%d]\n", id); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
277 | return; |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
278 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
279 | |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
280 | /* set all offline first, then update those online */ |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
281 | set_all_offline(group); |
| 23190 | 282 | num = 0; |
| 283 | while (bytes < len) { | |
| 284 | bytes += qq_get32(&member_uid, data + bytes); | |
| 285 | num++; | |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
286 | member = qq_group_find_or_add_member(gc, group, member_uid); |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
287 | if (member != NULL) |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
288 | member->status = QQ_BUDDY_ONLINE_NORMAL; |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
289 | } |
| 23190 | 290 | if(bytes > len) { |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
291 | purple_debug_error("QQ", |
|
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
292 | "group_cmd_get_online_members: Dangerous error! maybe protocol changed, notify developers!"); |
| 23190 | 293 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
294 | |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
295 | purple_debug_info("QQ", "Group \"%s\" has %d online members\n", group->title_utf8, num); |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
296 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
297 | |
|
14466
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14327
diff
changeset
|
298 | /* process the reply to get_members_info packet */ |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
299 | 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
|
300 | { |
| 23190 | 301 | gint bytes; |
| 302 | gint num; | |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
303 | guint32 id, member_uid; |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
304 | guint16 unknown; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
305 | qq_group *group; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
306 | qq_buddy *member; |
|
23212
a39a33c79a3f
2008.07.12 - ccpaging <ecc_hy(at)hotmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23194
diff
changeset
|
307 | gchar *nick; |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
308 | |
|
14691
efb5fd0a34b7
[gaim-migrate @ 17375]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14580
diff
changeset
|
309 | g_return_if_fail(data != NULL && len > 0); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
310 | |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
311 | #if 0 |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
312 | 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
|
313 | #endif |
|
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
314 | |
| 23190 | 315 | bytes = 0; |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
316 | bytes += qq_get32(&id, data + bytes); |
|
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
317 | g_return_if_fail(id > 0); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
318 | |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
319 | group = qq_room_search_id(gc, id); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
320 | g_return_if_fail(group != NULL); |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
321 | |
| 23190 | 322 | num = 0; |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
323 | /* now starts the member info, as get buddy list reply */ |
| 23190 | 324 | while (bytes < len) { |
| 325 | bytes += qq_get32(&member_uid, data + bytes); | |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
326 | g_return_if_fail(member_uid > 0); |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
327 | member = qq_group_find_member_by_uid(group, member_uid); |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
328 | g_return_if_fail(member != NULL); |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
329 | |
| 23190 | 330 | num++; |
| 331 | bytes += qq_get16(&(member->face), data + bytes); | |
| 332 | bytes += qq_get8(&(member->age), data + bytes); | |
| 333 | bytes += qq_get8(&(member->gender), data + bytes); | |
|
23212
a39a33c79a3f
2008.07.12 - ccpaging <ecc_hy(at)hotmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23194
diff
changeset
|
334 | bytes += convert_as_pascal_string(data + bytes, &nick, QQ_CHARSET_DEFAULT); |
| 23190 | 335 | bytes += qq_get16(&unknown, data + bytes); |
|
23950
a974649cdb89
2008.08.02 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23212
diff
changeset
|
336 | bytes += qq_get8(&(member->ext_flag), data + bytes); |
| 23190 | 337 | bytes += qq_get8(&(member->comm_flag), data + bytes); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
338 | |
|
23212
a39a33c79a3f
2008.07.12 - ccpaging <ecc_hy(at)hotmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23194
diff
changeset
|
339 | /* filter \r\n in nick */ |
|
a39a33c79a3f
2008.07.12 - ccpaging <ecc_hy(at)hotmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23194
diff
changeset
|
340 | qq_filter_str(nick); |
|
a39a33c79a3f
2008.07.12 - ccpaging <ecc_hy(at)hotmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23194
diff
changeset
|
341 | member->nickname = g_strdup(nick); |
|
a39a33c79a3f
2008.07.12 - ccpaging <ecc_hy(at)hotmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23194
diff
changeset
|
342 | g_free(nick); |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
343 | |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
344 | #if 0 |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
345 | purple_debug_info("QQ", |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
346 | "member [%09d]: ext_flag=0x%02x, comm_flag=0x%02x, nick=%s\n", |
|
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
347 | member_uid, member->ext_flag, member->comm_flag, member->nickname); |
|
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
348 | #endif |
|
23212
a39a33c79a3f
2008.07.12 - ccpaging <ecc_hy(at)hotmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23194
diff
changeset
|
349 | |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
350 | member->last_update = time(NULL); |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
351 | } |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
352 | if (bytes > len) { |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
353 | purple_debug_error("QQ", |
| 23190 | 354 | "group_cmd_get_members_info: Dangerous error! maybe protocol changed, notify developers!"); |
| 355 | } | |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
356 | purple_debug_info("QQ", "Group \"%s\" obtained %d member info\n", group->title_utf8, num); |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
13932
diff
changeset
|
357 | } |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23950
diff
changeset
|
358 |