plugins/gevolution/eds-utils.c

branch
gaim
changeset 20470
77693555855f
parent 13071
b98e72d4089a
parent 20469
b2836a24d81e
child 20471
1966704b3e42
--- a/plugins/gevolution/eds-utils.c	Mon Apr 16 00:43:53 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,244 +0,0 @@
-/*
- * Evolution integration plugin for Gaim
- *
- * 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 "gtkgaim.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));
-}
-
-void
-gevo_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);
-}
-
-void
-gevo_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))
-	{
-		gaim_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))
-	{
-		gaim_debug_error("evolution",
-						 "Error retrieving addressbook\n");
-		return NULL;
-	}
-
-	status = e_book_get_contacts(book, query, &cards, NULL);
-	if (!status)
-	{
-		gaim_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(GaimBuddy *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)
-		{
-			gaim_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)
-		{
-			gaim_debug_error("evolution", "Error in creating protocol query\n");
-			return NULL;
-		}
-	}
-
-	if (!e_book_get_addressbooks(&addressbooks, &err))
-	{
-		gaim_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;
-}

mercurial