comparison libpurple/protocols/qq/group_join.c @ 24653:fecedf6d9ee1

propagate from branch 'im.pidgin.pidgin' (head 97d295a04f3a9852a3b29cf0df43d56d1ddcc672) to branch 'im.pidgin.pidgin.openq' (head a0d99396d1603b53838d74cad4391ece34f3ebbf)
author SHiNE CsyFeK <csyfek@gmail.com>
date Fri, 05 Dec 2008 14:51:36 +0000
parents 75545fdf8944 8c3cfad8658a
children 2f84f888d3db
comparison
equal deleted inserted replaced
24590:c457c635eb8f 24653:fecedf6d9ee1
114 return; 114 return;
115 } 115 }
116 116
117 rmd = qq_room_data_find(add_req->gc, add_req->id); 117 rmd = qq_room_data_find(add_req->gc, add_req->id);
118 if (rmd == NULL) { 118 if (rmd == NULL) {
119 purple_debug_error("QQ", "Can not find room data of %d\n", add_req->id); 119 purple_debug_error("QQ", "Can not find room data of %u\n", add_req->id);
120 g_free(add_req); 120 g_free(add_req);
121 return; 121 return;
122 } 122 }
123 123
124 qq_send_cmd_group_auth(add_req->gc, rmd, QQ_ROOM_AUTH_REQUEST_APPLY, 0, reason_utf8); 124 qq_send_cmd_group_auth(add_req->gc, rmd, QQ_ROOM_AUTH_REQUEST_APPLY, 0, reason_utf8);
135 { 135 {
136 gchar *msg; 136 gchar *msg;
137 qq_room_req *add_req; 137 qq_room_req *add_req;
138 g_return_if_fail(rmd != NULL); 138 g_return_if_fail(rmd != NULL);
139 139
140 purple_debug_info("QQ", "Room (internal id: %d) needs authentication\n", rmd->id); 140 purple_debug_info("QQ", "Room id %u needs authentication\n", rmd->id);
141 141
142 msg = g_strdup_printf("QQ Qun %d needs authentication\n", rmd->ext_id); 142 msg = g_strdup_printf("QQ Qun %u needs authentication\n", rmd->ext_id);
143 add_req = g_new0(qq_room_req, 1); 143 add_req = g_new0(qq_room_req, 1);
144 add_req->gc = gc; 144 add_req->gc = gc;
145 add_req->id = rmd->id; 145 add_req->id = rmd->id;
146 purple_request_input(gc, _("Join QQ Qun"), msg, 146 purple_request_input(gc, _("Join QQ Qun"), msg,
147 _("Input request here"), 147 _("Input request here"),
152 purple_connection_get_account(gc), rmd->title_utf8, NULL, 152 purple_connection_get_account(gc), rmd->title_utf8, NULL,
153 add_req); 153 add_req);
154 g_free(msg); 154 g_free(msg);
155 } 155 }
156 156
157 void qq_send_cmd_group_auth(PurpleConnection *gc, qq_room_data *rmd, 157 void qq_send_cmd_group_auth(PurpleConnection *gc, qq_room_data *rmd,
158 guint8 opt, guint32 uid, const gchar *reason_utf8) 158 guint8 opt, guint32 uid, const gchar *reason_utf8)
159 { 159 {
160 guint8 raw_data[MAX_PACKET_SIZE - 16]; 160 guint8 raw_data[MAX_PACKET_SIZE - 16];
161 gint bytes; 161 gint bytes;
162 162
217 bytes += qq_get32(&id, data + bytes); 217 bytes += qq_get32(&id, data + bytes);
218 g_return_if_fail(id > 0); 218 g_return_if_fail(id > 0);
219 219
220 rmd = qq_room_data_find(gc, id); 220 rmd = qq_room_data_find(gc, id);
221 if (rmd != NULL) { 221 if (rmd != NULL) {
222 msg = g_strdup_printf(_("Successfully joined Qun %s (%d)"), rmd->title_utf8, rmd->ext_id); 222 msg = g_strdup_printf(_("Successed join to Qun %s (%u)"), rmd->title_utf8, rmd->ext_id);
223 qq_got_attention(gc, msg); 223 qq_got_message(gc, msg);
224 g_free(msg); 224 g_free(msg);
225 } else { 225 } else {
226 qq_got_attention(gc, _("Successfully joined Qun")); 226 qq_got_message(gc, _("Successed join to Qun"));
227 } 227 }
228 } 228 }
229 229
230 /* process group cmd reply "join group" */ 230 /* process group cmd reply "join group" */
231 void qq_process_group_cmd_join_group(guint8 *data, gint len, PurpleConnection *gc) 231 void qq_process_group_cmd_join_group(guint8 *data, gint len, PurpleConnection *gc)
259 /* this must be shown before getting online members */ 259 /* this must be shown before getting online members */
260 qq_room_conv_open(gc, rmd); 260 qq_room_conv_open(gc, rmd);
261 break; 261 break;
262 case QQ_ROOM_JOIN_NEED_AUTH: 262 case QQ_ROOM_JOIN_NEED_AUTH:
263 purple_debug_info("QQ", 263 purple_debug_info("QQ",
264 "Fail joining group [%d] %s, needs authentication\n", 264 "Failed to join room ext id %u %s, needs authentication\n",
265 rmd->ext_id, rmd->title_utf8); 265 rmd->ext_id, rmd->title_utf8);
266 rmd->my_role = QQ_ROOM_ROLE_NO; 266 rmd->my_role = QQ_ROOM_ROLE_NO;
267 do_room_join_request(gc, rmd); 267 do_room_join_request(gc, rmd);
268 break; 268 break;
269 case QQ_ROOM_JOIN_DENIED: 269 case QQ_ROOM_JOIN_DENIED:
270 msg = g_strdup_printf(_("Qun %d denied to join"), rmd->ext_id); 270 msg = g_strdup_printf(_("Qun %u denied to join"), rmd->ext_id);
271 purple_notify_info(gc, _("QQ Qun Operation"), _("Failed:"), msg); 271 purple_notify_info(gc, _("QQ Qun Operation"), _("Failed:"), msg);
272 g_free(msg); 272 g_free(msg);
273 break; 273 break;
274 default: 274 default:
275 purple_debug_info("QQ", 275 purple_debug_info("QQ",
276 "Failed joining group [%d] %s, unknown reply: 0x%02x\n", 276 "Failed to join room ext id %u %s, unknown reply: 0x%02x\n",
277 rmd->ext_id, rmd->title_utf8, reply); 277 rmd->ext_id, rmd->title_utf8, reply);
278 278
279 purple_notify_info(gc, _("QQ Qun Operation"), _("Failed:"), _("Join Qun, Unknow Reply")); 279 purple_notify_info(gc, _("QQ Qun Operation"), _("Failed:"), _("Join Qun, Unknow Reply"));
280 } 280 }
281 } 281 }
296 ext_id_str = g_hash_table_lookup(data, QQ_ROOM_KEY_EXTERNAL_ID); 296 ext_id_str = g_hash_table_lookup(data, QQ_ROOM_KEY_EXTERNAL_ID);
297 id_str = g_hash_table_lookup(data, QQ_ROOM_KEY_INTERNAL_ID); 297 id_str = g_hash_table_lookup(data, QQ_ROOM_KEY_INTERNAL_ID);
298 purple_debug_info("QQ", "Join room %s, extend id %s\n", id_str, ext_id_str); 298 purple_debug_info("QQ", "Join room %s, extend id %s\n", id_str, ext_id_str);
299 299
300 if (id_str != NULL) { 300 if (id_str != NULL) {
301 id = strtol(id_str, NULL, 10); 301 id = strtoul(id_str, NULL, 10);
302 if (id != 0) { 302 if (id != 0) {
303 rmd = qq_room_data_find(gc, id); 303 rmd = qq_room_data_find(gc, id);
304 if (rmd) { 304 if (rmd) {
305 qq_request_room_join(gc, rmd); 305 qq_request_room_join(gc, rmd);
306 return; 306 return;
310 310
311 purple_debug_info("QQ", "Search and join extend id %s\n", ext_id_str); 311 purple_debug_info("QQ", "Search and join extend id %s\n", ext_id_str);
312 if (ext_id_str == NULL) { 312 if (ext_id_str == NULL) {
313 return; 313 return;
314 } 314 }
315 ext_id = strtol(ext_id_str, NULL, 10); 315 ext_id = strtoul(ext_id_str, NULL, 10);
316 if (ext_id == 0) { 316 if (ext_id == 0) {
317 return; 317 return;
318 } 318 }
319 319
320 qq_request_room_search(gc, ext_id, QQ_ROOM_SEARCH_FOR_JOIN); 320 qq_request_room_search(gc, ext_id, QQ_ROOM_SEARCH_FOR_JOIN);
343 { 343 {
344 guint8 raw_data[16] = {0}; 344 guint8 raw_data[16] = {0};
345 gint bytes = 0; 345 gint bytes = 0;
346 guint8 type; 346 guint8 type;
347 347
348 purple_debug_info("QQ", "Search QQ Qun %d\n", ext_id); 348 purple_debug_info("QQ", "Search QQ Qun %u\n", ext_id);
349 type = (ext_id == 0x00000000) ? QQ_ROOM_SEARCH_TYPE_DEMO : QQ_ROOM_SEARCH_TYPE_BY_ID; 349 type = (ext_id == 0x00000000) ? QQ_ROOM_SEARCH_TYPE_DEMO : QQ_ROOM_SEARCH_TYPE_BY_ID;
350 350
351 bytes = 0; 351 bytes = 0;
352 bytes += qq_put8(raw_data + bytes, type); 352 bytes += qq_put8(raw_data + bytes, type);
353 bytes += qq_put32(raw_data + bytes, ext_id); 353 bytes += qq_put32(raw_data + bytes, ext_id);
359 { 359 {
360 PurpleRoomlistRoom *room; 360 PurpleRoomlistRoom *room;
361 gchar field[11]; 361 gchar field[11];
362 362
363 room = purple_roomlist_room_new(PURPLE_ROOMLIST_ROOMTYPE_ROOM, rmd->title_utf8, NULL); 363 room = purple_roomlist_room_new(PURPLE_ROOMLIST_ROOMTYPE_ROOM, rmd->title_utf8, NULL);
364 g_snprintf(field, sizeof(field), "%d", rmd->ext_id); 364 g_snprintf(field, sizeof(field), "%u", rmd->ext_id);
365 purple_roomlist_room_add_field(qd->roomlist, room, field); 365 purple_roomlist_room_add_field(qd->roomlist, room, field);
366 g_snprintf(field, sizeof(field), "%d", rmd->creator_uid); 366 g_snprintf(field, sizeof(field), "%u", rmd->creator_uid);
367 purple_roomlist_room_add_field(qd->roomlist, room, field); 367 purple_roomlist_room_add_field(qd->roomlist, room, field);
368 purple_roomlist_room_add_field(qd->roomlist, room, rmd->desc_utf8); 368 purple_roomlist_room_add_field(qd->roomlist, room, rmd->desc_utf8);
369 g_snprintf(field, sizeof(field), "%d", rmd->id); 369 g_snprintf(field, sizeof(field), "%u", rmd->id);
370 purple_roomlist_room_add_field(qd->roomlist, room, field); 370 purple_roomlist_room_add_field(qd->roomlist, room, field);
371 g_snprintf(field, sizeof(field), "%d", rmd->type8); 371 g_snprintf(field, sizeof(field), "%d", rmd->type8);
372 purple_roomlist_room_add_field(qd->roomlist, room, field); 372 purple_roomlist_room_add_field(qd->roomlist, room, field);
373 g_snprintf(field, sizeof(field), "%d", rmd->auth_type); 373 g_snprintf(field, sizeof(field), "%d", rmd->auth_type);
374 purple_roomlist_room_add_field(qd->roomlist, room, field); 374 purple_roomlist_room_add_field(qd->roomlist, room, field);