Tue, 11 Nov 2008 07:26:48 +0000
Move new functon qq_filter_str in
|
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_opt.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:
19097
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:
16490
diff
changeset
|
25 | #include "qq.h" |
|
e61c53184c52
#include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16490
diff
changeset
|
26 | |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
27 | #include "debug.h" |
|
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
28 | #include "notify.h" |
|
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
29 | #include "request.h" |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
30 | |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
31 | #include "buddy_info.h" |
|
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
32 | #include "char_conv.h" |
|
14466
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14304
diff
changeset
|
33 | #include "group_internal.h" |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
34 | #include "group_info.h" |
|
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
35 | #include "group_join.h" |
|
24341
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
36 | #include "group_im.h" |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
37 | #include "group_opt.h" |
|
24340
36ceebf026a0
patch 20080922 from ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24337
diff
changeset
|
38 | #include "qq_define.h" |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
39 | #include "packet_parse.h" |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23190
diff
changeset
|
40 | #include "qq_network.h" |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
41 | #include "qq_process.h" |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
42 | #include "utils.h" |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
43 | |
|
22058
aab79eb566a1
Yes, we really can use qsort(3) rather than reimplementing it. I've tested
Will Thompson <resiak@pidgin.im>
parents:
21653
diff
changeset
|
44 | static int _compare_guint32(const void *a, |
|
aab79eb566a1
Yes, we really can use qsort(3) rather than reimplementing it. I've tested
Will Thompson <resiak@pidgin.im>
parents:
21653
diff
changeset
|
45 | const void *b) |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
46 | { |
|
22058
aab79eb566a1
Yes, we really can use qsort(3) rather than reimplementing it. I've tested
Will Thompson <resiak@pidgin.im>
parents:
21653
diff
changeset
|
47 | const guint32 *x = a; |
|
aab79eb566a1
Yes, we really can use qsort(3) rather than reimplementing it. I've tested
Will Thompson <resiak@pidgin.im>
parents:
21653
diff
changeset
|
48 | const guint32 *y = b; |
|
aab79eb566a1
Yes, we really can use qsort(3) rather than reimplementing it. I've tested
Will Thompson <resiak@pidgin.im>
parents:
21653
diff
changeset
|
49 | return (*x - *y); |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
50 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
51 | |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
52 | static void _sort(guint32 *list) |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
53 | { |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
54 | gint i; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
55 | for (i = 0; list[i] < 0xffffffff; i++) {; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
56 | } |
|
22058
aab79eb566a1
Yes, we really can use qsort(3) rather than reimplementing it. I've tested
Will Thompson <resiak@pidgin.im>
parents:
21653
diff
changeset
|
57 | qsort (list, i, sizeof (guint32), _compare_guint32); |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
58 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
59 | |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
60 | static void _qq_group_member_opt(PurpleConnection *gc, qq_room_data *rmd, gint operation, guint32 *members) |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
61 | { |
| 23190 | 62 | guint8 *data; |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
63 | gint i, count, data_len; |
| 23190 | 64 | gint bytes; |
|
14691
efb5fd0a34b7
[gaim-migrate @ 17375]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14466
diff
changeset
|
65 | g_return_if_fail(members != NULL); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
66 | |
| 23190 | 67 | for (count = 0; members[count] != 0xffffffff; count++) {; |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
68 | } |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
69 | data_len = 6 + count * 4; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
70 | data = g_newa(guint8, data_len); |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
71 | |
| 23190 | 72 | bytes = 0; |
| 73 | bytes += qq_put8(data + bytes, operation); | |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
74 | for (i = 0; i < count; i++) |
| 23190 | 75 | bytes += qq_put32(data + bytes, members[i]); |
| 76 | ||
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
77 | qq_send_room_cmd(gc, QQ_ROOM_CMD_MEMBER_OPT, rmd->id, data, bytes); |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
78 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
79 | |
|
24365
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
80 | static void room_req_cancel_cb(qq_room_req *add_req) |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
81 | { |
|
24365
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
82 | if (add_req != NULL) |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
83 | g_free(add_req); |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
84 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
85 | |
|
24367
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
86 | static void member_join_authorize_cb(gpointer data) |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
87 | { |
|
24367
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
88 | qq_room_req *add_req = (qq_room_req *)data; |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
89 | qq_room_data *rmd; |
|
24367
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
90 | g_return_if_fail(add_req != NULL && add_req->gc != NULL); |
|
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
91 | g_return_if_fail(add_req->id > 0 && add_req->member > 0); |
|
24365
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
92 | rmd = qq_room_data_find(add_req->gc, add_req->id); |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
93 | g_return_if_fail(rmd != NULL); |
|
24365
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
94 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
95 | qq_send_cmd_group_auth(add_req->gc, rmd, QQ_ROOM_AUTH_REQUEST_APPROVE, add_req->member, ""); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
96 | qq_room_buddy_find_or_new(add_req->gc, rmd, add_req->member); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
97 | g_free(add_req); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
98 | } |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
99 | |
|
24367
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
100 | static void member_join_deny_reason_cb(qq_room_req *add_req, gchar *msg_utf8) |
|
24365
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
101 | { |
|
24367
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
102 | qq_room_data *rmd; |
|
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
103 | g_return_if_fail(add_req != NULL && add_req->gc != NULL); |
|
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
104 | g_return_if_fail(add_req->id > 0 && add_req->member > 0); |
|
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
105 | rmd = qq_room_data_find(add_req->gc, add_req->id); |
|
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
106 | g_return_if_fail(rmd != NULL); |
|
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
107 | qq_send_cmd_group_auth(add_req->gc, rmd, QQ_ROOM_AUTH_REQUEST_REJECT, add_req->member, msg_utf8); |
|
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
108 | g_free(add_req); |
|
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
109 | } |
|
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
110 | |
|
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
111 | static void member_join_deny_noreason_cb(qq_room_req *add_req, gchar *msg_utf8) |
|
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
112 | { |
|
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
113 | member_join_deny_reason_cb(add_req, NULL); |
|
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
114 | } |
|
24365
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
115 | |
|
24367
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
116 | static void member_join_deny_cb(gpointer data) |
|
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
117 | { |
|
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
118 | qq_room_req *add_req = (qq_room_req *)data; |
|
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
119 | gchar *who; |
|
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
120 | g_return_if_fail(add_req != NULL && add_req->gc != NULL); |
|
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
121 | g_return_if_fail(add_req->id > 0 && add_req->member > 0); |
|
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
122 | |
|
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
123 | who = uid_to_purple_name(add_req->member); |
|
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
124 | purple_request_input(add_req->gc, NULL, _("Authorization denied message:"), |
|
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
125 | NULL, _("Sorry, you are not our style ..."), TRUE, FALSE, NULL, |
|
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
126 | _("OK"), G_CALLBACK(member_join_deny_reason_cb), |
|
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
127 | _("Cancel"), G_CALLBACK(member_join_deny_noreason_cb), |
|
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
128 | purple_connection_get_account(add_req->gc), who, NULL, |
|
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
129 | add_req); |
|
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
130 | g_free(who); |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
131 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
132 | |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
133 | void qq_group_modify_members(PurpleConnection *gc, qq_room_data *rmd, guint32 *new_members) |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
134 | { |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
135 | guint32 *old_members, *del_members, *add_members; |
|
24355
c9deccad8f3f
2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24341
diff
changeset
|
136 | qq_buddy_data *bd; |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
137 | qq_data *qd; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
138 | gint i = 0, old = 0, new = 0, del = 0, add = 0; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
139 | GList *list; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
140 | |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
141 | g_return_if_fail(rmd != NULL); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
142 | qd = (qq_data *) gc->proto_data; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
143 | if (new_members[0] == 0xffffffff) |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
144 | return; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
145 | |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
146 | old_members = g_newa(guint32, QQ_QUN_MEMBER_MAX); |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
147 | del_members = g_newa(guint32, QQ_QUN_MEMBER_MAX); |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
148 | add_members = g_newa(guint32, QQ_QUN_MEMBER_MAX); |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
149 | |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
150 | /* construct the old member list */ |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
151 | list = rmd->members; |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
152 | while (list != NULL) { |
|
24355
c9deccad8f3f
2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24341
diff
changeset
|
153 | bd = (qq_buddy_data *) list->data; |
|
c9deccad8f3f
2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24341
diff
changeset
|
154 | if (bd != NULL) |
|
c9deccad8f3f
2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24341
diff
changeset
|
155 | old_members[i++] = bd->uid; |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
156 | list = list->next; |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
157 | } |
|
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
158 | old_members[i] = 0xffffffff; /* this is the end */ |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
159 | |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
160 | /* sort to speed up making del_members and add_members list */ |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
161 | _sort(old_members); |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
162 | _sort(new_members); |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
163 | |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
164 | for (old = 0, new = 0; old_members[old] < 0xffffffff || new_members[new] < 0xffffffff;) { |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
165 | if (old_members[old] > new_members[new]) { |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
166 | add_members[add++] = new_members[new++]; |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
167 | } else if (old_members[old] < new_members[new]) { |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
168 | del_members[del++] = old_members[old++]; |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
169 | } else { |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
170 | if (old_members[old] < 0xffffffff) |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
171 | old++; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
172 | if (new_members[new] < 0xffffffff) |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
173 | new++; |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
174 | } |
|
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
175 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
176 | del_members[del] = add_members[add] = 0xffffffff; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
177 | |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
178 | for (i = 0; i < del; i++) |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
179 | qq_room_buddy_remove(rmd, del_members[i]); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
180 | for (i = 0; i < add; i++) |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
181 | qq_room_buddy_find_or_new(gc, rmd, add_members[i]); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
182 | |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
183 | if (del > 0) |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
184 | _qq_group_member_opt(gc, rmd, QQ_ROOM_MEMBER_DEL, del_members); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
185 | if (add > 0) |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
186 | _qq_group_member_opt(gc, rmd, QQ_ROOM_MEMBER_ADD, add_members); |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
187 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
188 | |
| 23190 | 189 | void qq_group_process_modify_members_reply(guint8 *data, gint len, PurpleConnection *gc) |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
190 | { |
| 23190 | 191 | gint bytes; |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23190
diff
changeset
|
192 | guint32 id; |
|
24341
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
193 | time_t now = time(NULL); |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
194 | qq_room_data *rmd; |
|
14691
efb5fd0a34b7
[gaim-migrate @ 17375]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14466
diff
changeset
|
195 | g_return_if_fail(data != NULL); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
196 | |
| 23190 | 197 | bytes = 0; |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23190
diff
changeset
|
198 | bytes += qq_get32(&id, data + bytes); |
|
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23190
diff
changeset
|
199 | g_return_if_fail(id > 0); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
200 | |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
201 | /* we should have its info locally */ |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
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:
24355
diff
changeset
|
203 | g_return_if_fail(rmd != NULL); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
204 | |
|
25045
6cd15ba3135f
Change Qun number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents:
25023
diff
changeset
|
205 | purple_debug_info("QQ", "Succeed in modify members for room %u\n", rmd->ext_id); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
206 | |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
207 | qq_room_got_chat_in(gc, id, 0, _("Successed changing Qun member"), now); |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
208 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
209 | |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
210 | void qq_room_change_info(PurpleConnection *gc, qq_room_data *rmd) |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
211 | { |
|
24370
982f5559baae
2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24367
diff
changeset
|
212 | guint8 data[MAX_PACKET_SIZE - 16]; |
| 23190 | 213 | gint bytes; |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
214 | |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
215 | g_return_if_fail(rmd != NULL); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
216 | |
| 23190 | 217 | bytes = 0; |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
218 | /* 005-005 */ |
| 23190 | 219 | bytes += qq_put8(data + bytes, 0x01); |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
220 | /* 006-006 */ |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
221 | bytes += qq_put8(data + bytes, rmd->auth_type); |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
222 | /* 007-008 */ |
| 23190 | 223 | bytes += qq_put16(data + bytes, 0x0000); |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
224 | /* 009-010 */ |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
225 | bytes += qq_put16(data + bytes, rmd->category); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
226 | |
|
24370
982f5559baae
2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24367
diff
changeset
|
227 | bytes += qq_put_vstr(data + bytes, rmd->title_utf8, QQ_CHARSET_DEFAULT); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
228 | |
| 23190 | 229 | bytes += qq_put16(data + bytes, 0x0000); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
230 | |
|
24370
982f5559baae
2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24367
diff
changeset
|
231 | bytes += qq_put_vstr(data + bytes, rmd->notice_utf8, QQ_CHARSET_DEFAULT); |
|
982f5559baae
2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24367
diff
changeset
|
232 | bytes += qq_put_vstr(data + bytes, rmd->desc_utf8, QQ_CHARSET_DEFAULT); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
233 | |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
234 | qq_send_room_cmd(gc, QQ_ROOM_CMD_CHANGE_INFO, rmd->id, data, bytes); |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
235 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
236 | |
| 23190 | 237 | void qq_group_process_modify_info_reply(guint8 *data, gint len, PurpleConnection *gc) |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
238 | { |
| 23190 | 239 | gint bytes; |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23190
diff
changeset
|
240 | guint32 id; |
|
24341
02abffea97fe
2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24340
diff
changeset
|
241 | time_t now = time(NULL); |
|
24355
c9deccad8f3f
2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24341
diff
changeset
|
242 | |
|
14691
efb5fd0a34b7
[gaim-migrate @ 17375]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14466
diff
changeset
|
243 | g_return_if_fail(data != NULL); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
244 | |
| 23190 | 245 | bytes = 0; |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23190
diff
changeset
|
246 | bytes += qq_get32(&id, data + bytes); |
|
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23190
diff
changeset
|
247 | g_return_if_fail(id > 0); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
248 | |
|
25045
6cd15ba3135f
Change Qun number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents:
25023
diff
changeset
|
249 | purple_debug_info("QQ", "Succeed modify room info of %u\n", id); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
250 | |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
251 | qq_room_got_chat_in(gc, id, 0, _("Successed changing Qun information"), now); |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
252 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
253 | |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
254 | /* we create a very simple room first, and then let the user to modify */ |
|
24365
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
255 | void qq_create_room(PurpleConnection *gc, const gchar *name) |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
256 | { |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23190
diff
changeset
|
257 | guint8 *data; |
| 23190 | 258 | gint data_len; |
| 259 | gint bytes; | |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
260 | qq_data *qd; |
|
14691
efb5fd0a34b7
[gaim-migrate @ 17375]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14466
diff
changeset
|
261 | g_return_if_fail(name != NULL); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
262 | |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
263 | qd = (qq_data *) gc->proto_data; |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23190
diff
changeset
|
264 | |
|
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23190
diff
changeset
|
265 | data_len = 64 + strlen(name); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
266 | data = g_newa(guint8, data_len); |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
267 | |
| 23190 | 268 | bytes = 0; |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
269 | /* we create the simpleset group, only group name is given */ |
|
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
270 | /* 001 */ |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
271 | bytes += qq_put8(data + bytes, QQ_ROOM_TYPE_PERMANENT); |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
272 | /* 002 */ |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
273 | bytes += qq_put8(data + bytes, QQ_ROOM_AUTH_TYPE_NEED_AUTH); |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
274 | /* 003-004 */ |
| 23190 | 275 | bytes += qq_put16(data + bytes, 0x0000); |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
276 | /* 005-006 */ |
| 23190 | 277 | bytes += qq_put16(data + bytes, 0x0003); |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
278 | /* 007 */ |
| 23190 | 279 | bytes += qq_put8(data + bytes, strlen(name)); |
| 280 | bytes += qq_putdata(data + bytes, (guint8 *) name, strlen(name)); | |
| 281 | bytes += qq_put16(data + bytes, 0x0000); | |
| 282 | bytes += qq_put8(data + bytes, 0x00); /* no group notice */ | |
| 283 | bytes += qq_put8(data + bytes, 0x00); /* no group desc */ | |
| 284 | bytes += qq_put32(data + bytes, qd->uid); /* I am member of coz */ | |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
285 | |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23190
diff
changeset
|
286 | if (bytes > data_len) { |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
287 | purple_debug_error("QQ", |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23190
diff
changeset
|
288 | "Overflow in qq_room_create, max %d bytes, now %d bytes\n", |
| 23190 | 289 | data_len, bytes); |
| 290 | return; | |
| 291 | } | |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23190
diff
changeset
|
292 | qq_send_room_cmd_noid(gc, QQ_ROOM_CMD_CREATE, data, bytes); |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
293 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
294 | |
|
24365
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
295 | static void room_create_cb(qq_room_req *add_req) |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
296 | { |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
297 | qq_room_data *rmd; |
|
24337
09fc304dae73
2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24314
diff
changeset
|
298 | g_return_if_fail(add_req != NULL); |
|
24365
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
299 | if (add_req->gc == NULL || add_req->id == 0) { |
|
24337
09fc304dae73
2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24314
diff
changeset
|
300 | g_free(add_req); |
|
09fc304dae73
2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24314
diff
changeset
|
301 | return; |
|
09fc304dae73
2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24314
diff
changeset
|
302 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
303 | |
|
24365
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
304 | rmd = qq_room_data_find(add_req->gc, add_req->id); |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
305 | if (rmd == NULL) { |
|
24337
09fc304dae73
2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24314
diff
changeset
|
306 | g_free(add_req); |
|
09fc304dae73
2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24314
diff
changeset
|
307 | return; |
|
09fc304dae73
2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24314
diff
changeset
|
308 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
309 | |
|
14466
4fcd9fdc8060
[gaim-migrate @ 17112]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14304
diff
changeset
|
310 | /* TODO insert UI code here */ |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
311 | /* qq_group_detail_window_show(g->gc, rmd); */ |
|
24337
09fc304dae73
2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24314
diff
changeset
|
312 | g_free(add_req); |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
313 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
314 | |
| 23190 | 315 | void qq_group_process_create_group_reply(guint8 *data, gint len, PurpleConnection *gc) |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
316 | { |
| 23190 | 317 | gint bytes; |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23190
diff
changeset
|
318 | guint32 id, ext_id; |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
319 | qq_room_data *rmd; |
|
24365
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
320 | qq_room_req *add_req; |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
321 | qq_data *qd; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
322 | |
|
14691
efb5fd0a34b7
[gaim-migrate @ 17375]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14466
diff
changeset
|
323 | g_return_if_fail(data != NULL); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
324 | g_return_if_fail(gc->proto_data != NULL); |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
325 | qd = (qq_data *) gc->proto_data; |
|
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
326 | |
| 23190 | 327 | bytes = 0; |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23190
diff
changeset
|
328 | bytes += qq_get32(&id, data + bytes); |
|
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23190
diff
changeset
|
329 | bytes += qq_get32(&ext_id, data + bytes); |
|
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23190
diff
changeset
|
330 | g_return_if_fail(id > 0 && ext_id); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
331 | |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
332 | qq_room_find_or_new(gc, id, ext_id); |
|
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
333 | rmd = qq_room_data_find(gc, id); |
|
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
334 | g_return_if_fail(rmd != NULL); |
|
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
335 | |
|
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
336 | rmd->my_role = QQ_ROOM_ROLE_ADMIN; |
|
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
337 | rmd->creator_uid = qd->uid; |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
338 | |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23190
diff
changeset
|
339 | qq_send_room_cmd_only(gc, QQ_ROOM_CMD_ACTIVATE, id); |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
340 | qq_update_room(gc, 0, rmd->id); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
341 | |
|
25045
6cd15ba3135f
Change Qun number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents:
25023
diff
changeset
|
342 | purple_debug_info("QQ", "Succeed in create Qun, ext id %u\n", rmd->ext_id); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
343 | |
|
24365
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
344 | add_req = g_new0(qq_room_req, 1); |
|
24337
09fc304dae73
2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24314
diff
changeset
|
345 | add_req->gc = gc; |
|
24365
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
346 | add_req->id = id; |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
347 | |
|
21653
621c47778132
merge of '73ae9aeda3c58fbf8437421da68d19d06f93e686'
Evan Schoenberg <evands@pidgin.im>
parents:
21233
diff
changeset
|
348 | purple_request_action(gc, _("QQ Qun Operation"), |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
349 | _("You have successfully created a Qun"), |
|
24337
09fc304dae73
2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24314
diff
changeset
|
350 | _("Would you like to set up the detail information now?"), |
|
16490
68c22924d66b
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents:
15884
diff
changeset
|
351 | 1, |
|
68c22924d66b
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents:
15884
diff
changeset
|
352 | purple_connection_get_account(gc), NULL, NULL, |
|
24337
09fc304dae73
2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24314
diff
changeset
|
353 | add_req, 2, |
|
24365
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
354 | _("Setup"), G_CALLBACK(room_create_cb), |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
355 | _("Cancel"), G_CALLBACK(room_req_cancel_cb)); |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
356 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
357 | |
| 23190 | 358 | void qq_group_process_activate_group_reply(guint8 *data, gint len, PurpleConnection *gc) |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
359 | { |
| 23190 | 360 | gint bytes; |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23190
diff
changeset
|
361 | guint32 id; |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
362 | qq_room_data *rmd; |
|
14691
efb5fd0a34b7
[gaim-migrate @ 17375]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14466
diff
changeset
|
363 | g_return_if_fail(data != NULL); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
364 | |
| 23190 | 365 | bytes = 0; |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23190
diff
changeset
|
366 | bytes += qq_get32(&id, data + bytes); |
|
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23190
diff
changeset
|
367 | g_return_if_fail(id > 0); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
368 | |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
369 | /* we should have its info locally */ |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
370 | rmd = qq_room_data_find(gc, id); |
|
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
371 | g_return_if_fail(rmd != NULL); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
372 | |
|
25045
6cd15ba3135f
Change Qun number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents:
25023
diff
changeset
|
373 | purple_debug_info("QQ", "Succeed in activate Qun %u\n", rmd->ext_id); |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
374 | } |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
375 | |
| 15884 | 376 | void qq_group_manage_group(PurpleConnection *gc, GHashTable *data) |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
377 | { |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23190
diff
changeset
|
378 | gchar *id_ptr; |
|
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23190
diff
changeset
|
379 | guint32 id; |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
380 | qq_room_data *rmd; |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
381 | |
|
14691
efb5fd0a34b7
[gaim-migrate @ 17375]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14466
diff
changeset
|
382 | g_return_if_fail(data != NULL); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
383 | |
|
24314
587e97c2b707
merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents:
24313
diff
changeset
|
384 | id_ptr = g_hash_table_lookup(data, QQ_ROOM_KEY_INTERNAL_ID); |
|
25045
6cd15ba3135f
Change Qun number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents:
25023
diff
changeset
|
385 | id = strtoul(id_ptr, NULL, 10); |
|
24018
91f0294f2377
2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23190
diff
changeset
|
386 | g_return_if_fail(id > 0); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
387 | |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
388 | rmd = qq_room_data_find(gc, id); |
|
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
389 | g_return_if_fail(rmd != NULL); |
|
13932
4d131bd2b40f
[gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff
changeset
|
390 | |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
391 | /* XXX insert UI code here */ |
|
24363
383f01928954
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24355
diff
changeset
|
392 | /* qq_group_detail_window_show(gc, rmd); */ |
|
14083
2b68bb18a66c
[gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
14051
diff
changeset
|
393 | } |
|
24365
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
394 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
395 | /* receive an application to join the group */ |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
396 | void qq_process_room_buddy_request_join(guint8 *data, gint len, guint32 id, PurpleConnection *gc) |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
397 | { |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
398 | guint32 ext_id, member_id; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
399 | guint8 type8; |
|
24367
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
400 | gchar *msg, *reason; |
|
24365
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
401 | qq_room_req *add_req; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
402 | gchar *who; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
403 | gint bytes = 0; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
404 | qq_room_data *rmd; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
405 | time_t now = time(NULL); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
406 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
407 | g_return_if_fail(id > 0 && data != NULL && len > 0); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
408 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
409 | /* FIXME: check length here */ |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
410 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
411 | bytes += qq_get32(&ext_id, data + bytes); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
412 | bytes += qq_get8(&type8, data + bytes); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
413 | bytes += qq_get32(&member_id, data + bytes); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
414 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
415 | g_return_if_fail(ext_id > 0 && member_id > 0); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
416 | |
|
24367
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
417 | bytes += qq_get_vstr(&reason, QQ_CHARSET_DEFAULT, data + bytes); |
|
24365
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
418 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
419 | add_req = g_new0(qq_room_req, 1); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
420 | add_req->gc = gc; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
421 | add_req->id = id; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
422 | add_req->member = member_id; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
423 | |
|
25045
6cd15ba3135f
Change Qun number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents:
25023
diff
changeset
|
424 | purple_debug_info("QQ", "%u requested to join room, ext id %u\n", member_id, ext_id); |
|
24365
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
425 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
426 | rmd = qq_room_data_find(gc, id); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
427 | g_return_if_fail(rmd != NULL); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
428 | if (qq_room_buddy_find(rmd, member_id)) { |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
429 | purple_debug_info("QQ", "Approve join, buddy joined before\n"); |
|
25045
6cd15ba3135f
Change Qun number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents:
25023
diff
changeset
|
430 | msg = g_strdup_printf(_("%u requested to join Qun %u for %s"), |
|
24367
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
431 | member_id, ext_id, reason); |
|
24365
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
432 | qq_room_got_chat_in(gc, id, 0, msg, now); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
433 | qq_send_cmd_group_auth(gc, rmd, QQ_ROOM_AUTH_REQUEST_APPROVE, member_id, ""); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
434 | g_free(msg); |
|
24367
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
435 | g_free(reason); |
|
24365
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
436 | return; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
437 | } |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
438 | |
|
24367
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
439 | if (purple_prefs_get_bool("/plugins/prpl/qq/auto_get_authorize_info")) { |
|
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
440 | qq_request_buddy_info(gc, member_id, 0, QQ_BUDDY_INFO_DISPLAY); |
|
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
441 | } |
|
24365
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
442 | who = uid_to_purple_name(member_id); |
|
25045
6cd15ba3135f
Change Qun number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents:
25023
diff
changeset
|
443 | msg = g_strdup_printf(_("%u request to join Qun %u"), member_id, ext_id); |
|
24365
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
444 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
445 | purple_request_action(gc, _("QQ Qun Operation"), |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
446 | msg, reason, |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
447 | PURPLE_DEFAULT_ACTION_NONE, |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
448 | purple_connection_get_account(gc), who, NULL, |
|
24367
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
449 | add_req, 2, |
|
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
450 | _("Deny"), G_CALLBACK(member_join_deny_cb), |
|
80bead6c1577
2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24365
diff
changeset
|
451 | _("Authorize"), G_CALLBACK(member_join_authorize_cb)); |
|
24365
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
452 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
453 | g_free(who); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
454 | g_free(msg); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
455 | g_free(reason); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
456 | } |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
457 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
458 | /* the request to join a group is rejected */ |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
459 | void qq_process_room_buddy_rejected(guint8 *data, gint len, guint32 id, PurpleConnection *gc) |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
460 | { |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
461 | guint32 ext_id, admin_uid; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
462 | guint8 type8; |
|
24370
982f5559baae
2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24367
diff
changeset
|
463 | gchar *msg, *reason; |
|
24365
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
464 | qq_room_data *rmd; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
465 | gint bytes; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
466 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
467 | g_return_if_fail(data != NULL && len > 0); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
468 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
469 | /* FIXME: check length here */ |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
470 | bytes = 0; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
471 | bytes += qq_get32(&ext_id, data + bytes); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
472 | bytes += qq_get8(&type8, data + bytes); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
473 | bytes += qq_get32(&admin_uid, data + bytes); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
474 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
475 | g_return_if_fail(ext_id > 0 && admin_uid > 0); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
476 | |
|
24370
982f5559baae
2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24367
diff
changeset
|
477 | bytes += qq_get_vstr(&reason, QQ_CHARSET_DEFAULT, data + bytes); |
|
24365
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
478 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
479 | msg = g_strdup_printf |
|
25045
6cd15ba3135f
Change Qun number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents:
25023
diff
changeset
|
480 | (_("Failed to join Qun %u, operated by admin %u"), ext_id, admin_uid); |
|
24365
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
481 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
482 | purple_notify_warning(gc, _("QQ Qun Operation"), msg, reason); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
483 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
484 | qq_room_find_or_new(gc, id, ext_id); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
485 | rmd = qq_room_data_find(gc, id); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
486 | if (rmd != NULL) { |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
487 | rmd->my_role = QQ_ROOM_ROLE_NO; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
488 | } |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
489 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
490 | g_free(msg); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
491 | g_free(reason); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
492 | } |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
493 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
494 | /* the request to join a group is approved */ |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
495 | void qq_process_room_buddy_approved(guint8 *data, gint len, guint32 id, PurpleConnection *gc) |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
496 | { |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
497 | guint32 ext_id, admin_uid; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
498 | guint8 type8; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
499 | gchar *msg, *reason; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
500 | qq_room_data *rmd; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
501 | gint bytes; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
502 | time_t now; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
503 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
504 | g_return_if_fail(data != NULL && len > 0); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
505 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
506 | /* FIXME: check length here */ |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
507 | bytes = 0; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
508 | bytes += qq_get32(&ext_id, data + bytes); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
509 | bytes += qq_get8(&type8, data + bytes); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
510 | bytes += qq_get32(&admin_uid, data + bytes); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
511 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
512 | g_return_if_fail(ext_id > 0 && admin_uid > 0); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
513 | /* it is also a "æ— " here, so do not display */ |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
514 | bytes += qq_get_vstr(&reason, QQ_CHARSET_DEFAULT, data + bytes); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
515 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
516 | qq_room_find_or_new(gc, id, ext_id); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
517 | rmd = qq_room_data_find(gc, id); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
518 | if (rmd != NULL) { |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
519 | rmd->my_role = QQ_ROOM_ROLE_YES; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
520 | } |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
521 | |
|
25045
6cd15ba3135f
Change Qun number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents:
25023
diff
changeset
|
522 | msg = g_strdup_printf(_("<b>Joinning Qun %u is approved by Admin %u for %s</b>"), |
|
24365
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
523 | ext_id, admin_uid, reason); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
524 | now = time(NULL); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
525 | qq_room_got_chat_in(gc, id, 0, msg, now); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
526 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
527 | g_free(msg); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
528 | g_free(reason); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
529 | } |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
530 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
531 | /* process the packet when removed from a group */ |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
532 | void qq_process_room_buddy_removed(guint8 *data, gint len, guint32 id, PurpleConnection *gc) |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
533 | { |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
534 | guint32 ext_id, uid; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
535 | guint8 type8; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
536 | gchar *msg; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
537 | qq_room_data *rmd; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
538 | gint bytes = 0; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
539 | time_t now = time(NULL); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
540 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
541 | g_return_if_fail(data != NULL && len > 0); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
542 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
543 | /* FIXME: check length here */ |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
544 | bytes = 0; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
545 | bytes += qq_get32(&ext_id, data + bytes); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
546 | bytes += qq_get8(&type8, data + bytes); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
547 | bytes += qq_get32(&uid, data + bytes); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
548 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
549 | g_return_if_fail(ext_id > 0 && uid > 0); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
550 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
551 | qq_room_find_or_new(gc, id, ext_id); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
552 | rmd = qq_room_data_find(gc, id); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
553 | if (rmd != NULL) { |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
554 | rmd->my_role = QQ_ROOM_ROLE_NO; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
555 | } |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
556 | |
|
25045
6cd15ba3135f
Change Qun number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents:
25023
diff
changeset
|
557 | msg = g_strdup_printf(_("<b>Removed buddy %u.</b>"), uid); |
|
24365
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
558 | qq_room_got_chat_in(gc, id, 0, msg, now); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
559 | g_free(msg); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
560 | } |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
561 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
562 | /* process the packet when added to a group */ |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
563 | void qq_process_room_buddy_joined(guint8 *data, gint len, guint32 id, PurpleConnection *gc) |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
564 | { |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
565 | guint32 ext_id, uid; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
566 | guint8 type8; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
567 | qq_room_data *rmd; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
568 | gint bytes; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
569 | gchar *msg; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
570 | time_t now = time(NULL); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
571 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
572 | g_return_if_fail(data != NULL && len > 0); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
573 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
574 | /* FIXME: check length here */ |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
575 | bytes = 0; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
576 | bytes += qq_get32(&ext_id, data + bytes); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
577 | bytes += qq_get8(&type8, data + bytes); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
578 | bytes += qq_get32(&uid, data + bytes); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
579 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
580 | g_return_if_fail(ext_id > 0 && id > 0); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
581 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
582 | qq_room_find_or_new(gc, id, ext_id); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
583 | rmd = qq_room_data_find(gc, id); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
584 | g_return_if_fail(rmd != NULL); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
585 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
586 | rmd->my_role = QQ_ROOM_ROLE_YES; |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
587 | |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
588 | qq_update_room(gc, 0, rmd->id); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
589 | |
|
25045
6cd15ba3135f
Change Qun number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents:
25023
diff
changeset
|
590 | msg = g_strdup_printf(_("<b>New buddy %u joined.</b>"), uid); |
|
24365
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
591 | qq_room_got_chat_in(gc, id, 0, msg, now); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
592 | g_free(msg); |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
593 | } |
|
af3e4261a311
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
24363
diff
changeset
|
594 |