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

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

?? eds-utils.c

?? Linux下的多協議即時通訊程序源代碼
?? C
字號:
/* * Evolution integration plugin for Purple * * Copyright (C) 2004 Henry Jen. * * 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 "gtkimhtml.h"#include "debug.h"#include "gevolution.h"GtkTreeModel *gevo_addrbooks_model_new(){	return GTK_TREE_MODEL(gtk_list_store_new(NUM_ADDRBOOK_COLUMNS,											 G_TYPE_STRING, G_TYPE_STRING));}voidgevo_addrbooks_model_unref(GtkTreeModel *model){	GtkTreeIter iter;	g_return_if_fail(model != NULL);	g_return_if_fail(GTK_IS_LIST_STORE(model));	if (!gtk_tree_model_get_iter_first(model, &iter))		return;	g_object_unref(model);}voidgevo_addrbooks_model_populate(GtkTreeModel *model){	ESourceList *addressbooks;	GError *err;	GSList *groups, *g;	GtkTreeIter iter;	GtkListStore *list;	g_return_if_fail(model != NULL);	g_return_if_fail(GTK_IS_LIST_STORE(model));	list = GTK_LIST_STORE(model);	if (!e_book_get_addressbooks(&addressbooks, &err))	{		purple_debug_error("evolution",						 "Unable to fetch list of address books.\n");		gtk_list_store_append(list, &iter);		gtk_list_store_set(list, &iter,						   ADDRBOOK_COLUMN_NAME, _("None"),						   ADDRBOOK_COLUMN_URI,  NULL,						   -1);		return;	}	groups = e_source_list_peek_groups(addressbooks);	if (groups == NULL)	{		gtk_list_store_append(list, &iter);		gtk_list_store_set(list, &iter,						   ADDRBOOK_COLUMN_NAME, _("None"),						   ADDRBOOK_COLUMN_URI,  NULL,						   -1);		return;	}	for (g = groups; g != NULL; g = g->next)	{		GSList *sources, *s;		sources = e_source_group_peek_sources(g->data);		for (s = sources; s != NULL; s = s->next)		{			ESource *source = E_SOURCE(s->data);			g_object_ref(source);			gtk_list_store_append(list, &iter);			gtk_list_store_set(list, &iter,							   ADDRBOOK_COLUMN_NAME, e_source_peek_name(source),							   ADDRBOOK_COLUMN_URI,  e_source_get_uri(source),							   -1);		}	}	g_object_unref(addressbooks);}static EContact * gevo_run_query_in_uri(const gchar *uri, EBookQuery *query){	EBook *book;	gboolean status;	GList *cards;	if (!gevo_load_addressbook(uri, &book, NULL))	{		purple_debug_error("evolution",						 "Error retrieving addressbook\n");		return NULL;	}	status = e_book_get_contacts(book, query, &cards, NULL);	if (!status)	{		purple_debug_error("evolution", "Error %d in getting card list\n",						 status);		g_object_unref(book);		return NULL;	}	g_object_unref(book);	if (cards != NULL)	{		EContact *contact = E_CONTACT(cards->data);		GList *cards2 = cards->next;		if (cards2 != NULL)		{			/* Break off the first contact and free the rest. */			cards->next = NULL;			cards2->prev = NULL;			g_list_foreach(cards2, (GFunc)g_object_unref, NULL);		}		/* Free the whole list. */		g_list_free(cards);		return contact;	}	return NULL;}/* * Search for a buddy in the Evolution contacts. * * @param buddy The buddy to search for. * @param query An optional query. This function takes ownership of @a query, *              so callers must e_book_query_ref() it in advance (to obtain a *              second reference) if they want to reuse @a query. */EContact * gevo_search_buddy_in_contacts(PurpleBuddy *buddy, EBookQuery *query){	ESourceList *addressbooks;	GError *err;	EBookQuery *full_query;	GSList *groups, *g;	EContact *result;	EContactField protocol_field = gevo_prpl_get_field(buddy->account, buddy);	if (protocol_field == 0)		return NULL;	if (query != NULL)	{		EBookQuery *queries[2];		queries[0] = query;		queries[1] = e_book_query_field_test(protocol_field, E_BOOK_QUERY_IS, buddy->name);		if (queries[1] == NULL)		{			purple_debug_error("evolution", "Error in creating protocol query\n");			e_book_query_unref(query);			return NULL;		}		full_query = e_book_query_and(2, queries, TRUE);	}	else	{		full_query = e_book_query_field_test(protocol_field, E_BOOK_QUERY_IS, buddy->name);		if (full_query == NULL)		{			purple_debug_error("evolution", "Error in creating protocol query\n");			return NULL;		}	}	if (!e_book_get_addressbooks(&addressbooks, &err))	{		purple_debug_error("evolution",						 "Unable to fetch list of address books.\n");		e_book_query_unref(full_query);		if (err != NULL)			g_error_free(err);		return NULL;	}	groups = e_source_list_peek_groups(addressbooks);	if (groups == NULL)	{		g_object_unref(addressbooks);		e_book_query_unref(full_query);		return NULL;	}	for (g = groups; g != NULL; g = g->next)	{		GSList *sources, *s;		sources = e_source_group_peek_sources(g->data);		for (s = sources; s != NULL; s = s->next)		{			result = gevo_run_query_in_uri(e_source_get_uri(E_SOURCE(s->data)), full_query);			if (result != NULL) {			    g_object_unref(addressbooks);				e_book_query_unref(full_query);			    return result;			}		}	}	g_object_unref(addressbooks);	e_book_query_unref(full_query);	return NULL;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆一区二区三| 成人av影视在线观看| 国产日韩精品一区二区浪潮av | 精品福利av导航| 99精品热视频| 日本成人在线视频网站| 亚洲欧洲精品一区二区三区| 欧美一级黄色录像| 色婷婷综合久久久中文一区二区| 久久99热这里只有精品| 亚洲一区在线观看免费观看电影高清 | 日本精品视频一区二区| 国产成人激情av| 午夜精品久久久久久久99水蜜桃| 国产精品久久免费看| 日韩免费成人网| 欧美色视频一区| k8久久久一区二区三区| 九九九久久久精品| 亚洲国产精品一区二区久久恐怖片| 国产免费观看久久| 2023国产精品自拍| 在线不卡中文字幕播放| 欧美综合久久久| 成人av电影在线播放| 韩国成人福利片在线播放| 天堂久久一区二区三区| 亚洲一区免费视频| 综合在线观看色| 中文字幕精品一区二区三区精品| 欧美精品一区二区三区在线播放| 制服丝袜中文字幕亚洲| 欧美日韩一级黄| 欧美亚一区二区| 国产欧美日韩综合| 亚洲精品一区在线观看| 日韩精品一区二| 欧美不卡一区二区三区四区| 欧美一区二区在线视频| 9191久久久久久久久久久| 欧美日韩免费电影| 欧美日韩精品一区二区天天拍小说 | 国产精品青草久久| 国产精品看片你懂得 | 亚洲www啪成人一区二区麻豆| 亚洲精品中文字幕在线观看| 最新国产の精品合集bt伙计| 国产精品久久久久久久久久免费看| 国产日韩v精品一区二区| 久久精品一二三| 中文无字幕一区二区三区 | 日本不卡123| 美国一区二区三区在线播放| 久久99精品久久久久久| 经典三级在线一区| 国产精品69毛片高清亚洲| 成人免费视频播放| 91亚洲精品久久久蜜桃网站 | 99在线热播精品免费| 99国产精品久久久久久久久久久 | av一区二区久久| 99在线热播精品免费| 91成人免费网站| 91麻豆精品久久久久蜜臀| 欧美一区二区美女| 久久久夜色精品亚洲| 亚洲欧洲99久久| 亚洲成av人**亚洲成av**| 久久国产精品免费| 成人黄动漫网站免费app| 91久久精品日日躁夜夜躁欧美| 欧美三级午夜理伦三级中视频| 久久精品男人天堂av| 日韩你懂的在线播放| 91麻豆精品国产91久久久资源速度| 国产成人啪免费观看软件| 亚洲国产精品影院| 欧美电视剧在线观看完整版| 亚洲免费大片在线观看| 亚洲人成7777| 免费高清在线视频一区·| 国产精品亚洲一区二区三区妖精| 国产一区二区三区美女| 午夜成人免费视频| 高清不卡一区二区| 国产精品每日更新在线播放网址| 狠狠色狠狠色综合| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 国产女同性恋一区二区| 精品一区二区三区欧美| 色综合激情五月| 中文一区二区在线观看| 国产一区二区三区免费在线观看| 欧美日韩国产综合草草| 人人超碰91尤物精品国产| 日韩视频中午一区| 亚洲精品亚洲人成人网| 国产一区二区三区在线观看免费视频 | 日韩精品一区二区三区视频在线观看| 久久天天做天天爱综合色| 精品制服美女久久| 日韩一级大片在线| 午夜国产精品一区| 欧美精品久久一区二区三区| 一区二区三区日韩在线观看| 成人av高清在线| 亚洲自拍偷拍av| 欧美日韩视频不卡| 一区二区三区精品视频| 欧美一级理论片| 91久久精品一区二区三区| 老鸭窝一区二区久久精品| 欧美精品久久久久久久多人混战| 奇米777欧美一区二区| 久久综合狠狠综合久久激情| 成人动漫一区二区三区| 亚洲免费av在线| 精品国产伦一区二区三区观看体验 | 欧美日韩二区三区| 国产精品一区二区三区乱码| 精品一区二区三区欧美| 免费精品视频在线| 日韩av电影一区| 视频一区二区不卡| 日韩高清中文字幕一区| 日韩制服丝袜先锋影音| 亚洲一区二区在线免费观看视频| 中国色在线观看另类| 欧美极品美女视频| 国产精品护士白丝一区av| 亚洲国产精品激情在线观看| 欧美日韩视频在线观看一区二区三区| 国产美女精品一区二区三区| 日本人妖一区二区| 午夜伊人狠狠久久| 一区二区三区欧美视频| 国产精品久久久久久久第一福利 | 成人深夜福利app| 国产自产高清不卡| 亚洲一级二级在线| 国产精品人成在线观看免费| 国产精品美女www爽爽爽| 日韩伦理av电影| 污片在线观看一区二区| 久久人人超碰精品| 欧美日韩黄视频| 3d动漫精品啪啪1区2区免费 | 色综合久久天天| 99精品欧美一区二区三区小说| 国产精品一级片| 国产福利一区二区三区视频| 日本强好片久久久久久aaa| 午夜一区二区三区视频| 亚洲国产三级在线| 日韩在线一区二区三区| 免费在线欧美视频| 看片的网站亚洲| 国产精品一色哟哟哟| 成人妖精视频yjsp地址| 91一区二区在线观看| 欧美久久久久久蜜桃| 日韩一区二区三区免费观看| 337p粉嫩大胆色噜噜噜噜亚洲| 日韩欧美精品三级| 国产精品女同互慰在线看| 亚洲美女视频在线观看| 视频在线观看国产精品| 国产一区二区调教| 91免费在线播放| 日韩一区二区电影| 国产精品福利电影一区二区三区四区| 怡红院av一区二区三区| 日韩av成人高清| 99免费精品视频| 精品日韩欧美在线| 一区二区三区四区中文字幕| 精品午夜久久福利影院 | 欧美一区二区三区小说| 中文字幕精品一区二区精品绿巨人 | 国产精品久久久久毛片软件| 偷拍日韩校园综合在线| 色综合天天综合狠狠| 日韩一区二区三区免费看| 日韩美女视频19| 极品少妇xxxx偷拍精品少妇| 91精品办公室少妇高潮对白| 精品久久久久久久一区二区蜜臀| 亚洲制服丝袜av| 91小视频在线免费看| 国产日韩一级二级三级| 捆绑调教一区二区三区| 555www色欧美视频| 天堂影院一区二区| 欧美人体做爰大胆视频| 亚洲va韩国va欧美va| 日本精品视频一区二区| 1区2区3区国产精品| 国产99久久久国产精品免费看 | 久久精品一区二区三区av| 午夜日韩在线观看|