annotate src/protocols/qq/qq.c @ 14051:f78289db8977

[gaim-migrate @ 16664] Removed code for looking up specific Chinese geolocation info from a user's IP address. The code was defunct for two reasons: First, the file holding the geolocation data (QQWry.dat) was simply too large to package with Gaim. Second, the current version of QQ seems to have stopped broadcasting the user's IP address with his/her status. committer: Tailor Script <tailor@pidgin.im>
author Mark Huetsch <markhuetsch>
date Mon, 07 Aug 2006 08:30:36 +0000
parents 8294485b79db
children d178bff33359
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
1 /**
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
2 * @file qq.c The QQ2003C protocol plugin
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
3 *
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
4 * gaim
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
5 *
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
6 * Copyright (C) 2004 Puzzlebird
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
7 *
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
11 * (at your option) any later version.
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
12 *
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
16 * GNU General Public License for more details.
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
17 *
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
21 */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
22
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
23 #include "internal.h"
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
24
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
25 #ifdef _WIN32
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
26 #define random rand
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
27 #endif
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
28
14021
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
29 #include "accountopt.h"
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
30 #include "debug.h"
14049
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
31 #include "gtkroomlist.h"
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
32 #include "notify.h"
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
33 #include "prefs.h"
14021
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
34 #include "prpl.h"
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
35 #include "request.h"
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
36 #include "server.h"
14021
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
37 #include "util.h"
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
38
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
39 #include "buddy_info.h"
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
40 #include "buddy_opt.h"
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
41 #include "buddy_status.h"
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
42 #include "char_conv.h"
14021
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
43 #include "group.h"
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
44 #include "group_find.h"
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
45 #include "group_im.h"
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
46 #include "group_info.h"
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
47 #include "group_join.h"
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
48 #include "group_opt.h"
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
49 #include "header_info.h"
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
50 #include "im.h"
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
51 #include "keep_alive.h"
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
52 #include "login_logout.h"
14021
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
53 #include "packet_parse.h"
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
54 #include "qq.h"
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
55 #include "qq_proxy.h"
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
56 #include "send_core.h"
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
57 #include "send_file.h"
14021
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
58 #include "utils.h"
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
59 #include "version.h"
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
60
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
61 #define OPENQ_AUTHOR "Puzzlebird"
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
62 #define OPENQ_WEBSITE "http://openq.sourceforge.net"
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
63 #define QQ_TCP_QUERY_PORT "8000"
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
64 #define QQ_UDP_PORT "8000"
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
65
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
66 const gchar *udp_server_list[] = {
14021
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
67 "sz.tencent.com", /* 61.144.238.145 */
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
68 "sz2.tencent.com", /* 61.144.238.146 */
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
69 "sz3.tencent.com", /* 202.104.129.251 */
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
70 "sz4.tencent.com", /* 202.104.129.254 */
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
71 "sz5.tencent.com", /* 61.141.194.203 */
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
72 "sz6.tencent.com", /* 202.104.129.252 */
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
73 "sz7.tencent.com", /* 202.104.129.253 */
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
74 "202.96.170.64",
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
75 "64.144.238.155",
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
76 "202.104.129.254"
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
77 };
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
78 const gint udp_server_amount = (sizeof(udp_server_list) / sizeof(udp_server_list[0]));
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
79
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
80
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
81 const gchar *tcp_server_list[] = {
14021
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
82 "tcpconn.tencent.com", /* 218.17.209.23 */
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
83 "tcpconn2.tencent.com", /* 218.18.95.153 */
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
84 "tcpconn3.tencent.com", /* 218.17.209.23 */
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
85 "tcpconn4.tencent.com" /* 218.18.95.153 */
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
86 };
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
87 const gint tcp_server_amount = (sizeof(tcp_server_list) / sizeof(tcp_server_list[0]));
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
88
14021
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
89 static void _qq_login(GaimAccount *account)
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
90 {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
91 const gchar *qq_server, *qq_port;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
92 qq_data *qd;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
93 GaimConnection *gc;
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
94 GaimPresence *presence;
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
95 gboolean login_hidden, use_tcp;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
96
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
97 g_return_if_fail(account != NULL);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
98
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
99 gc = gaim_account_get_connection(account);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
100 g_return_if_fail(gc != NULL);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
101
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
102 gc->flags |= GAIM_CONNECTION_HTML | GAIM_CONNECTION_NO_BGCOLOR | GAIM_CONNECTION_AUTO_RESP;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
103
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
104 qd = g_new0(qq_data, 1);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
105 gc->proto_data = qd;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
106
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
107 qq_server = gaim_account_get_string(account, "server", NULL);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
108 qq_port = gaim_account_get_string(account, "port", NULL);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
109 use_tcp = gaim_account_get_bool(account, "use_tcp", FALSE);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
110 presence = gaim_account_get_presence(account);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
111 login_hidden = gaim_presence_is_status_primitive_active(presence, GAIM_STATUS_INVISIBLE);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
112
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
113 qd->use_tcp = use_tcp;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
114
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
115 if (login_hidden) {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
116 qd->login_mode = QQ_LOGIN_MODE_HIDDEN;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
117 gaim_debug(GAIM_DEBUG_INFO, "QQ", "Login in hidden mode\n");
14021
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
118 } else {
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
119 qd->login_mode = QQ_LOGIN_MODE_NORMAL;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
120 gaim_debug(GAIM_DEBUG_INFO, "QQ", "Login in normal mode\n");
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
121 }
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
122
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
123 if (qq_server == NULL || strlen(qq_server) == 0)
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
124 qq_server = use_tcp ?
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
125 tcp_server_list[random() % tcp_server_amount] : udp_server_list[random() % udp_server_amount];
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
126
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
127 if (qq_port == NULL || strtol(qq_port, NULL, 10) == 0)
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
128 qq_port = use_tcp ? QQ_TCP_QUERY_PORT : QQ_UDP_PORT;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
129
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
130 gaim_connection_update_progress(gc, _("Connecting"), 0, QQ_CONNECT_STEPS);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
131
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
132 if (qq_connect(account, qq_server, strtol(qq_port, NULL, 10), use_tcp, FALSE) < 0)
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
133 gaim_connection_error(gc, _("Unable to connect."));
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
134 }
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
135
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
136 /* directly goes for qq_disconnect */
14021
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
137 static void _qq_close(GaimConnection *gc)
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
138 {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
139 g_return_if_fail(gc != NULL);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
140 qq_disconnect(gc);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
141 }
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
142
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
143 /* returns the icon name for a buddy or protocol */
14021
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
144 static const gchar *_qq_list_icon(GaimAccount *a, GaimBuddy *b)
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
145 {
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
146 /* XXX temp commented out until we figure out what to do with
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
147 * status icons */
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
148 /*
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
149 gchar *filename;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
150 qq_buddy *q_bud;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
151 gchar icon_suffix;
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
152 */
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
153
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
154 /* do not use g_return_val_if_fail, as it is not assertion */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
155 if (b == NULL || b->proto_data == NULL)
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
156 return "qq";
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
157
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
158 /*
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
159 q_bud = (qq_buddy *) b->proto_data;
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
160
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
161 icon_suffix = get_suffix_from_status(q_bud->status);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
162 filename = get_icon_name(q_bud->icon / 3 + 1, icon_suffix);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
163
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
164 return filename;
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
165 */
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
166 return "qq";
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
167 }
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
168
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
169
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
170 /* a short status text beside buddy icon*/
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
171 static gchar *_qq_status_text(GaimBuddy *b)
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
172 {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
173 qq_buddy *q_bud;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
174 GString *status;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
175 gchar *ret;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
176
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
177 q_bud = (qq_buddy *) b->proto_data;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
178 if (q_bud == NULL)
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
179 return NULL;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
180
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
181 status = g_string_new("");
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
182
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
183 switch(q_bud->status) {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
184 case QQ_BUDDY_OFFLINE:
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
185 g_string_append(status, "My Offline");
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
186 break;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
187 case QQ_BUDDY_ONLINE_NORMAL:
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
188 return NULL;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
189 break;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
190 case QQ_BUDDY_ONLINE_OFFLINE:
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
191 g_string_append(status, "Online Offline");
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
192 break;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
193 case QQ_BUDDY_ONLINE_AWAY:
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
194 g_string_append(status, "Away");
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
195 break;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
196 case QQ_BUDDY_ONLINE_INVISIBLE:
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
197 g_string_append(status, "Invisible");
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
198 break;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
199 default:
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
200 g_string_printf(status, "Unknown-%d", q_bud->status);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
201 }
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
202 /*
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
203 switch (q_bud->gender) {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
204 case QQ_BUDDY_GENDER_GG:
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
205 g_string_append(status, " GG");
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
206 break;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
207 case QQ_BUDDY_GENDER_MM:
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
208 g_string_append(status, " MM");
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
209 break;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
210 case QQ_BUDDY_GENDER_UNKNOWN:
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
211 g_string_append(status, "^_*");
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
212 break;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
213 default:
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
214 g_string_append(status, "^_^");
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
215 }
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
216
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
217 g_string_append_printf(status, " Age: %d", q_bud->age);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
218 g_string_append_printf(status, " Client: %04x", q_bud->client_version);
14021
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
219 having_video = q_bud->comm_flag & QQ_COMM_FLAG_VIDEO;
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
220 if (having_video)
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
221 g_string_append(status, " (video)");
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
222 */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
223
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
224 ret = status->str;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
225 g_string_free(status, FALSE);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
226
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
227 return ret;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
228 }
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
229
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
230
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
231 /* a floating text when mouse is on the icon, show connection status here */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
232 static void _qq_tooltip_text(GaimBuddy *b, GString *tooltip, gboolean full)
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
233 {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
234 qq_buddy *q_bud;
14021
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
235 /* gchar *country, *country_utf8, *city, *city_utf8;
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
236 guint32 ip_value;
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
237 */
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
238 gchar *ip_str;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
239
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
240 g_return_if_fail(b != NULL);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
241
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
242 q_bud = (qq_buddy *) b->proto_data;
14021
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
243 /* g_return_if_fail(q_bud != NULL); */
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
244
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
245 if (GAIM_BUDDY_IS_ONLINE(b) && q_bud != NULL)
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
246 {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
247 ip_str = gen_ip_str(q_bud->ip);
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
248 if (strlen(ip_str) != 0) {
14051
f78289db8977 [gaim-migrate @ 16664]
Mark Huetsch <markhuetsch>
parents: 14049
diff changeset
249 g_string_append_printf(tooltip, "\n<b>%s Address:</b> %s:%d",
f78289db8977 [gaim-migrate @ 16664]
Mark Huetsch <markhuetsch>
parents: 14049
diff changeset
250 (q_bud->comm_flag & QQ_COMM_FLAG_TCP_MODE)
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
251 ? "TCP" : "UDP", ip_str, q_bud->port);
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
252 }
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
253 g_free(ip_str);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
254 g_string_append_printf(tooltip, "\n<b>Age:</b> %d", q_bud->age);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
255 switch (q_bud->gender) {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
256 case QQ_BUDDY_GENDER_GG:
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
257 g_string_append(tooltip, "\n<b>Gender:</b> GG");
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
258 break;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
259 case QQ_BUDDY_GENDER_MM:
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
260 g_string_append(tooltip, "\n<b>Gender:</b> MM");
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
261 break;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
262 case QQ_BUDDY_GENDER_UNKNOWN:
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
263 g_string_append(tooltip, "\n<b>Gender:</b> UNKNOWN");
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
264 break;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
265 default:
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
266 g_string_append_printf(tooltip, "\n<b>Gender:</b> ERROR(%d)", q_bud->gender);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
267 } /* switch gender */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
268 g_string_append_printf(tooltip, "\n<b>Flag:</b> %01x", q_bud->flag1);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
269 g_string_append_printf(tooltip, "\n<b>CommFlag:</b> %01x", q_bud->comm_flag);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
270 g_string_append_printf(tooltip, "\n<b>Client:</b> %04x", q_bud->client_version);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
271 }
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
272 }
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
273
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
274 /* we can show tiny icons on the four corners of buddy icon, */
14021
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
275 static void _qq_list_emblems(GaimBuddy *b, const char **se, const char **sw, const char **nw, const char **ne)
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
276 {
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
277 /* each char ** are refering to filename in pixmaps/gaim/status/default/ *png */
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
278
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
279 qq_buddy *q_bud = b->proto_data;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
280 const char *emblems[4] = { NULL, NULL, NULL, NULL };
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
281 int i = 0;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
282
14021
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
283 if (q_bud == NULL) {
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
284 emblems[0] = "offline";
14021
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
285 } else {
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
286 if (q_bud->comm_flag & QQ_COMM_FLAG_QQ_MEMBER)
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
287 emblems[i++] = "qq_member";
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
288 if (q_bud->comm_flag & QQ_COMM_FLAG_BIND_MOBILE)
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
289 emblems[i++] = "wireless";
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
290 if (q_bud->comm_flag & QQ_COMM_FLAG_VIDEO)
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
291 emblems[i++] = "video";
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
292
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
293 }
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
294
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
295 *se = emblems[0];
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
296 *sw = emblems[1];
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
297 *nw = emblems[2];
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
298 *ne = emblems[3];
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
299
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
300 return;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
301 }
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
302
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
303 /* QQ away status (used to initiate QQ away packet) */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
304 static GList *_qq_away_states(GaimAccount *ga)
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
305 {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
306 GaimStatusType *status;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
307 GList *types = NULL;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
308
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
309 status = gaim_status_type_new_full(GAIM_STATUS_AVAILABLE,
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
310 "available", _("QQ: Available"), FALSE, TRUE, FALSE);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
311 types = g_list_append(types, status);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
312
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
313 status = gaim_status_type_new_full(GAIM_STATUS_AWAY,
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
314 "away", _("QQ: Away"), FALSE, TRUE, FALSE);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
315 types = g_list_append(types, status);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
316
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
317 status = gaim_status_type_new_full(GAIM_STATUS_INVISIBLE,
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
318 "invisible", _("QQ: Invisible"), FALSE, TRUE, FALSE);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
319 types = g_list_append(types, status);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
320
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
321 status = gaim_status_type_new_full(GAIM_STATUS_OFFLINE,
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
322 "offline", _("QQ: Offline"), FALSE, TRUE, FALSE);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
323 types = g_list_append(types, status);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
324
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
325 return types;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
326 }
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
327
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
328 /* initiate QQ away with proper change_status packet */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
329 static void _qq_set_away(GaimAccount *account, GaimStatus *status)
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
330 {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
331 GaimConnection *gc = gaim_account_get_connection(account);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
332 const char *state = gaim_status_get_id(status);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
333
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
334 qq_data *qd;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
335
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
336
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
337 g_return_if_fail(gc != NULL && gc->proto_data != NULL);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
338
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
339 qd = (qq_data *) gc->proto_data;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
340
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
341 if(0 == strcmp(state, "available"))
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
342 qd->status = QQ_SELF_STATUS_AVAILABLE;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
343 else if (0 == strcmp(state, "away"))
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
344 qd->status = QQ_SELF_STATUS_AWAY;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
345 else if (0 == strcmp(state, "invisible"))
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
346 qd->status = QQ_SELF_STATUS_INVISIBLE;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
347 else
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
348 qd->status = QQ_SELF_STATUS_AVAILABLE;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
349
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
350 qq_send_packet_change_status(gc);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
351 }
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
352
14021
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
353 /* IMPORTANT: GaimConvImFlags -> GaimMessageFlags */
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
354 /* send an instant msg to a buddy */
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
355 static gint _qq_send_im(GaimConnection *gc, const gchar *who, const gchar *message, GaimMessageFlags flags)
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
356 {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
357 gint type, to_uid;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
358 gchar *msg, *msg_with_qq_smiley;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
359 qq_data *qd;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
360
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
361 g_return_val_if_fail(gc != NULL && gc->proto_data != NULL && who != NULL, -1);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
362
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
363 qd = (qq_data *) gc->proto_data;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
364
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
365 g_return_val_if_fail(strlen(message) <= QQ_MSG_IM_MAX, -E2BIG);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
366
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
367 type = (flags == GAIM_MESSAGE_AUTO_RESP ? QQ_IM_AUTO_REPLY : QQ_IM_TEXT);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
368 to_uid = gaim_name_to_uid(who);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
369
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
370 /* if msg is to myself, bypass the network */
14021
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
371 if (to_uid == qd->uid) {
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
372 serv_got_im(gc, who, message, flags, time(NULL));
14021
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
373 } else {
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
374 msg = utf8_to_qq(message, QQ_CHARSET_DEFAULT);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
375 msg_with_qq_smiley = gaim_smiley_to_qq(msg);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
376 qq_send_packet_im(gc, to_uid, msg_with_qq_smiley, type);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
377 g_free(msg);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
378 g_free(msg_with_qq_smiley);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
379 }
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
380
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
381 return 1;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
382 }
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
383
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
384 /* send a chat msg to a QQ Qun */
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
385 static int _qq_chat_send(GaimConnection *gc, int channel, const char *message, GaimMessageFlags flags)
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
386 {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
387 gchar *msg, *msg_with_qq_smiley;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
388 qq_group *group;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
389
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
390 g_return_val_if_fail(gc != NULL && message != NULL, -1);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
391 g_return_val_if_fail(strlen(message) <= QQ_MSG_IM_MAX, -E2BIG);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
392
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
393 group = qq_group_find_by_channel(gc, channel);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
394 g_return_val_if_fail(group != NULL, -1);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
395
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
396 msg = utf8_to_qq(message, QQ_CHARSET_DEFAULT);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
397 msg_with_qq_smiley = gaim_smiley_to_qq(msg);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
398 qq_send_packet_group_im(gc, group, msg_with_qq_smiley);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
399 g_free(msg);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
400 g_free(msg_with_qq_smiley);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
401
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
402 return 1;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
403 }
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
404
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
405 /* send packet to get who's detailed information */
14021
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
406 static void _qq_get_info(GaimConnection *gc, const gchar *who)
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
407 {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
408 guint32 uid;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
409 qq_data *qd;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
410
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
411 g_return_if_fail(gc != NULL && gc->proto_data != NULL);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
412 qd = gc->proto_data;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
413 uid = gaim_name_to_uid(who);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
414
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
415 if (uid <= 0) {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
416 gaim_debug(GAIM_DEBUG_ERROR, "QQ", "Not valid QQid: %s\n", who);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
417 gaim_notify_error(gc, NULL, _("Invalid name, please input in qq-xxxxxxxx format"), NULL);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
418 return;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
419 }
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
420
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
421 qq_send_packet_get_info(gc, uid, TRUE);
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
422 }
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
423
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
424 /* get my own information */
14021
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
425 static void _qq_menu_modify_my_info(GaimPluginAction *action)
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
426 {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
427 GaimConnection *gc = (GaimConnection *) action->context;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
428 qq_data *qd;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
429
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
430 g_return_if_fail(gc != NULL && gc->proto_data != NULL);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
431
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
432 qd = (qq_data *) gc->proto_data;
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
433 qq_prepare_modify_info(gc);
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
434 }
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
435
14021
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
436 static void _qq_menu_change_password(GaimPluginAction *action)
14014
9c5790820ac6 [gaim-migrate @ 16606]
Mark Huetsch <markhuetsch>
parents: 13989
diff changeset
437 {
14015
9516a796ed5f [gaim-migrate @ 16607]
Mark Huetsch <markhuetsch>
parents: 14014
diff changeset
438 gaim_notify_uri(NULL, "https://password.qq.com");
14014
9c5790820ac6 [gaim-migrate @ 16606]
Mark Huetsch <markhuetsch>
parents: 13989
diff changeset
439 }
9c5790820ac6 [gaim-migrate @ 16606]
Mark Huetsch <markhuetsch>
parents: 13989
diff changeset
440
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
441 /* remove a buddy from my list and remove myself from his list */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
442 /* TODO: re-enable this
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
443 static void _qq_menu_block_buddy(GaimBlistNode * node)
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
444 {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
445 guint32 uid;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
446 gc_and_uid *g;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
447 GaimBuddy *buddy;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
448 GaimConnection *gc;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
449 // const gchar *who = param_who; gfhuang
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
450 const gchar *who;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
451
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
452 g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(node));
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
453
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
454 buddy = (GaimBuddy *) node;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
455 gc = gaim_account_get_connection(buddy->account);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
456 who = buddy->name;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
457 g_return_if_fail(gc != NULL && who != NULL);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
458
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
459 uid = gaim_name_to_uid(who);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
460 g_return_if_fail(uid > 0);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
461
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
462 g = g_new0(gc_and_uid, 1);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
463 g->gc = gc;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
464 g->uid = uid;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
465
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
466 gaim_request_action(gc, _("Block Buddy"),
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
467 _("Are you sure to block this buddy?"), NULL,
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
468 1, g, 2,
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
469 _("Cancel"),
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
470 G_CALLBACK(qq_do_nothing_with_gc_and_uid),
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
471 _("Block"), G_CALLBACK(qq_block_buddy_with_gc_and_uid));
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
472 }
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
473 */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
474
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
475 /* show a brief summary of what we get from login packet */
14021
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
476 static void _qq_menu_show_login_info(GaimPluginAction *action)
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
477 {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
478 GaimConnection *gc = (GaimConnection *) action->context;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
479 qq_data *qd;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
480 GString *info;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
481
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
482 g_return_if_fail(gc != NULL && gc->proto_data != NULL);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
483
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
484 qd = (qq_data *) gc->proto_data;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
485 info = g_string_new("<html><body>\n");
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
486
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
487 g_string_append_printf(info, _("<b>Current Online</b>: %d<br>\n"), qd->all_online);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
488 g_string_append_printf(info, _("<b>Last Refresh</b>: %s<br>\n"), ctime(&qd->last_get_online));
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
489
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
490 g_string_append(info, "<hr>\n");
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
491
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
492 g_string_append_printf(info, _("<b>Connection Mode</b>: %s<br>\n"), qd->use_tcp ? "TCP" : "UDP");
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
493 g_string_append_printf(info, _("<b>Server IP</b>: %s: %d<br>\n"), qd->server_ip, qd->server_port);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
494 g_string_append_printf(info, _("<b>My Public IP</b>: %s<br>\n"), qd->my_ip);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
495
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
496 g_string_append(info, "<hr>\n");
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
497 g_string_append(info, "<i>Information below may not be accurate</i><br>\n");
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
498
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
499 g_string_append_printf(info, _("<b>Login Time</b>: %s<br>\n"), ctime(&qd->login_time));
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
500 g_string_append_printf(info, _("<b>Last Login IP</b>: %s<br>\n"), qd->last_login_ip);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
501 g_string_append_printf(info, _("<b>Last Login Time</b>: %s\n"), ctime(&qd->last_login_time));
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
502
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
503 g_string_append(info, "</body></html>");
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
504
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
505 gaim_notify_formatted(gc, NULL, _("Login Information"), NULL, info->str, NULL, NULL);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
506
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
507 g_string_free(info, TRUE);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
508 }
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
509
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
510 static void _qq_menu_search_or_add_permanent_group(GaimPluginAction * action)
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
511 {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
512 gaim_gtk_roomlist_dialog_show();
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
513 }
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
514
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
515 /*
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
516 static void _qq_menu_create_permanent_group(GaimPluginAction * action)
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
517 {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
518 GaimConnection *gc = (GaimConnection *) action->context;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
519 g_return_if_fail(gc != NULL);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
520 gaim_request_input(gc, _("Create QQ Qun"),
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
521 _("Input Qun name here"),
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
522 _("Only QQ member can create permanent Qun"),
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
523 "OpenQ", FALSE, FALSE, NULL,
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
524 _("Create"), G_CALLBACK(qq_group_create_with_name), _("Cancel"), NULL, gc);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
525 }
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
526 */
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
527
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
528 /* XXX re-enable this
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
529 static void _qq_menu_unsubscribe_group(GaimBlistNode * node)
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
530 {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
531 GaimChat *chat = (GaimChat *)node;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
532 GaimConnection *gc = gaim_account_get_connection(chat->account);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
533 GHashTable *components = chat -> components;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
534
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
535 g_return_if_fail(GAIM_BLIST_NODE_IS_CHAT(node));
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
536
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
537 g_return_if_fail(gc != NULL && components != NULL);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
538 qq_group_exit(gc, components);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
539 }
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
540
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
541 // XXX re-enable this
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
542 static void _qq_menu_manage_group(GaimBlistNode * node)
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
543 {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
544 GaimChat *chat = (GaimChat *)node;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
545 GaimConnection *gc = gaim_account_get_connection(chat->account);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
546 GHashTable *components = chat -> components;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
547
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
548 g_return_if_fail(GAIM_BLIST_NODE_IS_CHAT(node));
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
549
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
550 g_return_if_fail(gc != NULL && components != NULL);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
551 qq_group_manage_group(gc, components);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
552 }
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
553 */
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
554
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
555 /*
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
556 static void _qq_menu_show_system_message(GaimPluginAction *action)
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
557 {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
558 GaimConnection *gc = (GaimConnection *) action->context;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
559 g_return_if_fail ( gc != NULL );
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
560 gaim_gtk_log_show(GAIM_LOG_IM, "systemim", gaim_connection_get_account(gc));
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
561 }
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
562 */
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
563
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
564 /* TODO: re-enable this
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
565 static void _qq_menu_send_file(GaimBlistNode * node, gpointer ignored)
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
566 {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
567 GaimBuddy *buddy;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
568 GaimConnection *gc;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
569 qq_buddy *q_bud;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
570
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
571 g_return_if_fail (GAIM_BLIST_NODE_IS_BUDDY (node));
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
572 buddy = (GaimBuddy *) node;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
573 q_bud = (qq_buddy *) buddy->proto_data;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
574 // if (is_online (q_bud->status)) {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
575 gc = gaim_account_get_connection (buddy->account);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
576 g_return_if_fail (gc != NULL && gc->proto_data != NULL);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
577 qq_send_file(gc, buddy->name, NULL);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
578 // }
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
579 }
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
580 */
14049
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
581
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
582 static gboolean _qq_parse_custom_packet_field(GaimRequestFields *fields,
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
583 const gchar *id, guint8 **value)
14015
9516a796ed5f [gaim-migrate @ 16607]
Mark Huetsch <markhuetsch>
parents: 14014
diff changeset
584 {
14049
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
585 GaimRequestField *field;
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
586 const gchar *str;
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
587 gint len, i;
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
588 gboolean success;
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
589
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
590 success = FALSE;
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
591 field = gaim_request_fields_get_field(fields, id);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
592 str = gaim_request_field_string_get_value(field);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
593 if (str) {
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
594 success = TRUE;
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
595 if (strcmp(id, "uid") != 0) {
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
596 *value = hex_str_to_bytes(str, &len);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
597 if (!*value || len != 2)
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
598 success = FALSE;
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
599 } else {
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
600 for (i = 0; i < strlen(str); i++) {
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
601 if (!g_ascii_isdigit(str[i])) {
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
602 success = FALSE;
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
603 break;
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
604 }
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
605 }
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
606 if (success) {
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
607 *(guint32 *) value = strtoul(str, NULL, 10);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
608 if (errno == ERANGE)
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
609 success = FALSE;
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
610 }
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
611 }
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
612 }
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
613 if (!success)
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
614 gaim_debug(GAIM_DEBUG_ERROR, "QQ", "Invalid entry: %s\n", id);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
615 return success;
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
616 }
14015
9516a796ed5f [gaim-migrate @ 16607]
Mark Huetsch <markhuetsch>
parents: 14014
diff changeset
617
14049
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
618 static gboolean _qq_parse_custom_packet_fields(GaimRequestFields *fields,
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
619 guint8 **client, guint8 **cmd, guint8 **seq, guint32 *uid,
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
620 guint8 **body, gint *body_len)
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
621 {
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
622 GaimRequestField *field;
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
623 gboolean success;
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
624
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
625 success = TRUE;
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
626 *client = *cmd = *seq = *body = NULL;
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
627 *uid = 0;
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
628 success = _qq_parse_custom_packet_field(fields, "client", client);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
629 if (success)
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
630 success = _qq_parse_custom_packet_field(fields, "cmd", cmd);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
631 if (success)
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
632 success = _qq_parse_custom_packet_field(fields, "uid", (guint8 **) uid);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
633 if (success)
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
634 success = _qq_parse_custom_packet_field(fields, "seq", seq);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
635 if (success) {
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
636 field = gaim_request_fields_get_field(fields, "body");
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
637 *body = hex_str_to_bytes(gaim_request_field_string_get_value(field),
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
638 body_len);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
639 } else {
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
640 if (*client)
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
641 g_free(*client);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
642 if (*cmd)
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
643 g_free(*cmd);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
644 if (*seq)
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
645 g_free(*seq);
14015
9516a796ed5f [gaim-migrate @ 16607]
Mark Huetsch <markhuetsch>
parents: 14014
diff changeset
646 }
14049
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
647 return success;
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
648 }
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
649
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
650 static void _qq_send_custom_packet_cb(GaimConnection *gc, GaimRequestFields *fields)
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
651 {
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
652 guint32 uid;
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
653 guint8 *buf, *client, *cmd, *seq, *body, *cursor;
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
654 gint bytes, len;
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
655 qq_data *qd;
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
656 gboolean success;
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
657
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
658 qd = (qq_data *) gc->proto_data;
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
659
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
660 success = _qq_parse_custom_packet_fields(fields, &client, &cmd,
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
661 &seq, &uid, &body, &len);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
662 if (!success) {
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
663 gaim_notify_error(gc, _("Error"), _("Invalid packet entry"), NULL);
14015
9516a796ed5f [gaim-migrate @ 16607]
Mark Huetsch <markhuetsch>
parents: 14014
diff changeset
664 return;
9516a796ed5f [gaim-migrate @ 16607]
Mark Huetsch <markhuetsch>
parents: 14014
diff changeset
665 }
9516a796ed5f [gaim-migrate @ 16607]
Mark Huetsch <markhuetsch>
parents: 14014
diff changeset
666
14049
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
667 if (body)
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
668 g_return_if_fail(len+12 <= MAX_PACKET_SIZE);
14015
9516a796ed5f [gaim-migrate @ 16607]
Mark Huetsch <markhuetsch>
parents: 14014
diff changeset
669
14049
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
670 bytes = 0;
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
671 buf = g_newa(guint8, MAX_PACKET_SIZE);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
672 cursor = buf;
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
673 /* QQ TCP packet has two bytes in the beginning to define packet length
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
674 * so I leave room here for size */
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
675 if (qd->use_tcp)
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
676 bytes += create_packet_w(buf, &cursor, 0x0000);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
677 bytes += create_packet_b(buf, &cursor, QQ_PACKET_TAG);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
678 bytes += create_packet_w(buf, &cursor, *(guint16 *) client);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
679 bytes += create_packet_w(buf, &cursor, *(guint16 *) cmd);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
680 bytes += create_packet_w(buf, &cursor, *(guint16 *) seq);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
681 bytes += create_packet_dw(buf, &cursor, uid);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
682 if (body) {
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
683 bytes += create_packet_data(buf, &cursor, body, len);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
684 g_free(body);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
685 }
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
686 bytes += create_packet_b(buf, &cursor, QQ_PACKET_TAIL);
14015
9516a796ed5f [gaim-migrate @ 16607]
Mark Huetsch <markhuetsch>
parents: 14014
diff changeset
687
14049
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
688 gaim_debug(GAIM_DEBUG_INFO, "QQ", "Custom packet of length %i\n", bytes);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
689 _qq_show_packet("Outgoing custom packet", buf, bytes);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
690
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
691 _qq_send_packet(gc, buf, bytes, *(guint16 *) cmd);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
692 g_free(client);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
693 g_free(cmd);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
694 g_free(seq);
14015
9516a796ed5f [gaim-migrate @ 16607]
Mark Huetsch <markhuetsch>
parents: 14014
diff changeset
695 }
9516a796ed5f [gaim-migrate @ 16607]
Mark Huetsch <markhuetsch>
parents: 14014
diff changeset
696
9516a796ed5f [gaim-migrate @ 16607]
Mark Huetsch <markhuetsch>
parents: 14014
diff changeset
697 /* send a custom packet to the server - for protocol testing */
9516a796ed5f [gaim-migrate @ 16607]
Mark Huetsch <markhuetsch>
parents: 14014
diff changeset
698 static void _qq_menu_send_custom_packet(GaimPluginAction *action)
9516a796ed5f [gaim-migrate @ 16607]
Mark Huetsch <markhuetsch>
parents: 14014
diff changeset
699 {
14049
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
700 GaimConnection *gc;
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
701 GaimRequestFields *fields;
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
702 GaimRequestFieldGroup *group;
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
703 GaimRequestField *field;
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
704 gchar *tmp;
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
705 qq_data *qd;
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
706
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
707 gc = (GaimConnection *) action->context;
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
708 qd = (qq_data *) gc->proto_data;
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
709 g_return_if_fail(gc != NULL && qd != NULL);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
710
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
711 fields = gaim_request_fields_new();
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
712 group = gaim_request_field_group_new(_("Packet Elements"));
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
713 gaim_request_fields_add_group(fields, group);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
714 tmp = g_strdup_printf("%04X", QQ_CLIENT);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
715 field = gaim_request_field_string_new("client", _("Client (hex)"), tmp, FALSE);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
716 g_free(tmp);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
717 gaim_request_field_group_add_field(group, field);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
718 field = gaim_request_field_string_new("cmd", _("Command (hex)"), "0000", FALSE);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
719 gaim_request_field_group_add_field(group, field);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
720 field = gaim_request_field_string_new("seq", _("Sequence (hex)"), "0000", FALSE);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
721 gaim_request_field_group_add_field(group, field);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
722 tmp = g_strdup_printf("%u", qd->uid);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
723 field = gaim_request_field_string_new("uid", _("QQ Number (decimal)"), tmp, FALSE);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
724 g_free(tmp);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
725 gaim_request_field_group_add_field(group, field);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
726 field = gaim_request_field_string_new("body", _("Body (hex)"), NULL, FALSE);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
727 gaim_request_field_group_add_field(group, field);
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
728
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
729 gaim_request_fields(gc, _("Send a custom packet"),
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
730 _("Send a custom packet"), NULL, fields,
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
731 _("Send"), G_CALLBACK(_qq_send_custom_packet_cb),
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
732 _("Cancel"), NULL,
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
733 gc);
14015
9516a796ed5f [gaim-migrate @ 16607]
Mark Huetsch <markhuetsch>
parents: 14014
diff changeset
734 }
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
735
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
736 /* protocol related menus */
14021
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
737 static GList *_qq_actions(GaimPlugin *plugin, gpointer context)
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
738 {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
739 GList *m;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
740 GaimPluginAction *act;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
741
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
742 m = NULL;
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
743 act = gaim_plugin_action_new(_("Modify My Information"), _qq_menu_modify_my_info);
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
744 m = g_list_append(m, act);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
745
14014
9c5790820ac6 [gaim-migrate @ 16606]
Mark Huetsch <markhuetsch>
parents: 13989
diff changeset
746 act = gaim_plugin_action_new(_("Change Password"), _qq_menu_change_password);
9c5790820ac6 [gaim-migrate @ 16606]
Mark Huetsch <markhuetsch>
parents: 13989
diff changeset
747 m = g_list_append(m, act);
9c5790820ac6 [gaim-migrate @ 16606]
Mark Huetsch <markhuetsch>
parents: 13989
diff changeset
748
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
749 act = gaim_plugin_action_new(_("Show Login Information"), _qq_menu_show_login_info);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
750 m = g_list_append(m, act);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
751
14049
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
752 /*
14015
9516a796ed5f [gaim-migrate @ 16607]
Mark Huetsch <markhuetsch>
parents: 14014
diff changeset
753 act = gaim_plugin_action_new(_("Send Custom Packet"), _qq_menu_send_custom_packet);
9516a796ed5f [gaim-migrate @ 16607]
Mark Huetsch <markhuetsch>
parents: 14014
diff changeset
754 m = g_list_append(m, act);
9516a796ed5f [gaim-migrate @ 16607]
Mark Huetsch <markhuetsch>
parents: 14014
diff changeset
755 */
9516a796ed5f [gaim-migrate @ 16607]
Mark Huetsch <markhuetsch>
parents: 14014
diff changeset
756
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
757 /* XXX consider re-enabling this
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
758 act = gaim_plugin_action_new(_("Show System Message"), _qq_menu_show_system_message);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
759 m = g_list_append(m, act);
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
760 */
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
761
14049
8294485b79db [gaim-migrate @ 16662]
Mark Huetsch <markhuetsch>
parents: 14040
diff changeset
762 /*
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
763 act = gaim_plugin_action_new(_("Qun: Search a permanent Qun"), _qq_menu_search_or_add_permanent_group);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
764 m = g_list_append(m, act);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
765
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
766 act = gaim_plugin_action_new(_("Qun: Create a permanent Qun"), _qq_menu_create_permanent_group);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
767 m = g_list_append(m, act);
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
768 */
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
769
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
770 return m;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
771 }
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
772
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
773 /* chat-related (QQ Qun) menu shown up with right-click */
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
774 /* XXX re-enable this
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
775 static GList *_qq_chat_menu(GaimBlistNode *node)
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
776 {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
777 GList *m;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
778 GaimMenuAction *act;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
779
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
780 m = NULL;
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
781 act = gaim_menu_action_new(_("Exit this QQ Qun"), GAIM_CALLBACK(_qq_menu_unsubscribe_group), NULL, NULL);
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
782 m = g_list_append(m, act);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
783
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
784 act = gaim_menu_action_new(_("Show Details"), GAIM_CALLBACK(_qq_menu_manage_group), NULL, NULL);
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
785 m = g_list_append(m, act);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
786
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
787 return m;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
788 }
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
789 */
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
790 /* buddy-related menu shown up with right-click */
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
791 /* XXX re-enable this
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
792 static GList *_qq_buddy_menu(GaimBlistNode * node)
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
793 {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
794 GList *m;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
795
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
796 if(GAIM_BLIST_NODE_IS_CHAT(node))
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
797 return _qq_chat_menu(node);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
798
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
799 m = NULL;
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
800 */
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
801 /* TODO : not working, temp commented out by gfhuang
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
802
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
803 act = gaim_menu_action_new(_("Block this buddy"), GAIM_CALLBACK(_qq_menu_block_buddy), NULL, NULL); //add NULL by gfhuang
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
804 m = g_list_append(m, act);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
805 // if (q_bud && is_online(q_bud->status)) {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
806 act = gaim_menu_action_new(_("Send File"), GAIM_CALLBACK(_qq_menu_send_file), NULL, NULL); //add NULL by gfhuang
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
807 m = g_list_append(m, act);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
808 // }
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
809 */
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
810 /*
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
811 return m;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
812 }
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
813 */
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
814
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
815
14021
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
816 static void _qq_keep_alive(GaimConnection *gc)
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
817 {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
818 qq_group *group;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
819 qq_data *qd;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
820 GList *list;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
821
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
822 g_return_if_fail(gc != NULL);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
823 if (NULL == (qd = (qq_data *) gc->proto_data))
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
824 return;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
825
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
826 list = qd->groups;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
827 while (list != NULL) {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
828 group = (qq_group *) list->data;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
829 if (group->my_status == QQ_GROUP_MEMBER_STATUS_IS_MEMBER ||
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
830 group->my_status == QQ_GROUP_MEMBER_STATUS_IS_ADMIN)
14021
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
831 /* no need to get info time and time again, online members enough */
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
832 qq_send_cmd_group_get_online_member(gc, group);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
833
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
834 list = list->next;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
835 }
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
836
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
837 qq_send_packet_keep_alive(gc);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
838
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
839 }
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
840
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
841 /* convert chat nickname to qq-uid to get this buddy info */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
842 /* who is the nickname of buddy in QQ chat-room (Qun) */
14021
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
843 static void _qq_get_chat_buddy_info(GaimConnection *gc, gint channel, const gchar *who)
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
844 {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
845 gchar *gaim_name;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
846 g_return_if_fail(gc != NULL && gc->proto_data != NULL && who != NULL);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
847
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
848 gaim_name = qq_group_find_member_by_channel_and_nickname(gc, channel, who);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
849 if (gaim_name != NULL)
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
850 _qq_get_info(gc, gaim_name);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
851 }
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
852
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
853 /* convert chat nickname to qq-uid to invite individual IM to buddy */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
854 /* who is the nickname of buddy in QQ chat-room (Qun) */
14021
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
855 static gchar *_qq_get_chat_buddy_real_name(GaimConnection *gc, gint channel, const gchar *who)
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
856 {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
857 g_return_val_if_fail(gc != NULL && gc->proto_data != NULL && who != NULL, NULL);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
858 return qq_group_find_member_by_channel_and_nickname(gc, channel, who);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
859 }
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
860
14021
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
861 void qq_function_not_implemented(GaimConnection *gc)
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
862 {
14021
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
863 gaim_notify_warning(gc, NULL,
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
864 _("This function has not be implemented yet"), _("Please wait for new version"));
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
865 }
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
866
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
867 GaimPlugin *my_protocol = NULL;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
868 static GaimPluginProtocolInfo prpl_info = {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
869 OPT_PROTO_CHAT_TOPIC | OPT_PROTO_USE_POINTSIZE,
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
870 NULL, /* user_splits */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
871 NULL, /* protocol_options */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
872 NO_BUDDY_ICONS, /* icon_spec */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
873 _qq_list_icon, /* list_icon */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
874 _qq_list_emblems, /* list_emblems */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
875 _qq_status_text, /* status_text */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
876 _qq_tooltip_text, /* tooltip_text */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
877 _qq_away_states, /* away_states */
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
878 NULL, /* blist_node_menu */
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
879 qq_chat_info, /* chat_info */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
880 NULL, /* chat_info_defaults */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
881 _qq_login, /* login */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
882 _qq_close, /* close */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
883 _qq_send_im, /* send_im */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
884 NULL, /* set_info */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
885 NULL, /* send_typing */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
886 _qq_get_info, /* get_info */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
887 _qq_set_away, /* set_away */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
888 NULL, /* set_idle */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
889 NULL, /* change_passwd */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
890 qq_add_buddy, /* add_buddy */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
891 NULL, /* add_buddies */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
892 qq_remove_buddy, /* remove_buddy */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
893 NULL, /* remove_buddies */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
894 NULL, /* add_permit */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
895 NULL, /* add_deny */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
896 NULL, /* rem_permit */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
897 NULL, /* rem_deny */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
898 NULL, /* set_permit_deny */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
899 qq_group_join, /* join_chat */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
900 NULL, /* reject chat invite */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
901 NULL, /* get_chat_name */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
902 NULL, /* chat_invite */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
903 NULL, /* chat_leave */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
904 NULL, /* chat_whisper */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
905 _qq_chat_send, /* chat_send */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
906 _qq_keep_alive, /* keepalive */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
907 NULL, /* register_user */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
908 _qq_get_chat_buddy_info, /* get_cb_info */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
909 NULL, /* get_cb_away */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
910 NULL, /* alias_buddy */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
911 NULL, /* group_buddy */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
912 NULL, /* rename_group */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
913 NULL, /* buddy_free */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
914 NULL, /* convo_closed */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
915 NULL, /* normalize */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
916 NULL, /* set_buddy_icon */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
917 NULL, /* remove_group */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
918 _qq_get_chat_buddy_real_name, /* get_cb_real_name */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
919 NULL, /* set_chat_topic */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
920 NULL, /* find_blist_chat */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
921 qq_roomlist_get_list, /* roomlist_get_list */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
922 qq_roomlist_cancel, /* roomlist_cancel */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
923 NULL, /* roomlist_expand_category */
13989
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
924 NULL, /* can_receive_file */
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
925 qq_send_file, /* send_file */
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
926 NULL, /* new xfer */
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
927 NULL, /* offline_message */
16102b9c5c4a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch>
parents: 13870
diff changeset
928 NULL, /* GaimWhiteboardPrplOps */
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
929 };
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
930
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
931 static GaimPluginInfo info = {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
932 GAIM_PLUGIN_MAGIC,
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
933 GAIM_MAJOR_VERSION,
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
934 GAIM_MINOR_VERSION,
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
935 GAIM_PLUGIN_PROTOCOL, /**< type */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
936 NULL, /**< ui_requirement */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
937 0, /**< flags */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
938 NULL, /**< dependencies */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
939 GAIM_PRIORITY_DEFAULT, /**< priority */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
940
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
941 "prpl-qq", /**< id */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
942 "QQ", /**< name */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
943 VERSION, /**< version */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
944 /** summary */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
945 N_("QQ Protocol Plugin"),
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
946 /** description */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
947 N_("QQ Protocol Plugin"),
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
948 OPENQ_AUTHOR, /**< author */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
949 OPENQ_WEBSITE, /**< homepage */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
950
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
951 NULL, /**< load */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
952 NULL, /**< unload */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
953 NULL, /**< destroy */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
954
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
955 NULL, /**< ui_info */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
956 &prpl_info, /**< extra_info */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
957 NULL, /**< prefs_info */
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
958 _qq_actions
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
959 };
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
960
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
961
14021
ef8490f9e823 [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch>
parents: 14017
diff changeset
962 static void init_plugin(GaimPlugin *plugin)
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
963 {
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
964 GaimAccountOption *option;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
965
14040
80891029f5dd [gaim-migrate @ 16644]
Mark Doliner <mark@kingant.net>
parents: 14035
diff changeset
966 bindtextdomain(PACKAGE, LOCALEDIR);
80891029f5dd [gaim-migrate @ 16644]
Mark Doliner <mark@kingant.net>
parents: 14035
diff changeset
967 bind_textdomain_codeset(PACKAGE, "UTF-8");
13870
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
968
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
969 option = gaim_account_option_bool_new(_("Login in TCP"), "use_tcp", FALSE);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
970 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
971
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
972 option = gaim_account_option_bool_new(_("Login Hidden"), "hidden", FALSE);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
973 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
974
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
975 option = gaim_account_option_string_new(_("QQ Server"), "server", NULL);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
976 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
977
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
978 option = gaim_account_option_string_new(_("QQ Port"), "port", NULL);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
979 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
980
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
981 my_protocol = plugin;
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
982
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
983 gaim_prefs_add_none("/plugins/prpl/qq");
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
984 gaim_prefs_add_bool("/plugins/prpl/qq/show_status_by_icon", TRUE);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
985 gaim_prefs_add_bool("/plugins/prpl/qq/show_fake_video", FALSE);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
986 gaim_prefs_add_string("/plugins/prpl/qq/datadir", DATADIR);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
987 gaim_prefs_add_bool("/plugins/prpl/qq/prompt_for_missing_packet", TRUE);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
988 gaim_prefs_add_bool("/plugins/prpl/qq/prompt_group_msg_on_recv", TRUE);
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
989 }
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
990
983fd420e86b [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch>
parents:
diff changeset
991 GAIM_INIT_PLUGIN(qq, init_plugin, info);