Mercurial > pidgin
diff libpurple/protocols/qq/group_im.c @ 24159:9be95f0b9472
2008.10.10 - ccpaging <ccpaging(at)gmail.com>
* Keep group_search.c/h for later use
* Update 'group'
author | SHiNE CsyFeK <csyfek@gmail.com> |
---|---|
date | Tue, 28 Oct 2008 16:40:56 +0000 |
parents | b6f09c1c79ce |
children | 7c0a56c5fea0 |
line wrap: on
line diff
--- a/libpurple/protocols/qq/group_im.c Tue Oct 28 16:39:23 2008 +0000 +++ b/libpurple/protocols/qq/group_im.c Tue Oct 28 16:40:56 2008 +0000 @@ -34,6 +34,7 @@ #include "char_conv.h" #include "group_internal.h" #include "group_info.h" +#include "group_join.h" #include "group_im.h" #include "group_opt.h" #include "im.h" @@ -157,7 +158,7 @@ } /* send IM to a group */ -void qq_send_packet_group_im(PurpleConnection *gc, guint32 room_id, const gchar *msg) +void qq_request_room_send_im(PurpleConnection *gc, guint32 room_id, const gchar *msg) { gint data_len, bytes; guint8 *raw_data, *send_im_tail; @@ -191,64 +192,13 @@ } /* this is the ACK */ -void qq_process_group_cmd_im(guint8 *data, gint len, PurpleConnection *gc) +void qq_process_room_send_im(PurpleConnection *gc, guint8 *data, gint len) { /* return should be the internal group id * but we have nothing to do with it */ return; } -/* receive an application to join the group */ -void qq_process_room_msg_apply_join(guint8 *data, gint len, guint32 id, PurpleConnection *gc) -{ - guint32 ext_id, user_uid; - guint8 type8; - gchar *reason_utf8, *msg, *reason; - group_member_opt *g; - gchar *nombre; - gint bytes = 0; - - g_return_if_fail(id > 0 && data != NULL && len > 0); - - /* FIXME: check length here */ - - bytes += qq_get32(&ext_id, data + bytes); - bytes += qq_get8(&type8, data + bytes); - bytes += qq_get32(&user_uid, data + bytes); - - g_return_if_fail(ext_id > 0 && user_uid > 0); - - bytes += qq_get_vstr(&reason_utf8, QQ_CHARSET_DEFAULT, data + bytes); - - msg = g_strdup_printf(_("%d request to join Qun %d"), user_uid, ext_id); - reason = g_strdup_printf(_("Message: %s"), reason_utf8); - - g = g_new0(group_member_opt, 1); - g->gc = gc; - g->id = id; - g->member = user_uid; - - nombre = uid_to_purple_name(user_uid); - - purple_request_action(gc, _("QQ Qun Operation"), - msg, reason, - PURPLE_DEFAULT_ACTION_NONE, - purple_connection_get_account(gc), nombre, NULL, - g, 3, - _("Approve"), - G_CALLBACK - (qq_group_approve_application_with_struct), - _("Reject"), - G_CALLBACK - (qq_group_reject_application_with_struct), - _("Search"), G_CALLBACK(qq_group_search_application_with_struct)); - - g_free(nombre); - g_free(reason); - g_free(msg); - g_free(reason_utf8); -} - void qq_room_got_chat_in(PurpleConnection *gc, guint32 room_id, guint32 uid_from, const gchar *msg, time_t in_time) { @@ -285,147 +235,8 @@ g_free(from); } -/* the request to join a group is rejected */ -void qq_process_room_msg_been_rejected(guint8 *data, gint len, guint32 id, PurpleConnection *gc) -{ - guint32 ext_id, admin_uid; - guint8 type8; - gchar *reason_utf8, *msg, *reason; - qq_room_data *rmd; - gint bytes; - - g_return_if_fail(data != NULL && len > 0); - - /* FIXME: check length here */ - bytes = 0; - bytes += qq_get32(&ext_id, data + bytes); - bytes += qq_get8(&type8, data + bytes); - bytes += qq_get32(&admin_uid, data + bytes); - - g_return_if_fail(ext_id > 0 && admin_uid > 0); - - bytes += qq_get_vstr(&reason_utf8, QQ_CHARSET_DEFAULT, data + bytes); - - msg = g_strdup_printf - (_("Failed to join Qun %d, operated by admin %d"), ext_id, admin_uid); - reason = g_strdup_printf(_("Message: %s"), reason_utf8); - - purple_notify_warning(gc, _("QQ Qun Operation"), msg, reason); - - qq_room_find_or_new(gc, id, ext_id); - rmd = qq_room_data_find(gc, id); - if (rmd != NULL) { - rmd->my_role = QQ_ROOM_ROLE_NO; - } - - g_free(msg); - g_free(reason); - g_free(reason_utf8); -} - -/* the request to join a group is approved */ -void qq_process_room_msg_been_approved(guint8 *data, gint len, guint32 id, PurpleConnection *gc) -{ - guint32 ext_id, admin_uid; - guint8 type8; - gchar *msg, *reason; - qq_room_data *rmd; - gint bytes; - time_t now; - - g_return_if_fail(data != NULL && len > 0); - - /* FIXME: check length here */ - bytes = 0; - bytes += qq_get32(&ext_id, data + bytes); - bytes += qq_get8(&type8, data + bytes); - bytes += qq_get32(&admin_uid, data + bytes); - - g_return_if_fail(ext_id > 0 && admin_uid > 0); - /* it is also a "无" here, so do not display */ - bytes += qq_get_vstr(&reason, QQ_CHARSET_DEFAULT, data + bytes); - - qq_room_find_or_new(gc, id, ext_id); - rmd = qq_room_data_find(gc, id); - if (rmd != NULL) { - rmd->my_role = QQ_ROOM_ROLE_YES; - } - - msg = g_strdup_printf(_("<b>Joinning Qun %d is approved by Admin %d for %s</b>"), - ext_id, admin_uid, reason); - now = time(NULL); - qq_room_got_chat_in(gc, id, 0, msg, now); - - g_free(msg); - g_free(reason); -} - -/* process the packet when removed from a group */ -void qq_process_room_msg_been_removed(guint8 *data, gint len, guint32 id, PurpleConnection *gc) -{ - guint32 ext_id, uid; - guint8 type8; - gchar *msg; - qq_room_data *rmd; - gint bytes = 0; - time_t now = time(NULL); - - g_return_if_fail(data != NULL && len > 0); - - /* FIXME: check length here */ - bytes = 0; - bytes += qq_get32(&ext_id, data + bytes); - bytes += qq_get8(&type8, data + bytes); - bytes += qq_get32(&uid, data + bytes); - - g_return_if_fail(ext_id > 0 && uid > 0); - - qq_room_find_or_new(gc, id, ext_id); - rmd = qq_room_data_find(gc, id); - if (rmd != NULL) { - rmd->my_role = QQ_ROOM_ROLE_NO; - } - - msg = g_strdup_printf(_("<b>Removed buddy %d.</b>"), uid); - qq_room_got_chat_in(gc, id, 0, msg, now); - g_free(msg); -} - -/* process the packet when added to a group */ -void qq_process_room_msg_been_added(guint8 *data, gint len, guint32 id, PurpleConnection *gc) -{ - guint32 ext_id, uid; - guint8 type8; - qq_room_data *rmd; - gint bytes; - gchar *msg; - time_t now = time(NULL); - - g_return_if_fail(data != NULL && len > 0); - - /* FIXME: check length here */ - bytes = 0; - bytes += qq_get32(&ext_id, data + bytes); - bytes += qq_get8(&type8, data + bytes); - bytes += qq_get32(&uid, data + bytes); - - g_return_if_fail(ext_id > 0 && id > 0); - - qq_room_find_or_new(gc, id, ext_id); - rmd = qq_room_data_find(gc, id); - g_return_if_fail(rmd != NULL); - - rmd->my_role = QQ_ROOM_ROLE_YES; - - qq_update_room(gc, 0, rmd->id); - - msg = g_strdup_printf(_("<b>Added new buddy %d.</b>"), uid); - qq_room_got_chat_in(gc, id, 0, msg, now); - g_free(msg); -} - /* recv an IM from a group chat */ -void qq_process_room_msg_normal(guint8 *data, gint data_len, guint32 id, PurpleConnection *gc, guint16 msg_type) +void qq_process_room_im(guint8 *data, gint data_len, guint32 id, PurpleConnection *gc, guint16 msg_type) { gchar *msg_with_purple_smiley, *msg_utf8_encoded; qq_data *qd; @@ -506,7 +317,7 @@ } else { packet.font_attr = NULL; } - + /* group im_group has no flag to indicate whether it has font_attr or not */ msg_with_purple_smiley = qq_smiley_to_purple(packet.msg); if (packet.font_attr_len > 0) {