Mercurial > pidgin.yaz
comparison libpurple/protocols/qq/group_opt.c @ 15823:32c366eeeb99
sed -ie 's/gaim/purple/g'
author | Sean Egan <seanegan@gmail.com> |
---|---|
date | Mon, 19 Mar 2007 07:01:17 +0000 |
parents | 5fe8042783c1 |
children | 08db93bbd798 |
comparison
equal
deleted
inserted
replaced
15822:84b0f9b23ede | 15823:32c366eeeb99 |
---|---|
1 /** | 1 /** |
2 * @file group_opt.c | 2 * @file group_opt.c |
3 * | 3 * |
4 * gaim | 4 * purple |
5 * | 5 * |
6 * Gaim is the legal property of its developers, whose names are too numerous | 6 * Purple is the legal property of its developers, whose names are too numerous |
7 * to list here. Please refer to the COPYRIGHT file distributed with this | 7 * to list here. Please refer to the COPYRIGHT file distributed with this |
8 * source distribution. | 8 * source distribution. |
9 * | 9 * |
10 * This program is free software; you can redistribute it and/or modify | 10 * This program is free software; you can redistribute it and/or modify |
11 * it under the terms of the GNU General Public License as published by | 11 * it under the terms of the GNU General Public License as published by |
77 for (i = 0; list[i] < 0xffffffff; i++) {; | 77 for (i = 0; list[i] < 0xffffffff; i++) {; |
78 } | 78 } |
79 _quick_sort((gint *) list, 0, i - 1); | 79 _quick_sort((gint *) list, 0, i - 1); |
80 } | 80 } |
81 | 81 |
82 static void _qq_group_member_opt(GaimConnection *gc, qq_group *group, gint operation, guint32 *members) | 82 static void _qq_group_member_opt(PurpleConnection *gc, qq_group *group, gint operation, guint32 *members) |
83 { | 83 { |
84 guint8 *data, *cursor; | 84 guint8 *data, *cursor; |
85 gint i, count, data_len; | 85 gint i, count, data_len; |
86 g_return_if_fail(members != NULL); | 86 g_return_if_fail(members != NULL); |
87 | 87 |
118 void qq_group_search_application_with_struct(group_member_opt *g) | 118 void qq_group_search_application_with_struct(group_member_opt *g) |
119 { | 119 { |
120 g_return_if_fail(g != NULL && g->gc != NULL && g->member > 0); | 120 g_return_if_fail(g != NULL && g->gc != NULL && g->member > 0); |
121 | 121 |
122 qq_send_packet_get_info(g->gc, g->member, TRUE); /* we wanna see window */ | 122 qq_send_packet_get_info(g->gc, g->member, TRUE); /* we wanna see window */ |
123 gaim_request_action | 123 purple_request_action |
124 (g->gc, NULL, _("Do you wanna approve the request?"), "", 2, g, | 124 (g->gc, NULL, _("Do you wanna approve the request?"), "", 2, g, |
125 2, _("Reject"), | 125 2, _("Reject"), |
126 G_CALLBACK(qq_group_reject_application_with_struct), | 126 G_CALLBACK(qq_group_reject_application_with_struct), |
127 _("Approve"), G_CALLBACK(qq_group_approve_application_with_struct)); | 127 _("Approve"), G_CALLBACK(qq_group_approve_application_with_struct)); |
128 } | 128 } |
133 g_return_if_fail(g != NULL && g->gc != NULL && g->member > 0); | 133 g_return_if_fail(g != NULL && g->gc != NULL && g->member > 0); |
134 | 134 |
135 msg1 = g_strdup_printf(_("You rejected %d's request"), g->member); | 135 msg1 = g_strdup_printf(_("You rejected %d's request"), g->member); |
136 msg2 = g_strdup(_("Input your reason:")); | 136 msg2 = g_strdup(_("Input your reason:")); |
137 | 137 |
138 gaim_request_input(g->gc, NULL, msg1, msg2, | 138 purple_request_input(g->gc, NULL, msg1, msg2, |
139 _("Sorry, you are not my type..."), TRUE, FALSE, | 139 _("Sorry, you are not my type..."), TRUE, FALSE, |
140 NULL, _("Send"), | 140 NULL, _("Send"), |
141 G_CALLBACK(_qq_group_reject_application_real), | 141 G_CALLBACK(_qq_group_reject_application_real), |
142 _("Cancel"), G_CALLBACK(_qq_group_do_nothing_with_struct), g); | 142 _("Cancel"), G_CALLBACK(_qq_group_do_nothing_with_struct), g); |
143 | 143 |
154 qq_send_cmd_group_auth(g->gc, group, QQ_GROUP_AUTH_REQUEST_APPROVE, g->member, ""); | 154 qq_send_cmd_group_auth(g->gc, group, QQ_GROUP_AUTH_REQUEST_APPROVE, g->member, ""); |
155 qq_group_find_or_add_member(g->gc, group, g->member); | 155 qq_group_find_or_add_member(g->gc, group, g->member); |
156 g_free(g); | 156 g_free(g); |
157 } | 157 } |
158 | 158 |
159 void qq_group_modify_members(GaimConnection *gc, qq_group *group, guint32 *new_members) | 159 void qq_group_modify_members(PurpleConnection *gc, qq_group *group, guint32 *new_members) |
160 { | 160 { |
161 guint32 *old_members, *del_members, *add_members; | 161 guint32 *old_members, *del_members, *add_members; |
162 qq_buddy *q_bud; | 162 qq_buddy *q_bud; |
163 qq_data *qd; | 163 qq_data *qd; |
164 gint i = 0, old = 0, new = 0, del = 0, add = 0; | 164 gint i = 0, old = 0, new = 0, del = 0, add = 0; |
210 _qq_group_member_opt(gc, group, QQ_GROUP_MEMBER_DEL, del_members); | 210 _qq_group_member_opt(gc, group, QQ_GROUP_MEMBER_DEL, del_members); |
211 if (add > 0) | 211 if (add > 0) |
212 _qq_group_member_opt(gc, group, QQ_GROUP_MEMBER_ADD, add_members); | 212 _qq_group_member_opt(gc, group, QQ_GROUP_MEMBER_ADD, add_members); |
213 } | 213 } |
214 | 214 |
215 void qq_group_process_modify_members_reply(guint8 *data, guint8 **cursor, gint len, GaimConnection *gc) | 215 void qq_group_process_modify_members_reply(guint8 *data, guint8 **cursor, gint len, PurpleConnection *gc) |
216 { | 216 { |
217 guint32 internal_group_id; | 217 guint32 internal_group_id; |
218 qq_group *group; | 218 qq_group *group; |
219 g_return_if_fail(data != NULL); | 219 g_return_if_fail(data != NULL); |
220 | 220 |
223 | 223 |
224 /* we should have its info locally */ | 224 /* we should have its info locally */ |
225 group = qq_group_find_by_id(gc, internal_group_id, QQ_INTERNAL_ID); | 225 group = qq_group_find_by_id(gc, internal_group_id, QQ_INTERNAL_ID); |
226 g_return_if_fail(group != NULL); | 226 g_return_if_fail(group != NULL); |
227 | 227 |
228 gaim_debug(GAIM_DEBUG_INFO, "QQ", "Succeed in modify members for Qun %d\n", group->external_group_id); | 228 purple_debug(PURPLE_DEBUG_INFO, "QQ", "Succeed in modify members for Qun %d\n", group->external_group_id); |
229 | 229 |
230 gaim_notify_info(gc, _("QQ Qun Operation"), _("You have successfully modify Qun member"), NULL); | 230 purple_notify_info(gc, _("QQ Qun Operation"), _("You have successfully modify Qun member"), NULL); |
231 } | 231 } |
232 | 232 |
233 void qq_group_modify_info(GaimConnection *gc, qq_group *group) | 233 void qq_group_modify_info(PurpleConnection *gc, qq_group *group) |
234 { | 234 { |
235 gint data_len, data_written; | 235 gint data_len, data_written; |
236 guint8 *data, *cursor; | 236 guint8 *data, *cursor; |
237 gchar *group_name, *group_desc, *notice; | 237 gchar *group_name, *group_desc, *notice; |
238 | 238 |
272 | 272 |
273 data_written += create_packet_b(data, &cursor, strlen(group_desc)); | 273 data_written += create_packet_b(data, &cursor, strlen(group_desc)); |
274 data_written += create_packet_data(data, &cursor, (guint8 *) group_desc, strlen(group_desc)); | 274 data_written += create_packet_data(data, &cursor, (guint8 *) group_desc, strlen(group_desc)); |
275 | 275 |
276 if (data_written != data_len) | 276 if (data_written != data_len) |
277 gaim_debug(GAIM_DEBUG_ERROR, "QQ", | 277 purple_debug(PURPLE_DEBUG_ERROR, "QQ", |
278 "Fail to create group_modify_info packet, expect %d bytes, wrote %d bytes\n", | 278 "Fail to create group_modify_info packet, expect %d bytes, wrote %d bytes\n", |
279 data_len, data_written); | 279 data_len, data_written); |
280 else | 280 else |
281 qq_send_group_cmd(gc, group, data, data_len); | 281 qq_send_group_cmd(gc, group, data, data_len); |
282 } | 282 } |
283 | 283 |
284 void qq_group_process_modify_info_reply(guint8 *data, guint8 **cursor, gint len, GaimConnection *gc) | 284 void qq_group_process_modify_info_reply(guint8 *data, guint8 **cursor, gint len, PurpleConnection *gc) |
285 { | 285 { |
286 guint32 internal_group_id; | 286 guint32 internal_group_id; |
287 qq_group *group; | 287 qq_group *group; |
288 g_return_if_fail(data != NULL); | 288 g_return_if_fail(data != NULL); |
289 | 289 |
292 | 292 |
293 /* we should have its info locally */ | 293 /* we should have its info locally */ |
294 group = qq_group_find_by_id(gc, internal_group_id, QQ_INTERNAL_ID); | 294 group = qq_group_find_by_id(gc, internal_group_id, QQ_INTERNAL_ID); |
295 g_return_if_fail(group != NULL); | 295 g_return_if_fail(group != NULL); |
296 | 296 |
297 gaim_debug(GAIM_DEBUG_INFO, "QQ", "Succeed in modify info for Qun %d\n", group->external_group_id); | 297 purple_debug(PURPLE_DEBUG_INFO, "QQ", "Succeed in modify info for Qun %d\n", group->external_group_id); |
298 qq_group_refresh(gc, group); | 298 qq_group_refresh(gc, group); |
299 | 299 |
300 gaim_notify_info(gc, _("QQ Qun Operation"), _("You have successfully modify Qun information"), NULL); | 300 purple_notify_info(gc, _("QQ Qun Operation"), _("You have successfully modify Qun information"), NULL); |
301 } | 301 } |
302 | 302 |
303 /* we create a very simple group first, and then let the user to modify */ | 303 /* we create a very simple group first, and then let the user to modify */ |
304 void qq_group_create_with_name(GaimConnection *gc, const gchar *name) | 304 void qq_group_create_with_name(PurpleConnection *gc, const gchar *name) |
305 { | 305 { |
306 gint data_len, data_written; | 306 gint data_len, data_written; |
307 guint8 *data, *cursor; | 307 guint8 *data, *cursor; |
308 qq_data *qd; | 308 qq_data *qd; |
309 g_return_if_fail(name != NULL); | 309 g_return_if_fail(name != NULL); |
332 data_written += create_packet_b(data, &cursor, 0x00); /* no group notice */ | 332 data_written += create_packet_b(data, &cursor, 0x00); /* no group notice */ |
333 data_written += create_packet_b(data, &cursor, 0x00); /* no group desc */ | 333 data_written += create_packet_b(data, &cursor, 0x00); /* no group desc */ |
334 data_written += create_packet_dw(data, &cursor, qd->uid); /* I am member of coz */ | 334 data_written += create_packet_dw(data, &cursor, qd->uid); /* I am member of coz */ |
335 | 335 |
336 if (data_written != data_len) | 336 if (data_written != data_len) |
337 gaim_debug(GAIM_DEBUG_ERROR, "QQ", | 337 purple_debug(PURPLE_DEBUG_ERROR, "QQ", |
338 "Fail create create_group packet, expect %d bytes, written %d bytes\n", | 338 "Fail create create_group packet, expect %d bytes, written %d bytes\n", |
339 data_len, data_written); | 339 data_len, data_written); |
340 else | 340 else |
341 qq_send_group_cmd(gc, NULL, data, data_len); | 341 qq_send_group_cmd(gc, NULL, data, data_len); |
342 } | 342 } |
352 /* TODO insert UI code here */ | 352 /* TODO insert UI code here */ |
353 /* qq_group_detail_window_show(g->gc, group); */ | 353 /* qq_group_detail_window_show(g->gc, group); */ |
354 g_free(g); | 354 g_free(g); |
355 } | 355 } |
356 | 356 |
357 void qq_group_process_create_group_reply(guint8 *data, guint8 **cursor, gint len, GaimConnection *gc) | 357 void qq_group_process_create_group_reply(guint8 *data, guint8 **cursor, gint len, PurpleConnection *gc) |
358 { | 358 { |
359 guint32 internal_group_id, external_group_id; | 359 guint32 internal_group_id, external_group_id; |
360 qq_group *group; | 360 qq_group *group; |
361 gc_and_uid *g; | 361 gc_and_uid *g; |
362 qq_data *qd; | 362 qq_data *qd; |
375 qq_group_refresh(gc, group); | 375 qq_group_refresh(gc, group); |
376 | 376 |
377 qq_group_activate_group(gc, internal_group_id); | 377 qq_group_activate_group(gc, internal_group_id); |
378 qq_send_cmd_group_get_group_info(gc, group); | 378 qq_send_cmd_group_get_group_info(gc, group); |
379 | 379 |
380 gaim_debug(GAIM_DEBUG_INFO, "QQ", "Succeed in create Qun, external ID %d\n", group->external_group_id); | 380 purple_debug(PURPLE_DEBUG_INFO, "QQ", "Succeed in create Qun, external ID %d\n", group->external_group_id); |
381 | 381 |
382 g = g_new0(gc_and_uid, 1); | 382 g = g_new0(gc_and_uid, 1); |
383 g->gc = gc; | 383 g->gc = gc; |
384 g->uid = internal_group_id; | 384 g->uid = internal_group_id; |
385 | 385 |
386 gaim_request_action(gc, _("QQ Qun Operation"), | 386 purple_request_action(gc, _("QQ Qun Operation"), |
387 _("You have successfully created a Qun"), | 387 _("You have successfully created a Qun"), |
388 _ | 388 _ |
389 ("Would you like to set up the Qun details now?"), | 389 ("Would you like to set up the Qun details now?"), |
390 1, g, 2, _("Setup"), | 390 1, g, 2, _("Setup"), |
391 G_CALLBACK(qq_group_setup_with_gc_and_uid), | 391 G_CALLBACK(qq_group_setup_with_gc_and_uid), |
392 _("Cancel"), G_CALLBACK(qq_do_nothing_with_gc_and_uid)); | 392 _("Cancel"), G_CALLBACK(qq_do_nothing_with_gc_and_uid)); |
393 } | 393 } |
394 | 394 |
395 /* we have to activate group after creation, otherwise the group can not be searched */ | 395 /* we have to activate group after creation, otherwise the group can not be searched */ |
396 void qq_group_activate_group(GaimConnection *gc, guint32 internal_group_id) | 396 void qq_group_activate_group(PurpleConnection *gc, guint32 internal_group_id) |
397 { | 397 { |
398 gint data_len, data_written; | 398 gint data_len, data_written; |
399 guint8 *data, *cursor; | 399 guint8 *data, *cursor; |
400 g_return_if_fail(internal_group_id > 0); | 400 g_return_if_fail(internal_group_id > 0); |
401 | 401 |
409 data_written += create_packet_b(data, &cursor, QQ_GROUP_CMD_ACTIVATE_GROUP); | 409 data_written += create_packet_b(data, &cursor, QQ_GROUP_CMD_ACTIVATE_GROUP); |
410 /* 001-005 */ | 410 /* 001-005 */ |
411 data_written += create_packet_dw(data, &cursor, internal_group_id); | 411 data_written += create_packet_dw(data, &cursor, internal_group_id); |
412 | 412 |
413 if (data_written != data_len) | 413 if (data_written != data_len) |
414 gaim_debug(GAIM_DEBUG_ERROR, "QQ", | 414 purple_debug(PURPLE_DEBUG_ERROR, "QQ", |
415 "Fail create activate_group packet, expect %d bytes, written %d bytes\n", | 415 "Fail create activate_group packet, expect %d bytes, written %d bytes\n", |
416 data_len, data_written); | 416 data_len, data_written); |
417 else | 417 else |
418 qq_send_group_cmd(gc, NULL, data, data_len); | 418 qq_send_group_cmd(gc, NULL, data, data_len); |
419 } | 419 } |
420 | 420 |
421 void qq_group_process_activate_group_reply(guint8 *data, guint8 **cursor, gint len, GaimConnection *gc) | 421 void qq_group_process_activate_group_reply(guint8 *data, guint8 **cursor, gint len, PurpleConnection *gc) |
422 { | 422 { |
423 guint32 internal_group_id; | 423 guint32 internal_group_id; |
424 qq_group *group; | 424 qq_group *group; |
425 g_return_if_fail(data != NULL); | 425 g_return_if_fail(data != NULL); |
426 | 426 |
429 | 429 |
430 /* we should have its info locally */ | 430 /* we should have its info locally */ |
431 group = qq_group_find_by_id(gc, internal_group_id, QQ_INTERNAL_ID); | 431 group = qq_group_find_by_id(gc, internal_group_id, QQ_INTERNAL_ID); |
432 g_return_if_fail(group != NULL); | 432 g_return_if_fail(group != NULL); |
433 | 433 |
434 gaim_debug(GAIM_DEBUG_INFO, "QQ", "Succeed in activate Qun %d\n", group->external_group_id); | 434 purple_debug(PURPLE_DEBUG_INFO, "QQ", "Succeed in activate Qun %d\n", group->external_group_id); |
435 } | 435 } |
436 | 436 |
437 void qq_group_manage_group(GaimConnection *gc, GHashTable *data) | 437 void qq_group_manage_group(PurpleConnection *gc, GHashTable *data) |
438 { | 438 { |
439 gchar *internal_group_id_ptr; | 439 gchar *internal_group_id_ptr; |
440 guint32 internal_group_id; | 440 guint32 internal_group_id; |
441 qq_group *group; | 441 qq_group *group; |
442 | 442 |