Mercurial > pidgin
diff pidgin/plugins/gevolution/gevo-util.c @ 15373:5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
author | Sean Egan <seanegan@gmail.com> |
---|---|
date | Sat, 20 Jan 2007 02:32:10 +0000 |
parents | |
children | 535f002e7b0f |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/plugins/gevolution/gevo-util.c Sat Jan 20 02:32:10 2007 +0000 @@ -0,0 +1,183 @@ +/* + * 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 "internal.h" +#include "gtkblist.h" +#include "gtkgaim.h" +#include "gtkutils.h" + +#include "gevolution.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(GAIM_CONV_TYPE_IM, 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); + gaim_account_add_buddy(account, buddy); + + if (conv != NULL) + { + gaim_buddy_icon_update(gaim_conv_im_get_icon(GAIM_CONV_IM(conv))); + gaim_conversation_update(conv, GAIM_CONV_UPDATE_ADD); + } +} + +GList * +gevo_get_groups(void) +{ + GList *list = NULL; + GaimGroup *g; + GaimBlistNode *gnode; + + if (gaim_get_blist()->root == NULL) + { + list = g_list_append(list, (gpointer)_("Buddies")); + } + else + { + for (gnode = gaim_get_blist()->root; + gnode != NULL; + gnode = gnode->next) + { + if (GAIM_BLIST_NODE_IS_GROUP(gnode)) + { + g = (GaimGroup *)gnode; + list = g_list_append(list, g->name); + } + } + } + + return list; +} + +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; + else if (!strcmp(protocol_id, "prpl-novell")) + protocol_field = E_CONTACT_IM_GROUPWISE; + + return protocol_field; +} + +gboolean +gevo_prpl_is_supported(GaimAccount *account, GaimBuddy *buddy) +{ + return (gevo_prpl_get_field(account, buddy) != 0); +} + +gboolean +gevo_load_addressbook(const gchar* uri, EBook **book, GError **error) +{ + gboolean result = FALSE; + + g_return_val_if_fail(book != NULL, FALSE); + + if (uri == NULL) + *book = e_book_new_system_addressbook(NULL); + else + *book = e_book_new_from_uri(uri, error); + + result = e_book_open(*book, FALSE, NULL); + + if (!result && *book != NULL) + { + g_object_unref(*book); + *book = NULL; + } + + return result; +} + +char * +gevo_get_email_for_buddy(GaimBuddy *buddy) +{ + EContact *contact; + char *mail = NULL; + + contact = gevo_search_buddy_in_contacts(buddy, NULL); + + if (contact != NULL) + { + mail = g_strdup(e_contact_get(contact, E_CONTACT_EMAIL_1)); + g_object_unref(contact); + } + + if (mail == NULL) + { + GaimAccount *account = gaim_buddy_get_account(buddy); + const char *prpl_id = gaim_account_get_protocol_id(account); + + if (!strcmp(prpl_id, "prpl-msn")) + { + mail = g_strdup(gaim_normalize(account, + gaim_buddy_get_name(buddy))); + } + else if (!strcmp(prpl_id, "prpl-yahoo")) + { + mail = g_strdup_printf("%s@yahoo.com", + gaim_normalize(account, + gaim_buddy_get_name(buddy))); + } + } + + return mail; +}