diff libpurple/protocols/qq/group_im.c @ 23878:967344bc404d

applied changes from f12c8903079425d7850fa183df0b3f937b2952be through 8cebefbc6cd5d84acb69c74e69e8821f11dd225d Backport of 8cebefbc6cd5d84acb69c74e69e8821f11dd225d to avoid having other changes overwritten. 2008.08.16 - ccpaging <ecc_hy(at)hotmail.com> * Rename group to room. If you used pidginqq before, this may create a new room with same title, you may delete old one * Replace purple_debug with purple_debug_info, purple_debug_warning, purple_debug_error * Add server notice and server new, and two options to turn on/off * Minor modify for reducing transaction's debug infor * Minor modifies for system notice and QQ news. * Add 4 new strings need translate compare with p10. committer: Daniel Atallah <daniel.atallah@gmail.com>
author SHiNE CsyFeK <csyfek@gmail.com>
date Mon, 15 Sep 2008 02:59:23 +0000
parents 5f454b975a99
children 23cec4360d4a 25f62d21b3f8
line wrap: on
line diff
--- a/libpurple/protocols/qq/group_im.c	Sun Aug 10 04:32:14 2008 +0000
+++ b/libpurple/protocols/qq/group_im.c	Mon Sep 15 02:59:23 2008 +0000
@@ -41,6 +41,7 @@
 #include "header_info.h"
 #include "packet_parse.h"
 #include "qq_network.h"
