/* process group cmd reply "join group" */ void qq_process_group_cmd_join_group(guint8 *data, gint len, PurpleConnection *gc) { gint bytes; guint32 id; qq_room_data *rmd; gchar *msg; g_return_if_fail(data != NULL && len > 0); if (len < 4) { purple_debug_error("QQ", "Invalid join room reply, expect %d bytes, read %d bytes\n", 5, len); return; } bytes = 0; bytes += qq_get32(&id, data + bytes); /* join group OK */ rmd = qq_room_data_find(gc, id); /* need to check if group is NULL or not. */ g_return_if_fail(rmd != NULL); purple_debug_info("QQ", "Succeeded in joining group \"%s\"\n", rmd->name); rmd->my_role = QQ_ROOM_ROLE_YES; qq_room_conv_open(gc, rmd); /* switch (reply) { case QQ_ROOM_JOIN_OK: purple_debug_info("QQ", "Succeeded in joining group \"%s\"\n", rmd->name); rmd->my_role = QQ_ROOM_ROLE_YES; qq_room_conv_open(gc, rmd); break; case QQ_ROOM_JOIN_NEED_AUTH: purple_debug_info("QQ", "Failed to join room qun id %u %s, needs authentication\n", rmd->qun_id, rmd->name); rmd->my_role = QQ_ROOM_ROLE_NO; do_room_join_request(gc, rmd); break; case QQ_ROOM_JOIN_DENIED: msg = g_strdup_printf(_("Qun %u denied from joining"), rmd->qun_id); purple_notify_info(gc, _("QQ Qun Operation"), _("Failed:"), msg); g_free(msg); break; default: purple_debug_info("QQ", "Failed to join room qun id %u %s, unknown reply: 0x%02x\n", rmd->qun_id, rmd->name, reply); purple_notify_info(gc, _("QQ Qun Operation"), _("Failed:"), _("Join Qun, Unknown Reply")); } */ }
void qq_room_got_chat_in(PurpleConnection *gc, guint32 room_id, guint32 uid_from, const gchar *msg, time_t in_time) { PurpleConversation *conv; qq_data *qd; qq_buddy_data *bd; qq_room_data *rmd; gchar *from; g_return_if_fail(gc != NULL && room_id != 0); g_return_if_fail(msg != NULL); qd = (qq_data *)gc->proto_data; conv = purple_find_chat(gc, room_id); rmd = qq_room_data_find(gc, room_id); g_return_if_fail(rmd != NULL); purple_debug_info("QQ", "is_show_chat:%d\n", qd->is_show_chat); if (NULL == conv && qd->is_show_chat) { conv = qq_room_conv_open(gc, rmd); } if (NULL == conv) { purple_debug_info("QQ", "Conversion of %u is not open, missing from %d:/n%s/v\n", room_id, uid_from, msg); return; } if (uid_from != 0) { bd = qq_room_buddy_find(rmd, uid_from); if (bd == NULL || bd->nickname == NULL) from = g_strdup_printf("%u", uid_from); else from = g_strdup(bd->nickname); } else { from = g_strdup(""); } serv_got_chat_in(gc, room_id, from, 0, msg, in_time); g_free(from); }