comparison pidgin/plugins/gevolution/gevo-util.c @ 15374: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
comparison
equal deleted inserted replaced
15373:f79e0f4df793 15374:5fe8042783c1
1 /*
2 * Evolution integration plugin for Gaim
3 *
4 * Copyright (C) 2003 Christian Hammond.
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License as
8 * published by the Free Software Foundation; either version 2 of the
9 * License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19 * 02111-1307, USA.
20 */
21 #include "internal.h"
22 #include "gtkblist.h"
23 #include "gtkgaim.h"
24 #include "gtkutils.h"
25
26 #include "gevolution.h"
27
28 void
29 gevo_add_buddy(GaimAccount *account, const char *group_name,
30 const char *screenname, const char *alias)
31 {
32 GaimConversation *conv = NULL;
33 GaimBuddy *buddy;
34 GaimGroup *group;
35
36 conv = gaim_find_conversation_with_account(GAIM_CONV_TYPE_IM, screenname, account);
37
38 if ((group = gaim_find_group(group_name)) == NULL)
39 {
40 group = gaim_group_new(group_name);
41 gaim_blist_add_group(group, NULL);
42 }
43
44 buddy = gaim_buddy_new(account, screenname, alias);
45 gaim_blist_add_buddy(buddy, NULL, group, NULL);
46 gaim_account_add_buddy(account, buddy);
47
48 if (conv != NULL)
49 {
50 gaim_buddy_icon_update(gaim_conv_im_get_icon(GAIM_CONV_IM(conv)));
51 gaim_conversation_update(conv, GAIM_CONV_UPDATE_ADD);
52 }
53 }
54
55 GList *
56 gevo_get_groups(void)
57 {
58 GList *list = NULL;
59 GaimGroup *g;
60 GaimBlistNode *gnode;
61
62 if (gaim_get_blist()->root == NULL)
63 {
64 list = g_list_append(list, (gpointer)_("Buddies"));
65 }
66 else
67 {
68 for (gnode = gaim_get_blist()->root;
69 gnode != NULL;
70 gnode = gnode->next)
71 {
72 if (GAIM_BLIST_NODE_IS_GROUP(gnode))
73 {
74 g = (GaimGroup *)gnode;
75 list = g_list_append(list, g->name);
76 }
77 }
78 }
79
80 return list;
81 }
82
83 EContactField
84 gevo_prpl_get_field(GaimAccount *account, GaimBuddy *buddy)
85 {
86 EContactField protocol_field = 0;
87 const char *protocol_id;
88
89 g_return_val_if_fail(account != NULL, 0);
90
91 protocol_id = gaim_account_get_protocol_id(account);
92
93 if (!strcmp(protocol_id, "prpl-oscar"))
94 {
95 GaimConnection *gc;
96 GaimPluginProtocolInfo *prpl_info;
97
98 gc = gaim_account_get_connection(account);
99
100 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
101
102 if (!strcmp("aim", prpl_info->list_icon(account, buddy)))
103 {
104 protocol_field = E_CONTACT_IM_AIM;
105 }
106 else
107 protocol_field = E_CONTACT_IM_ICQ;
108 }
109 else if (!strcmp(protocol_id, "prpl-msn"))
110 protocol_field = E_CONTACT_IM_MSN;
111 else if (!strcmp(protocol_id, "prpl-yahoo"))
112 protocol_field = E_CONTACT_IM_YAHOO;
113 else if (!strcmp(protocol_id, "prpl-jabber"))
114 protocol_field = E_CONTACT_IM_JABBER;
115 else if (!strcmp(protocol_id, "prpl-novell"))
116 protocol_field = E_CONTACT_IM_GROUPWISE;
117
118 return protocol_field;
119 }
120
121 gboolean
122 gevo_prpl_is_supported(GaimAccount *account, GaimBuddy *buddy)
123 {
124 return (gevo_prpl_get_field(account, buddy) != 0);
125 }
126
127 gboolean
128 gevo_load_addressbook(const gchar* uri, EBook **book, GError **error)
129 {
130 gboolean result = FALSE;
131
132 g_return_val_if_fail(book != NULL, FALSE);
133
134 if (uri == NULL)
135 *book = e_book_new_system_addressbook(NULL);
136 else
137 *book = e_book_new_from_uri(uri, error);
138
139 result = e_book_open(*book, FALSE, NULL);
140
141 if (!result && *book != NULL)
142 {
143 g_object_unref(*book);
144 *book = NULL;
145 }
146
147 return result;
148 }
149
150 char *
151 gevo_get_email_for_buddy(GaimBuddy *buddy)
152 {
153 EContact *contact;
154 char *mail = NULL;
155
156 contact = gevo_search_buddy_in_contacts(buddy, NULL);
157
158 if (contact != NULL)
159 {
160 mail = g_strdup(e_contact_get(contact, E_CONTACT_EMAIL_1));
161 g_object_unref(contact);
162 }
163
164 if (mail == NULL)
165 {
166 GaimAccount *account = gaim_buddy_get_account(buddy);
167 const char *prpl_id = gaim_account_get_protocol_id(account);
168
169 if (!strcmp(prpl_id, "prpl-msn"))
170 {
171 mail = g_strdup(gaim_normalize(account,
172 gaim_buddy_get_name(buddy)));
173 }
174 else if (!strcmp(prpl_id, "prpl-yahoo"))
175 {
176 mail = g_strdup_printf("%s@yahoo.com",
177 gaim_normalize(account,
178 gaim_buddy_get_name(buddy)));
179 }
180 }
181
182 return mail;
183 }