亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? add_buddy_dialog.c

?? Linux下的多協議即時通訊程序源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * Evolution integration plugin for Purple * * Copyright (C) 2003 Christian Hammond. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. */#include "internal.h"#include "gtkblist.h"#include "pidgin.h"#include "gtkutils.h"#include "debug.h"#include "gevolution.h"#include <stdlib.h>enum{	COLUMN_NAME,	COLUMN_PRPL_ICON,	COLUMN_USERNAME,	COLUMN_DATA,	NUM_COLUMNS};static gintdelete_win_cb(GtkWidget *w, GdkEvent *event, GevoAddBuddyDialog *dialog){	gtk_widget_destroy(dialog->win);	if (dialog->contacts != NULL)	{		g_list_foreach(dialog->contacts, (GFunc)g_object_unref, NULL);		g_list_free(dialog->contacts);	}	if (dialog->book != NULL)		g_object_unref(dialog->book);	gevo_addrbooks_model_unref(dialog->addrbooks);	if (dialog->username != NULL)		g_free(dialog->username);	g_free(dialog);	return 0;}static voidnew_person_cb(GtkWidget *w, GevoAddBuddyDialog *dialog){	const char *group_name;	group_name =		gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(dialog->group_combo)->entry));	gevo_new_person_dialog_show(dialog->book, NULL, dialog->account, dialog->username,								(*group_name ? group_name : NULL),								NULL, FALSE);	delete_win_cb(NULL, NULL, dialog);}static voidcancel_cb(GtkWidget *w, GevoAddBuddyDialog *dialog){	delete_win_cb(NULL, NULL, dialog);}static voidselect_buddy_cb(GtkWidget *w, GevoAddBuddyDialog *dialog){	GtkTreeSelection *selection;	GtkTreeIter iter;	const char *group_name;	const char *fullname;	const char *username;	EContact *contact;	selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dialog->treeview));	if (!gtk_tree_selection_get_selected(selection, NULL, &iter))		return;	gtk_tree_model_get(GTK_TREE_MODEL(dialog->model), &iter,					   COLUMN_NAME, &fullname,					   COLUMN_USERNAME, &username,					   COLUMN_DATA, &contact,					   -1);	group_name =		gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(dialog->group_combo)->entry));	if (username == NULL || *username == '\0')	{		gevo_new_person_dialog_show(dialog->book, NULL, dialog->account, dialog->username,									(*group_name ? group_name : NULL),									NULL, FALSE);	}	else	{		gevo_add_buddy(dialog->account, group_name, username, fullname);	}	delete_win_cb(NULL, NULL, dialog);}static voidadd_columns(GevoAddBuddyDialog *dialog){	GtkCellRenderer *renderer;	GtkTreeViewColumn *column;	/* Name column */	column = gtk_tree_view_column_new();	gtk_tree_view_column_set_title(column, _("Name"));	gtk_tree_view_insert_column(GTK_TREE_VIEW(dialog->treeview), column, -1);	gtk_tree_view_column_set_sort_column_id(column, COLUMN_NAME);	renderer = gtk_cell_renderer_text_new();	gtk_tree_view_column_pack_start(column, renderer, TRUE);	gtk_tree_view_column_add_attribute(column, renderer,									   "text", COLUMN_NAME);	/* Account column */	column = gtk_tree_view_column_new();	gtk_tree_view_column_set_title(column, _("Instant Messaging"));	gtk_tree_view_insert_column(GTK_TREE_VIEW(dialog->treeview), column, -1);	gtk_tree_view_column_set_sort_column_id(column, COLUMN_USERNAME);	/* Protocol icon */	renderer = gtk_cell_renderer_pixbuf_new();	gtk_tree_view_column_pack_start(column, renderer, FALSE);	gtk_tree_view_column_add_attribute(column, renderer,									   "pixbuf", COLUMN_PRPL_ICON);	/* Account name */	renderer = gtk_cell_renderer_text_new();	gtk_tree_view_column_pack_start(column, renderer, TRUE);	gtk_tree_view_column_add_attribute(column, renderer,									   "text", COLUMN_USERNAME);}static voidadd_ims(GevoAddBuddyDialog *dialog, EContact *contact, const char *name,		GList *list, const char *id){	PurpleAccount *account = NULL;	GList *l;	GtkTreeIter iter;	GdkPixbuf *pixbuf;	if (list == NULL)		return;	for (l = purple_connections_get_all(); l != NULL; l = l->next)	{		PurpleConnection *gc = (PurpleConnection *)l->data;		account = purple_connection_get_account(gc);		if (!strcmp(purple_account_get_protocol_id(account), id))			break;		account = NULL;	}	if (account == NULL)		return;	pixbuf = pidgin_create_prpl_icon(account, 0.5);	for (l = list; l != NULL; l = l->next)	{		char *account_name = (char *)l->data;		if (account_name == NULL)			continue;		if (purple_find_buddy(dialog->account, account_name) != NULL)			continue;		gtk_list_store_append(dialog->model, &iter);		gtk_list_store_set(dialog->model, &iter,						   COLUMN_NAME, name,						   COLUMN_PRPL_ICON, pixbuf,						   COLUMN_USERNAME, account_name,						   COLUMN_DATA, contact,						   -1);		if (!strcmp(purple_account_get_protocol_id(account),					purple_account_get_protocol_id(dialog->account)) &&			dialog->username != NULL &&			!strcmp(account_name, dialog->username))		{			GtkTreeSelection *selection;			/* This is it. Select it. */			selection = gtk_tree_view_get_selection(				GTK_TREE_VIEW(dialog->treeview));			gtk_tree_selection_select_iter(selection, &iter);		}	}	if (pixbuf != NULL)		g_object_unref(G_OBJECT(pixbuf));	g_list_foreach(list, (GFunc)g_free, NULL);	g_list_free(list);}static voidpopulate_treeview(GevoAddBuddyDialog *dialog, const gchar *uri){	EBookQuery *query;	EBook *book;	gboolean status;	GList *cards, *c;	if (dialog->book != NULL)	{		g_object_unref(dialog->book);		dialog->book = NULL;	}	if (dialog->contacts != NULL)	{		g_list_foreach(dialog->contacts, (GFunc)g_object_unref, NULL);		g_list_free(dialog->contacts);		dialog->contacts = NULL;	}	gtk_list_store_clear(dialog->model);	if (!gevo_load_addressbook(uri, &book, NULL))	{		purple_debug_error("evolution",						 "Error retrieving default addressbook\n");		return;	}	query = e_book_query_field_exists(E_CONTACT_FULL_NAME);	if (query == NULL)	{		purple_debug_error("evolution", "Error in creating query\n");		g_object_unref(book);		return;	}	status = e_book_get_contacts(book, query, &cards, NULL);	e_book_query_unref(query);	if (!status)	{		purple_debug_error("evolution", "Error %d in getting card list\n",						 status);		g_object_unref(book);		return;	}	for (c = cards; c != NULL; c = c->next)	{		EContact *contact = E_CONTACT(c->data);		const char *name;		GList *aims, *jabbers, *yahoos, *msns, *icqs, *novells;		name = e_contact_get_const(contact, E_CONTACT_FULL_NAME);		aims    = e_contact_get(contact, E_CONTACT_IM_AIM);		jabbers = e_contact_get(contact, E_CONTACT_IM_JABBER);		yahoos  = e_contact_get(contact, E_CONTACT_IM_YAHOO);		msns    = e_contact_get(contact, E_CONTACT_IM_MSN);		icqs    = e_contact_get(contact, E_CONTACT_IM_ICQ);		novells = e_contact_get(contact, E_CONTACT_IM_GROUPWISE);		if (aims == NULL && jabbers == NULL && yahoos == NULL &&			msns == NULL && icqs == NULL && novells == NULL)		{			GtkTreeIter iter;			gtk_list_store_append(dialog->model, &iter);			gtk_list_store_set(dialog->model, &iter,							   COLUMN_NAME, name,							   COLUMN_DATA, contact,							   -1);		}		else		{			add_ims(dialog, contact, name, aims,    "prpl-oscar");			add_ims(dialog, contact, name, jabbers, "prpl-jabber");			add_ims(dialog, contact, name, yahoos,  "prpl-yahoo");			add_ims(dialog, contact, name, msns,    "prpl-msn");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合夜色一区| 国产精品综合二区| 国产日韩av一区二区| 欧美美女bb生活片| 在线观看欧美精品| 一本大道久久精品懂色aⅴ| 不卡av电影在线播放| 成人黄色一级视频| 成人精品gif动图一区| 福利91精品一区二区三区| 国产中文字幕一区| 国产99久久久国产精品免费看 | 国产一区二区三区四区五区入口| 亚洲国产精品一区二区尤物区| 亚洲卡通动漫在线| 亚洲欧美另类在线| 亚洲精品日韩综合观看成人91| 一区二区三区欧美| 午夜av区久久| 免费成人性网站| 激情久久五月天| 成a人片亚洲日本久久| av一区二区三区四区| 色琪琪一区二区三区亚洲区| 欧美日韩精品久久久| 日韩欧美激情四射| 亚洲精品一区二区三区蜜桃下载| 久久久精品一品道一区| 中文字幕+乱码+中文字幕一区| 国产精品国产三级国产三级人妇| 亚洲图片另类小说| 丝袜诱惑制服诱惑色一区在线观看| 日韩精品一二三四| 国产福利电影一区二区三区| 99久久综合精品| 欧美日本一区二区在线观看| 久久九九影视网| 亚洲女同女同女同女同女同69| 日本怡春院一区二区| 国产成人午夜视频| 欧美三级电影在线看| 久久日一线二线三线suv| 亚洲免费观看在线观看| 美女高潮久久久| 99在线热播精品免费| 欧美xxxx在线观看| 国产欧美日韩久久| 丝瓜av网站精品一区二区| 成熟亚洲日本毛茸茸凸凹| 欧美日韩国产不卡| 日本一区二区三区四区| 视频一区欧美日韩| 波波电影院一区二区三区| 91精品在线观看入口| 国产精品污www在线观看| 日日噜噜夜夜狠狠视频欧美人| 风间由美一区二区三区在线观看| 精品视频资源站| 国产精品高清亚洲| 狠狠色丁香久久婷婷综| 欧美日韩精品久久久| 成人免费在线视频观看| 狠狠色丁香婷婷综合久久片| 欧美日韩亚洲综合在线| 亚洲天堂网中文字| 成人毛片在线观看| 久久综合九色综合久久久精品综合| 有坂深雪av一区二区精品| 成人午夜av影视| 久久久亚洲国产美女国产盗摄| 性欧美疯狂xxxxbbbb| 色老汉一区二区三区| 中文字幕在线不卡国产视频| 国产一区二区三区久久久| 日韩手机在线导航| 日韩高清不卡一区二区三区| 91久久免费观看| 亚洲欧美一区二区久久| av亚洲精华国产精华| 国产精品日日摸夜夜摸av| 国产一区二区精品久久99| 日韩精品一区二区三区四区| 日韩和欧美一区二区| 欧美美女激情18p| 日韩高清一区在线| 日韩美女一区二区三区四区| 久久国产欧美日韩精品| 日韩视频123| 国产一区在线观看麻豆| 久久久精品一品道一区| 丁香婷婷综合色啪| 亚洲欧美综合网| 日本韩国欧美国产| 亚洲bt欧美bt精品| 精品国内二区三区| 国产成人av在线影院| 中文字幕精品—区二区四季| 成人h动漫精品一区二区| 亚洲男同1069视频| 在线免费观看日本一区| 亚洲123区在线观看| 欧美成人aa大片| 国产成人aaaa| 一区二区三区中文免费| 欧美顶级少妇做爰| 国内一区二区视频| 最新国产成人在线观看| 欧美性猛片xxxx免费看久爱| 久久成人麻豆午夜电影| 久久久久久久久99精品| 99精品视频在线观看| 午夜影院久久久| 久久久99久久精品欧美| 色婷婷av一区二区| 国产综合色在线视频区| 亚洲人成网站精品片在线观看| 欧美日本一区二区在线观看| 国产精品一区二区久久精品爱涩| 亚洲欧美电影一区二区| 日韩一区二区三区电影在线观看| 成人黄色av电影| 亚洲va欧美va国产va天堂影院| 精品成人一区二区| 色猫猫国产区一区二在线视频| 美腿丝袜亚洲一区| 最新国产成人在线观看| 日韩欧美国产一区在线观看| 99精品一区二区| 精品一区二区三区在线观看国产 | 欧美一卡二卡三卡| 不卡av电影在线播放| 久久狠狠亚洲综合| 一区二区在线观看视频在线观看| 精品国产青草久久久久福利| 色噜噜夜夜夜综合网| 国产91清纯白嫩初高中在线观看| 三级成人在线视频| 亚洲男同性视频| 中文字幕欧美区| 精品国产一区二区亚洲人成毛片 | 在线视频欧美精品| 国产高清精品网站| 卡一卡二国产精品| 五月婷婷另类国产| 亚洲美女电影在线| 日韩一区有码在线| 国产欧美久久久精品影院| 日韩欧美一级二级三级 | 一区二区三区四区高清精品免费观看 | 午夜欧美2019年伦理| 国产精品高潮呻吟久久| 国产调教视频一区| 久久综合久色欧美综合狠狠| 91精品午夜视频| 67194成人在线观看| 欧美日韩在线不卡| 精品视频一区二区三区免费| 在线视频国产一区| 日韩欧美中文字幕精品| 欧美日韩国产天堂| 欧美猛男gaygay网站| 欧美日韩国产首页| 91精品国产综合久久久久久久久久 | 亚洲国产视频在线| 亚洲午夜久久久久中文字幕久| 亚洲免费观看高清完整| 亚洲精品国产一区二区精华液| 亚洲欧美在线视频| 亚洲精品高清在线| 国产夜色精品一区二区av| 国产另类ts人妖一区二区| 午夜视频在线观看一区二区| 国产精品国产三级国产三级人妇| 国产亚洲一本大道中文在线| 国产婷婷色一区二区三区| 国产精品久久久久aaaa| 成人app在线| 91成人免费在线视频| 国产午夜亚洲精品理论片色戒| 亚洲va欧美va人人爽午夜| 成人黄色av电影| 久久这里只有精品首页| 亚洲国产成人av| 91在线一区二区| 国产亚洲一区二区在线观看| 日韩高清在线不卡| 欧美性xxxxx极品少妇| 中日韩av电影| 国产一区二区三区免费看| 欧美日韩黄色一区二区| 亚洲男人电影天堂| 成人影视亚洲图片在线| 久久日韩粉嫩一区二区三区| 麻豆极品一区二区三区| 在线播放/欧美激情| 亚洲mv在线观看| 欧美午夜电影网| 亚洲第一电影网| 欧美日韩亚洲国产综合| 亚洲一区二区在线播放相泽 |