Mercurial > pidgin.yaz
comparison libgaim/protocols/qq/qq.c @ 15076:2c93b0620065
[gaim-migrate @ 17859]
Fix win32 build for buddy icon changes.
Also a couple leak fixes.
There really isn't that much actually changed, but also I did some whitespace cleanup at the same time.
committer: Tailor Script <tailor@pidgin.im>
author | Daniel Atallah <daniel.atallah@gmail.com> |
---|---|
date | Thu, 30 Nov 2006 17:45:28 +0000 |
parents | 322d6b5472a4 |
children | c8957b9c6202 |
comparison
equal
deleted
inserted
replaced
15075:346faf2a5acd | 15076:2c93b0620065 |
---|---|
93 static void _qq_login(GaimAccount *account) | 93 static void _qq_login(GaimAccount *account) |
94 { | 94 { |
95 const gchar *qq_server, *qq_port; | 95 const gchar *qq_server, *qq_port; |
96 qq_data *qd; | 96 qq_data *qd; |
97 GaimConnection *gc; | 97 GaimConnection *gc; |
98 GaimPresence *presence; | 98 GaimPresence *presence; |
99 gboolean use_tcp; | 99 gboolean use_tcp; |
100 | 100 |
101 g_return_if_fail(account != NULL); | 101 g_return_if_fail(account != NULL); |
102 | 102 |
103 gc = gaim_account_get_connection(account); | 103 gc = gaim_account_get_connection(account); |
110 gc->proto_data = qd; | 110 gc->proto_data = qd; |
111 | 111 |
112 qq_server = gaim_account_get_string(account, "server", NULL); | 112 qq_server = gaim_account_get_string(account, "server", NULL); |
113 qq_port = gaim_account_get_string(account, "port", NULL); | 113 qq_port = gaim_account_get_string(account, "port", NULL); |
114 use_tcp = gaim_account_get_bool(account, "use_tcp", FALSE); | 114 use_tcp = gaim_account_get_bool(account, "use_tcp", FALSE); |
115 presence = gaim_account_get_presence(account); | 115 presence = gaim_account_get_presence(account); |
116 | 116 |
117 qd->use_tcp = use_tcp; | 117 qd->use_tcp = use_tcp; |
118 | 118 |
119 if(gaim_presence_is_status_primitive_active(presence, GAIM_STATUS_INVISIBLE)) { | 119 if(gaim_presence_is_status_primitive_active(presence, GAIM_STATUS_INVISIBLE)) { |
120 qd->login_mode = QQ_LOGIN_MODE_HIDDEN; | 120 qd->login_mode = QQ_LOGIN_MODE_HIDDEN; |
125 qd->login_mode = QQ_LOGIN_MODE_NORMAL; | 125 qd->login_mode = QQ_LOGIN_MODE_NORMAL; |
126 } | 126 } |
127 | 127 |
128 if (qq_server == NULL || strlen(qq_server) == 0) | 128 if (qq_server == NULL || strlen(qq_server) == 0) |
129 qq_server = use_tcp ? | 129 qq_server = use_tcp ? |
130 tcp_server_list[random() % tcp_server_amount] : | 130 tcp_server_list[random() % tcp_server_amount] : |
131 udp_server_list[random() % udp_server_amount]; | 131 udp_server_list[random() % udp_server_amount]; |
132 | 132 |
133 if (qq_port == NULL || strtol(qq_port, NULL, 10) == 0) | 133 if (qq_port == NULL || strtol(qq_port, NULL, 10) == 0) |
134 qq_port = use_tcp ? QQ_TCP_QUERY_PORT : QQ_UDP_PORT; | 134 qq_port = use_tcp ? QQ_TCP_QUERY_PORT : QQ_UDP_PORT; |
135 | 135 |
136 gaim_connection_update_progress(gc, _("Connecting"), 0, QQ_CONNECT_STEPS); | 136 gaim_connection_update_progress(gc, _("Connecting"), 0, QQ_CONNECT_STEPS); |
137 | 137 |
138 if (qq_connect(account, qq_server, strtol(qq_port, NULL, 10), use_tcp, FALSE) < 0) | 138 if (qq_connect(account, qq_server, strtol(qq_port, NULL, 10), use_tcp, FALSE) < 0) |
139 gaim_connection_error(gc, _("Unable to connect.")); | 139 gaim_connection_error(gc, _("Unable to connect.")); |
140 } | 140 } |
141 | 141 |
142 /* directly goes for qq_disconnect */ | 142 /* directly goes for qq_disconnect */ |
182 case QQ_BUDDY_ONLINE_INVISIBLE: | 182 case QQ_BUDDY_ONLINE_INVISIBLE: |
183 g_string_append(status, "Invisible"); | 183 g_string_append(status, "Invisible"); |
184 break; | 184 break; |
185 default: | 185 default: |
186 g_string_printf(status, "Unknown-%d", q_bud->status); | 186 g_string_printf(status, "Unknown-%d", q_bud->status); |
187 } | 187 } |
188 | 188 |
189 return g_string_free(status, FALSE); | 189 return g_string_free(status, FALSE); |
190 } | 190 } |
191 | 191 |
192 | 192 |
203 | 203 |
204 if (GAIM_BUDDY_IS_ONLINE(b) && q_bud != NULL) | 204 if (GAIM_BUDDY_IS_ONLINE(b) && q_bud != NULL) |
205 { | 205 { |
206 ip_str = gen_ip_str(q_bud->ip); | 206 ip_str = gen_ip_str(q_bud->ip); |
207 if (strlen(ip_str) != 0) { | 207 if (strlen(ip_str) != 0) { |
208 g_string_append_printf(tooltip, "\n<b>%s Address:</b> %s:%d", | 208 g_string_append_printf(tooltip, "\n<b>%s Address:</b> %s:%d", |
209 (q_bud->comm_flag & QQ_COMM_FLAG_TCP_MODE) | 209 (q_bud->comm_flag & QQ_COMM_FLAG_TCP_MODE) |
210 ? "TCP" : "UDP", ip_str, q_bud->port); | 210 ? "TCP" : "UDP", ip_str, q_bud->port); |
211 } | 211 } |
212 g_free(ip_str); | 212 g_free(ip_str); |
213 g_string_append_printf(tooltip, "\n<b>Age:</b> %d", q_bud->age); | 213 g_string_append_printf(tooltip, "\n<b>Age:</b> %d", q_bud->age); |
214 switch (q_bud->gender) { | 214 switch (q_bud->gender) { |
215 case QQ_BUDDY_GENDER_GG: | 215 case QQ_BUDDY_GENDER_GG: |
216 g_string_append(tooltip, "\n<b>Gender:</b> Male"); | 216 g_string_append(tooltip, "\n<b>Gender:</b> Male"); |
217 break; | 217 break; |
218 case QQ_BUDDY_GENDER_MM: | 218 case QQ_BUDDY_GENDER_MM: |
219 g_string_append(tooltip, "\n<b>Gender:</b> Female"); | 219 g_string_append(tooltip, "\n<b>Gender:</b> Female"); |
220 break; | 220 break; |
221 case QQ_BUDDY_GENDER_UNKNOWN: | 221 case QQ_BUDDY_GENDER_UNKNOWN: |
222 g_string_append(tooltip, "\n<b>Gender:</b> Unknown"); | 222 g_string_append(tooltip, "\n<b>Gender:</b> Unknown"); |
223 break; | 223 break; |
224 default: | 224 default: |
225 g_string_append_printf(tooltip, "\n<b>Gender:</b> ERROR(%d)", q_bud->gender); | 225 g_string_append_printf(tooltip, "\n<b>Gender:</b> ERROR(%d)", q_bud->gender); |
226 } | 226 } |
227 /* For debugging */ | 227 /* For debugging */ |
228 /* | 228 /* |
229 g_string_append_printf(tooltip, "\n<b>Flag:</b> %01x", q_bud->flag1); | 229 g_string_append_printf(tooltip, "\n<b>Flag:</b> %01x", q_bud->flag1); |
230 g_string_append_printf(tooltip, "\n<b>CommFlag:</b> %01x", q_bud->comm_flag); | 230 g_string_append_printf(tooltip, "\n<b>CommFlag:</b> %01x", q_bud->comm_flag); |
231 g_string_append_printf(tooltip, "\n<b>Client:</b> %04x", q_bud->client_version); | 231 g_string_append_printf(tooltip, "\n<b>Client:</b> %04x", q_bud->client_version); |
232 */ | 232 */ |
233 } | 233 } |
234 } | 234 } |
235 | 235 |
236 /* we can show tiny icons on the four corners of buddy icon, */ | 236 /* we can show tiny icons on the four corners of buddy icon, */ |
237 static void _qq_list_emblems(GaimBuddy *b, const char **se, const char **sw, const char **nw, const char **ne) | 237 static void _qq_list_emblems(GaimBuddy *b, const char **se, const char **sw, const char **nw, const char **ne) |
238 { | 238 { |
239 /* each char** are refering to a filename in pixmaps/gaim/status/default/ */ | 239 /* each char** are refering to a filename in pixmaps/gaim/status/default/ */ |
240 | 240 |
241 qq_buddy *q_bud = b->proto_data; | 241 qq_buddy *q_bud = b->proto_data; |
242 const char *emblems[4] = { NULL, NULL, NULL, NULL }; | 242 const char *emblems[4] = { NULL, NULL, NULL, NULL }; |
243 int i = 1; | 243 int i = 1; |
244 | 244 |
245 if (q_bud == NULL) { | 245 if (q_bud == NULL) { |
246 emblems[0] = "offline"; | 246 emblems[0] = "offline"; |
247 } else { | 247 } else { |
248 if (q_bud->status == QQ_BUDDY_ONLINE_AWAY) | 248 if (q_bud->status == QQ_BUDDY_ONLINE_AWAY) |
249 emblems[i++] = "away"; | 249 emblems[i++] = "away"; |
250 /* | 250 /* |
251 if (q_bud->comm_flag & QQ_COMM_FLAG_QQ_MEMBER) | 251 if (q_bud->comm_flag & QQ_COMM_FLAG_QQ_MEMBER) |
252 emblems[i++] = "qq_member"; | 252 emblems[i++] = "qq_member"; |
253 */ | 253 */ |
254 if (q_bud->comm_flag & QQ_COMM_FLAG_BIND_MOBILE) | 254 if (q_bud->comm_flag & QQ_COMM_FLAG_BIND_MOBILE) |
255 emblems[i++] = "wireless"; | 255 emblems[i++] = "wireless"; |
256 /* | 256 /* |
257 if (q_bud->comm_flag & QQ_COMM_FLAG_VIDEO) | 257 if (q_bud->comm_flag & QQ_COMM_FLAG_VIDEO) |
258 emblems[i%4] = "video"; | 258 emblems[i%4] = "video"; |
259 */ | 259 */ |
260 | 260 |
261 } | 261 } |
262 | 262 |
263 *se = emblems[0]; | 263 *se = emblems[0]; |
264 *sw = emblems[1]; | 264 *sw = emblems[1]; |
265 *nw = emblems[2]; | 265 *nw = emblems[2]; |
266 *ne = emblems[3]; | 266 *ne = emblems[3]; |
267 | 267 |
268 return; | 268 return; |
269 } | 269 } |
270 | 270 |
271 /* QQ away status (used to initiate QQ away packet) */ | 271 /* QQ away status (used to initiate QQ away packet) */ |
272 static GList *_qq_away_states(GaimAccount *ga) | 272 static GList *_qq_away_states(GaimAccount *ga) |
273 { | 273 { |
274 GaimStatusType *status; | 274 GaimStatusType *status; |
275 GList *types = NULL; | 275 GList *types = NULL; |
276 | 276 |
277 status = gaim_status_type_new_full(GAIM_STATUS_AVAILABLE, | 277 status = gaim_status_type_new_full(GAIM_STATUS_AVAILABLE, |
278 "available", _("QQ: Available"), FALSE, TRUE, FALSE); | 278 "available", _("QQ: Available"), FALSE, TRUE, FALSE); |
279 types = g_list_append(types, status); | 279 types = g_list_append(types, status); |
280 | 280 |
281 status = gaim_status_type_new_full(GAIM_STATUS_AWAY, | 281 status = gaim_status_type_new_full(GAIM_STATUS_AWAY, |
282 "away", _("QQ: Away"), FALSE, TRUE, FALSE); | 282 "away", _("QQ: Away"), FALSE, TRUE, FALSE); |
283 types = g_list_append(types, status); | 283 types = g_list_append(types, status); |
284 | 284 |
285 status = gaim_status_type_new_full(GAIM_STATUS_INVISIBLE, | 285 status = gaim_status_type_new_full(GAIM_STATUS_INVISIBLE, |
286 "invisible", _("QQ: Invisible"), FALSE, TRUE, FALSE); | 286 "invisible", _("QQ: Invisible"), FALSE, TRUE, FALSE); |
287 types = g_list_append(types, status); | 287 types = g_list_append(types, status); |
288 | 288 |
289 status = gaim_status_type_new_full(GAIM_STATUS_OFFLINE, | 289 status = gaim_status_type_new_full(GAIM_STATUS_OFFLINE, |
290 "offline", _("QQ: Offline"), FALSE, TRUE, FALSE); | 290 "offline", _("QQ: Offline"), FALSE, TRUE, FALSE); |
291 types = g_list_append(types, status); | 291 types = g_list_append(types, status); |
292 | 292 |
293 return types; | 293 return types; |
294 } | 294 } |
295 | 295 |
296 /* initiate QQ away with proper change_status packet */ | 296 /* initiate QQ away with proper change_status packet */ |
566 { | 566 { |
567 GList *m; | 567 GList *m; |
568 | 568 |
569 if(GAIM_BLIST_NODE_IS_CHAT(node)) | 569 if(GAIM_BLIST_NODE_IS_CHAT(node)) |
570 return _qq_chat_menu(node); | 570 return _qq_chat_menu(node); |
571 | 571 |
572 m = NULL; | 572 m = NULL; |
573 return m; | 573 return m; |
574 } | 574 } |
575 | 575 |
576 /* TODO : not working, temp commented out by gfhuang | 576 /* TODO : not working, temp commented out by gfhuang |
577 | 577 |
578 act = gaim_menu_action_new(_("Block this buddy"), GAIM_CALLBACK(_qq_menu_block_buddy), NULL, NULL); //add NULL by gfhuang | 578 act = gaim_menu_action_new(_("Block this buddy"), GAIM_CALLBACK(_qq_menu_block_buddy), NULL, NULL); //add NULL by gfhuang |
579 m = g_list_append(m, act); | 579 m = g_list_append(m, act); |
580 // if (q_bud && is_online(q_bud->status)) { | 580 // if (q_bud && is_online(q_bud->status)) { |
581 act = gaim_menu_action_new(_("Send File"), GAIM_CALLBACK(_qq_menu_send_file), NULL, NULL); //add NULL by gfhuang | 581 act = gaim_menu_action_new(_("Send File"), GAIM_CALLBACK(_qq_menu_send_file), NULL, NULL); //add NULL by gfhuang |
602 group = (qq_group *) list->data; | 602 group = (qq_group *) list->data; |
603 if (group->my_status == QQ_GROUP_MEMBER_STATUS_IS_MEMBER || | 603 if (group->my_status == QQ_GROUP_MEMBER_STATUS_IS_MEMBER || |
604 group->my_status == QQ_GROUP_MEMBER_STATUS_IS_ADMIN) | 604 group->my_status == QQ_GROUP_MEMBER_STATUS_IS_ADMIN) |
605 /* no need to get info time and time again, online members enough */ | 605 /* no need to get info time and time again, online members enough */ |
606 qq_send_cmd_group_get_online_members(gc, group); | 606 qq_send_cmd_group_get_online_members(gc, group); |
607 | 607 |
608 list = list->next; | 608 list = list->next; |
609 } | 609 } |
610 | 610 |
611 qq_send_packet_keep_alive(gc); | 611 qq_send_packet_keep_alive(gc); |
612 | 612 |
676 _qq_get_chat_buddy_info, /* get_cb_info */ | 676 _qq_get_chat_buddy_info, /* get_cb_info */ |
677 NULL, /* get_cb_away */ | 677 NULL, /* get_cb_away */ |
678 NULL, /* alias_buddy */ | 678 NULL, /* alias_buddy */ |
679 NULL, /* group_buddy */ | 679 NULL, /* group_buddy */ |
680 NULL, /* rename_group */ | 680 NULL, /* rename_group */ |
681 NULL, /* buddy_free */ | 681 NULL, /* buddy_free */ |
682 NULL, /* convo_closed */ | 682 NULL, /* convo_closed */ |
683 NULL, /* normalize */ | 683 NULL, /* normalize */ |
684 qq_set_my_buddy_icon, /* set_buddy_icon */ | 684 qq_set_my_buddy_icon, /* set_buddy_icon */ |
685 NULL, /* remove_group */ | 685 NULL, /* remove_group */ |
686 _qq_get_chat_buddy_real_name, /* get_cb_real_name */ | 686 _qq_get_chat_buddy_real_name, /* get_cb_real_name */ |
689 qq_roomlist_get_list, /* roomlist_get_list */ | 689 qq_roomlist_get_list, /* roomlist_get_list */ |
690 qq_roomlist_cancel, /* roomlist_cancel */ | 690 qq_roomlist_cancel, /* roomlist_cancel */ |
691 NULL, /* roomlist_expand_category */ | 691 NULL, /* roomlist_expand_category */ |
692 NULL, /* can_receive_file */ | 692 NULL, /* can_receive_file */ |
693 qq_send_file, /* send_file */ | 693 qq_send_file, /* send_file */ |
694 NULL, /* new xfer */ | 694 NULL, /* new xfer */ |
695 NULL, /* offline_message */ | 695 NULL, /* offline_message */ |
696 NULL, /* GaimWhiteboardPrplOps */ | 696 NULL, /* GaimWhiteboardPrplOps */ |
697 NULL, /* send_raw */ | 697 NULL, /* send_raw */ |
698 }; | 698 }; |
699 | 699 |