コード例 #1
0
ファイル: buddy_opt.c プロジェクト: wosigh/messaging-plugins
/* 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;
}
コード例 #2
0
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;
}