/* create purple buddy without data and display with no-auth icon */ PurpleBuddy *qq_buddy_new(PurpleConnection *gc, guint32 uid) { PurpleBuddy *buddy; PurpleGroup *group; gchar *who; gchar *group_name; g_return_val_if_fail(gc->account != NULL && uid != 0, NULL); group_name = g_strdup_printf(PURPLE_GROUP_QQ_FORMAT, purple_account_get_username(gc->account)); group = qq_group_find_or_new(group_name); if (group == NULL) { purple_debug_error("QQ", "Failed creating group %s\n", group_name); return NULL; } purple_debug_info("QQ", "Add new purple buddy: [%u]\n", uid); who = uid_to_purple_name(uid); buddy = purple_buddy_new(gc->account, who, NULL); /* alias is NULL */ purple_buddy_set_protocol_data(buddy, NULL); g_free(who); purple_blist_add_buddy(buddy, NULL, group, NULL); g_free(group_name); return buddy; }
static PurpleChat *chat_new(PurpleConnection *gc, qq_room_data *rmd) { GHashTable *components; PurpleGroup *g; PurpleChat *chat; purple_debug_info("QQ", "Add new chat: id %u, qun id %u, title %s\n", rmd->id, rmd->qun_id, rmd->name == NULL ? "(NULL)" : rmd->name); components = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); g_hash_table_insert(components, g_strdup(QQ_ROOM_KEY_INTERNAL_ID), g_strdup_printf("%u", rmd->id)); g_hash_table_insert(components, g_strdup(QQ_ROOM_KEY_QUN_ID), g_strdup_printf("%u", rmd->qun_id)); g_hash_table_insert(components, g_strdup(QQ_ROOM_KEY_NAME), g_strdup(rmd->name)); g_hash_table_insert(components, g_strdup(QQ_ROOM_KEY_ISSHOW), g_strdup_printf("%u", rmd->is_show_chat)); chat = purple_chat_new(purple_connection_get_account(gc), rmd->name, components); g = qq_group_find_or_new(PURPLE_GROUP_QQ_ROOM); purple_blist_add_chat(chat, g, NULL); return chat; }