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