Mercurial > pidgin.yaz
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 } |