+#include "qq_process.h"
 #include "utils.h"
 
 typedef struct _qq_recv_group_im {
@@ -85,12 +86,12 @@
 	if (bytes == data_len)	/* create OK */
 		qq_send_room_cmd(gc, QQ_ROOM_CMD_SEND_MSG, group->id, raw_data, data_len);
 	else
-		purple_debug(PURPLE_DEBUG_ERROR, "QQ",
+		purple_debug_error("QQ",
 				"Fail creating group_im packet, expect %d bytes, build %d bytes\n", data_len, bytes);
 }
 
 /* this is the ACK */
-void qq_process_group_cmd_im(guint8 *data, gint len, PurpleConnection *gc) 
+void qq_process_group_cmd_im(guint8 *data, gint len, PurpleConnection *gc)
 {
 	/* return should be the internal group id
 	 * but we have nothing to do with it */
@@ -98,7 +99,7 @@
 }
 
 /* receive an application to join the group */
-void qq_process_recv_group_im_apply_join(guint8 *data, gint len, guint32 id, PurpleConnection *gc)
+void qq_process_room_msg_apply_join(guint8 *data, gint len, guint32 id, PurpleConnection *gc)
 {
 	guint32 ext_id, user_uid;
 	guint8 type8;
@@ -119,8 +120,8 @@
 
 	bytes += convert_as_pascal_string(data + bytes, &reason_utf8, QQ_CHARSET_DEFAULT);
 
-	msg = g_strdup_printf(_("User %d requested to join group %d"), user_uid, ext_id);
-	reason = g_strdup_printf(_("Reason: %s"), reason_utf8);
+	msg = g_strdup_printf(_("%d requested 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;
@@ -149,7 +150,7 @@
 }
 
 /* the request to join a group is rejected */
-void qq_process_recv_group_im_been_rejected(guint8 *data, gint len, guint32 id, PurpleConnection *gc)
+void qq_process_room_msg_been_rejected(guint8 *data, gint len, guint32 id, PurpleConnection *gc)
 {
 	guint32 ext_id, admin_uid;
 	guint8 type8;
@@ -170,14 +171,14 @@
 	bytes += convert_as_pascal_string(data + bytes, &reason_utf8, QQ_CHARSET_DEFAULT);
 
 	msg = g_strdup_printf
-		(_("Your request to join group %d has been rejected by admin %d"), ext_id, admin_uid);
-	reason = g_strdup_printf(_("Reason: %s"), reason_utf8);
+		(_("Your request to join Qun %d has been rejected by admin %d"), ext_id, admin_uid);
+	reason = g_strdup_printf(_("Message: %s"), reason_utf8);
 
 	purple_notify_warning(gc, _("QQ Qun Operation"), msg, reason);
 
 	group = qq_room_search_id(gc, id);
 	if (group != NULL) {
-		group->my_status = QQ_GROUP_MEMBER_STATUS_NOT_MEMBER;
+		group->my_role = QQ_ROOM_ROLE_NO;
 		qq_group_refresh(gc, group);
 	}
 
@@ -187,7 +188,7 @@
 }
 
 /* the request to join a group is approved */
-void qq_process_recv_group_im_been_approved(guint8 *data, gint len, guint32 id, PurpleConnection *gc)
+void qq_process_room_msg_been_approved(guint8 *data, gint len, guint32 id, PurpleConnection *gc)
 {
 	guint32 ext_id, admin_uid;
 	guint8 type8;
@@ -208,13 +209,13 @@
 	bytes += convert_as_pascal_string(data + bytes, &reason_utf8, QQ_CHARSET_DEFAULT);
 
 	msg = g_strdup_printf
-		(_("Your request to join group %d has been approved by admin %d"), ext_id, admin_uid);
+		(_("Your request to join Qun %d has been approved by admin %d"), ext_id, admin_uid);
 
 	purple_notify_warning(gc, _("QQ Qun Operation"), msg, NULL);
 
 	group = qq_room_search_id(gc, id);
 	if (group != NULL) {
-		group->my_status = QQ_GROUP_MEMBER_STATUS_IS_MEMBER;
+		group->my_role = QQ_ROOM_ROLE_YES;
 		qq_group_refresh(gc, group);
 	}
 
@@ -223,7 +224,7 @@
 }
 
 /* process the packet when removed from a group */
-void qq_process_recv_group_im_been_removed(guint8 *data, gint len, guint32 id, PurpleConnection *gc)
+void qq_process_room_msg_been_removed(guint8 *data, gint len, guint32 id, PurpleConnection *gc)
 {
 	guint32 ext_id, uid;
 	guint8 type8;
@@ -241,12 +242,12 @@
 
 	g_return_if_fail(ext_id > 0 && uid > 0);
 
-	msg = g_strdup_printf(_("You [%d] have left group \"%d\""), uid, ext_id);
+	msg = g_strdup_printf(_("[%d] removed from Qun \"%d\""), uid, ext_id);
 	purple_notify_info(gc, _("QQ Qun Operation"), msg, NULL);
 
 	group = qq_room_search_id(gc, id);
 	if (group != NULL) {
-		group->my_status = QQ_GROUP_MEMBER_STATUS_NOT_MEMBER;
+		group->my_role = QQ_ROOM_ROLE_NO;
 		qq_group_refresh(gc, group);
 	}
 
@@ -254,7 +255,7 @@
 }
 
 /* process the packet when added to a group */
-void qq_process_recv_group_im_been_added(guint8 *data, gint len, guint32 id, PurpleConnection *gc)
+void qq_process_room_msg_been_added(guint8 *data, gint len, guint32 id, PurpleConnection *gc)
 {
 	guint32 ext_id, uid;
 	guint8 type8;
@@ -272,18 +273,18 @@
 
 	g_return_if_fail(ext_id > 0 && uid > 0);
 
-	msg = g_strdup_printf(_("You [%d] have been added to group \"%d\""), uid, ext_id);
-	purple_notify_info(gc, _("QQ Qun Operation"), msg, _("This group has been added to your buddy list"));
+	msg = g_strdup_printf(_("[%d] added to Qun \"%d\""), uid, ext_id);
+	purple_notify_info(gc, _("QQ Qun Operation"), msg, _("Qun is in buddy list"));
 
 	group = qq_room_search_id(gc, id);
 	if (group != NULL) {
-		group->my_status = QQ_GROUP_MEMBER_STATUS_IS_MEMBER;
+		group->my_role = QQ_ROOM_ROLE_YES;
 		qq_group_refresh(gc, group);
 	} else {		/* no such group, try to create a dummy first, and then update */
 		group = qq_group_create_internal_record(gc, id, ext_id, NULL);
-		group->my_status = QQ_GROUP_MEMBER_STATUS_IS_MEMBER;
+		group->my_role = QQ_ROOM_ROLE_YES;
 		qq_group_refresh(gc, group);
-		qq_send_room_cmd_only(gc, QQ_ROOM_CMD_GET_INFO, group->id);
+		qq_room_update(gc, 0, group->id);
 		/* the return of this cmd will automatically update the group in blist */
 	}
 
@@ -291,7 +292,7 @@
 }
 
 /* recv an IM from a group chat */
-void qq_process_recv_group_im(guint8 *data, gint data_len, guint32 id, PurpleConnection *gc, guint16 im_type)
+void qq_process_room_msg_normal(guint8 *data, gint data_len, guint32 id, PurpleConnection *gc, guint16 im_type)
 {
 	gchar *msg_with_purple_smiley, *msg_utf8_encoded, *im_src_name;
 	guint16 unknown;
@@ -310,7 +311,9 @@
 
 	qd = (qq_data *) gc->proto_data;
 
-	/* qq_hex_dump(PURPLE_DEBUG_INFO, "QQ", data, data_len, "group im hex dump"); */
+#if 0
+	qq_hex_dump(PURPLE_DEBUG_INFO, "QQ", data, data_len, "group im hex dump");
+#endif
 
 	im_group = g_newa(qq_recv_group_im, 1);
 
@@ -374,13 +377,13 @@
 	group = qq_room_search_id(gc, id);
 	g_return_if_fail(group != NULL);
 
-	conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, group->group_name_utf8, purple_connection_get_account(gc));
+	conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, group->title_utf8, purple_connection_get_account(gc));
 	if (conv == NULL && purple_prefs_get_bool("/plugins/prpl/qq/prompt_group_msg_on_recv")) {
 		/* New conv should open, get group info*/
-		qq_send_room_cmd_only(gc, QQ_ROOM_CMD_GET_INFO, group->id);
-		
-		serv_got_joined_chat(gc, qd->channel++, group->group_name_utf8);
-		conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, group->group_name_utf8, purple_connection_get_account(gc));
+		qq_room_update(gc, 0, group->id);
+
+		serv_got_joined_chat(gc, qd->channel++, group->title_utf8);
+		conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, group->title_utf8, purple_connection_get_account(gc));
 	}
 
 	if (conv != NULL) {