diff plugins/gevolution/gevo-util.c @ 8089:35db601609e3

[gaim-migrate @ 8788] Gaim-Evolution Buddy List-Addressbook syncronocity by our very own Chip X. Eightysix. committer: Tailor Script <tailor@pidgin.im>
author Sean Egan <seanegan@gmail.com>
date Tue, 13 Jan 2004 01:45:32 +0000
parents
children 8b62cc40069b
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/gevolution/gevo-util.c	Tue Jan 13 01:45:32 2004 +0000
@@ -0,0 +1,158 @@
+/*
+ * Evolution integration plugin for Gaim
+ *
+ * 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 "gtkinternal.h"
+#include "gtkblist.h"
+#include "gtkutils.h"
+
+#include <libebook/e-book.h>
+
+void
+gevo_add_buddy(GaimAccount *account, const char *group_name,
+			   const char *screenname, const char *alias)
+{
+	GaimConversation *conv = NULL;
+	GaimBuddy *buddy;
+	GaimGroup *group;
+
+	conv = gaim_find_conversation_with_account(screenname, account);
+
+	if ((group = gaim_find_group(group_name)) == NULL)
+	{
+		group = gaim_group_new(group_name);
+		gaim_blist_add_group(group, NULL);
+	}
+
+	buddy = gaim_buddy_new(account, screenname, alias);
+	gaim_blist_add_buddy(buddy, NULL, group, NULL);
+	serv_add_buddy(gaim_account_get_connection(account), screenname, group);
+
+	if (conv != NULL)
+	{
+		gaim_buddy_icon_update(gaim_conv_im_get_icon(GAIM_CONV_IM(conv)));
+		gaim_conversation_update(conv, GAIM_CONV_UPDATE_ADD);
+
+		gaim_blist_save();
+	}
+}
+
+GList *
+gevo_get_groups(void)
+{
+	GList *tmp = NULL;
+	char *tmp2;
+	GaimGroup *g;
+	GaimBlistNode *gnode;
+
+	if (gaim_get_blist()->root == NULL)
+	{
+		tmp2 = g_strdup(_("Buddies"));
+		tmp  = g_list_append(tmp, tmp2);
+	}
+	else
+	{
+		for (gnode = gaim_get_blist()->root;
+			 gnode != NULL;
+			 gnode = gnode->next)
+		{
+			if (GAIM_BLIST_NODE_IS_GROUP(gnode))
+			{
+				g    = (GaimGroup *)gnode;
+				tmp2 = g->name;
+				tmp  = g_list_append(tmp, tmp2);
+			}
+		}
+	}
+
+	return tmp;
+}
+
+EContactField
+gevo_prpl_get_field(GaimAccount *account, GaimBuddy *buddy)
+{
+	EContactField protocol_field = 0;
+	const char *protocol_id;
+
+	g_return_val_if_fail(account != NULL, 0);
+
+	protocol_id = gaim_account_get_protocol_id(account);
+
+	if (!strcmp(protocol_id, "prpl-oscar"))
+	{
+		GaimConnection *gc;
+		GaimPluginProtocolInfo *prpl_info;
+
+		gc = gaim_account_get_connection(account);
+
+		prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
+
+		if (!strcmp("aim", prpl_info->list_icon(account, buddy)))
+		{
+			protocol_field = E_CONTACT_IM_AIM;
+		}
+		else
+			protocol_field = E_CONTACT_IM_ICQ;
+	}
+	else if (!strcmp(protocol_id, "prpl-msn"))
+		protocol_field = E_CONTACT_IM_MSN;
+	else if (!strcmp(protocol_id, "prpl-yahoo"))
+		protocol_field = E_CONTACT_IM_YAHOO;
+	else if (!strcmp(protocol_id, "prpl-jabber"))
+		protocol_field = E_CONTACT_IM_JABBER;
+
+	return protocol_field;
+}
+
+gboolean
+gevo_prpl_is_supported(GaimAccount *account, GaimBuddy *buddy)
+{
+	return (gevo_prpl_get_field(account, buddy) != 0);
+}
+
+gboolean
+gevo_load_addressbook(EBook **book, GError **error)
+{
+	char *filename;
+	char *uri;
+	gboolean result;
+
+	g_return_val_if_fail(book != NULL, FALSE);
+
+	*book = e_book_new();
+
+	filename = g_build_filename(g_get_home_dir(),
+			".evolution/addressbook/local/OnThisComputer/Personal", NULL);
+
+	uri = g_strdup_printf("file://%s", filename);
+
+	g_free(filename);
+
+	result = e_book_load_uri(*book, uri, FALSE, error);
+
+	g_free(uri);
+
+	if (!result)
+	{
+		g_object_unref(*book);
+		*book = NULL;
+	}
+
+	return result;
+}