Sun, 22 Jul 2007 08:14:16 +0000
revert 'no visible tabs when only one conversation' as it proved unpopular. Made tabs only fill the entire width of the notebook when there's only one tab to avoid http://pidgin.im/~deryni/that_just_looks_dumb.png
| 8089 | 1 | /* |
| 15884 | 2 | * Evolution integration plugin for Purple |
| 8089 | 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 | */ | |
|
9825
85a5ebe9315f
[gaim-migrate @ 10696]
Christian Hammond <chipx86@chipx86.com>
parents:
9824
diff
changeset
|
21 | #include "internal.h" |
| 8089 | 22 | #include "gtkblist.h" |
| 15577 | 23 | #include "pidgin.h" |
| 8089 | 24 | #include "gtkutils.h" |
| 25 | ||
|
9046
7892b6524178
[gaim-migrate @ 9822]
Christian Hammond <chipx86@chipx86.com>
parents:
8474
diff
changeset
|
26 | #include "gevolution.h" |
|
7892b6524178
[gaim-migrate @ 9822]
Christian Hammond <chipx86@chipx86.com>
parents:
8474
diff
changeset
|
27 | |
| 8089 | 28 | void |
| 15884 | 29 | gevo_add_buddy(PurpleAccount *account, const char *group_name, |
| 8089 | 30 | const char *screenname, const char *alias) |
| 31 | { | |
| 15884 | 32 | PurpleConversation *conv = NULL; |
| 33 | PurpleBuddy *buddy; | |
| 34 | PurpleGroup *group; | |
| 8089 | 35 | |
| 15884 | 36 | conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, screenname, account); |
| 8089 | 37 | |
| 15884 | 38 | if ((group = purple_find_group(group_name)) == NULL) |
| 8089 | 39 | { |
| 15884 | 40 | group = purple_group_new(group_name); |
| 41 | purple_blist_add_group(group, NULL); | |
| 8089 | 42 | } |
| 43 | ||
| 15884 | 44 | buddy = purple_buddy_new(account, screenname, alias); |
| 45 | purple_blist_add_buddy(buddy, NULL, group, NULL); | |
| 46 | purple_account_add_buddy(account, buddy); | |
| 8089 | 47 | |
| 48 | if (conv != NULL) | |
| 49 | { | |
| 15884 | 50 | purple_buddy_icon_update(purple_conv_im_get_icon(PURPLE_CONV_IM(conv))); |
| 51 | purple_conversation_update(conv, PURPLE_CONV_UPDATE_ADD); | |
| 8089 | 52 | } |
| 53 | } | |
| 54 | ||
| 55 | GList * | |
| 56 | gevo_get_groups(void) | |
| 57 | { | |
|
10081
64e398f0eaa3
[gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents:
9825
diff
changeset
|
58 | GList *list = NULL; |
| 15884 | 59 | PurpleGroup *g; |
| 60 | PurpleBlistNode *gnode; | |
| 8089 | 61 | |
| 15884 | 62 | if (purple_get_blist()->root == NULL) |
| 8089 | 63 | { |
|
13107
704041197f4d
[gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents:
11643
diff
changeset
|
64 | list = g_list_append(list, (gpointer)_("Buddies")); |
| 8089 | 65 | } |
| 66 | else | |
| 67 | { | |
| 15884 | 68 | for (gnode = purple_get_blist()->root; |
| 8089 | 69 | gnode != NULL; |
| 70 | gnode = gnode->next) | |
| 71 | { | |
| 15884 | 72 | if (PURPLE_BLIST_NODE_IS_GROUP(gnode)) |
| 8089 | 73 | { |
| 15884 | 74 | g = (PurpleGroup *)gnode; |
|
10081
64e398f0eaa3
[gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents:
9825
diff
changeset
|
75 | list = g_list_append(list, g->name); |
| 8089 | 76 | } |
| 77 | } | |
| 78 | } | |
| 79 | ||
|
10081
64e398f0eaa3
[gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents:
9825
diff
changeset
|
80 | return list; |
| 8089 | 81 | } |
| 82 | ||
| 83 | EContactField | |
| 15884 | 84 | gevo_prpl_get_field(PurpleAccount *account, PurpleBuddy *buddy) |
| 8089 | 85 | { |
| 86 | EContactField protocol_field = 0; | |
| 87 | const char *protocol_id; | |
| 88 | ||
| 89 | g_return_val_if_fail(account != NULL, 0); | |
| 90 | ||
| 15884 | 91 | protocol_id = purple_account_get_protocol_id(account); |
| 8089 | 92 | |
| 93 | if (!strcmp(protocol_id, "prpl-oscar")) | |
| 94 | { | |
| 15884 | 95 | PurpleConnection *gc; |
| 96 | PurplePluginProtocolInfo *prpl_info; | |
| 8089 | 97 | |
| 15884 | 98 | gc = purple_account_get_connection(account); |
| 8089 | 99 | |
| 15884 | 100 | prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl); |
| 8089 | 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; | |
|
11054
ba2440c5ee48
[gaim-migrate @ 12992]
Stanislav Brabec <sbrabec@suse.cz>
parents:
10246
diff
changeset
|
115 | else if (!strcmp(protocol_id, "prpl-novell")) |
|
ba2440c5ee48
[gaim-migrate @ 12992]
Stanislav Brabec <sbrabec@suse.cz>
parents:
10246
diff
changeset
|
116 | protocol_field = E_CONTACT_IM_GROUPWISE; |
| 8089 | 117 | |
| 118 | return protocol_field; | |
| 119 | } | |
| 120 | ||
| 121 | gboolean | |
| 15884 | 122 | gevo_prpl_is_supported(PurpleAccount *account, PurpleBuddy *buddy) |
| 8089 | 123 | { |
| 124 | return (gevo_prpl_get_field(account, buddy) != 0); | |
| 125 | } | |
| 126 | ||
| 127 | gboolean | |
|
10081
64e398f0eaa3
[gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents:
9825
diff
changeset
|
128 | gevo_load_addressbook(const gchar* uri, EBook **book, GError **error) |
| 8089 | 129 | { |
|
9046
7892b6524178
[gaim-migrate @ 9822]
Christian Hammond <chipx86@chipx86.com>
parents:
8474
diff
changeset
|
130 | gboolean result = FALSE; |
| 8089 | 131 | |
| 132 | g_return_val_if_fail(book != NULL, FALSE); | |
| 133 | ||
|
10081
64e398f0eaa3
[gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents:
9825
diff
changeset
|
134 | if (uri == NULL) |
|
64e398f0eaa3
[gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents:
9825
diff
changeset
|
135 | *book = e_book_new_system_addressbook(NULL); |
|
64e398f0eaa3
[gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents:
9825
diff
changeset
|
136 | else |
|
64e398f0eaa3
[gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents:
9825
diff
changeset
|
137 | *book = e_book_new_from_uri(uri, error); |
|
9046
7892b6524178
[gaim-migrate @ 9822]
Christian Hammond <chipx86@chipx86.com>
parents:
8474
diff
changeset
|
138 | |
|
9352
110bd952f273
[gaim-migrate @ 10160]
Christian Hammond <chipx86@chipx86.com>
parents:
9293
diff
changeset
|
139 | result = e_book_open(*book, FALSE, NULL); |
| 8089 | 140 | |
|
9046
7892b6524178
[gaim-migrate @ 9822]
Christian Hammond <chipx86@chipx86.com>
parents:
8474
diff
changeset
|
141 | if (!result && *book != NULL) |
| 8089 | 142 | { |
| 143 | g_object_unref(*book); | |
| 144 | *book = NULL; | |
| 145 | } | |
| 146 | ||
| 147 | return result; | |
| 148 | } | |
|
15026
be82a893c65e
[gaim-migrate @ 17743]
Christian Hammond <chipx86@chipx86.com>
parents:
14253
diff
changeset
|
149 | |
|
be82a893c65e
[gaim-migrate @ 17743]
Christian Hammond <chipx86@chipx86.com>
parents:
14253
diff
changeset
|
150 | char * |
| 15884 | 151 | gevo_get_email_for_buddy(PurpleBuddy *buddy) |
|
15026
be82a893c65e
[gaim-migrate @ 17743]
Christian Hammond <chipx86@chipx86.com>
parents:
14253
diff
changeset
|
152 | { |
|
be82a893c65e
[gaim-migrate @ 17743]
Christian Hammond <chipx86@chipx86.com>
parents:
14253
diff
changeset
|
153 | EContact *contact; |
|
be82a893c65e
[gaim-migrate @ 17743]
Christian Hammond <chipx86@chipx86.com>
parents:
14253
diff
changeset
|
154 | char *mail = NULL; |
|
be82a893c65e
[gaim-migrate @ 17743]
Christian Hammond <chipx86@chipx86.com>
parents:
14253
diff
changeset
|
155 | |
|
be82a893c65e
[gaim-migrate @ 17743]
Christian Hammond <chipx86@chipx86.com>
parents:
14253
diff
changeset
|
156 | contact = gevo_search_buddy_in_contacts(buddy, NULL); |
|
be82a893c65e
[gaim-migrate @ 17743]
Christian Hammond <chipx86@chipx86.com>
parents:
14253
diff
changeset
|
157 | |
|
be82a893c65e
[gaim-migrate @ 17743]
Christian Hammond <chipx86@chipx86.com>
parents:
14253
diff
changeset
|
158 | if (contact != NULL) |
|
be82a893c65e
[gaim-migrate @ 17743]
Christian Hammond <chipx86@chipx86.com>
parents:
14253
diff
changeset
|
159 | { |
|
be82a893c65e
[gaim-migrate @ 17743]
Christian Hammond <chipx86@chipx86.com>
parents:
14253
diff
changeset
|
160 | mail = g_strdup(e_contact_get(contact, E_CONTACT_EMAIL_1)); |
|
be82a893c65e
[gaim-migrate @ 17743]
Christian Hammond <chipx86@chipx86.com>
parents:
14253
diff
changeset
|
161 | g_object_unref(contact); |
|
be82a893c65e
[gaim-migrate @ 17743]
Christian Hammond <chipx86@chipx86.com>
parents:
14253
diff
changeset
|
162 | } |
|
be82a893c65e
[gaim-migrate @ 17743]
Christian Hammond <chipx86@chipx86.com>
parents:
14253
diff
changeset
|
163 | |
|
be82a893c65e
[gaim-migrate @ 17743]
Christian Hammond <chipx86@chipx86.com>
parents:
14253
diff
changeset
|
164 | if (mail == NULL) |
|
be82a893c65e
[gaim-migrate @ 17743]
Christian Hammond <chipx86@chipx86.com>
parents:
14253
diff
changeset
|
165 | { |
| 15884 | 166 | PurpleAccount *account = purple_buddy_get_account(buddy); |
| 167 | const char *prpl_id = purple_account_get_protocol_id(account); | |
|
15026
be82a893c65e
[gaim-migrate @ 17743]
Christian Hammond <chipx86@chipx86.com>
parents:
14253
diff
changeset
|
168 | |
|
be82a893c65e
[gaim-migrate @ 17743]
Christian Hammond <chipx86@chipx86.com>
parents:
14253
diff
changeset
|
169 | if (!strcmp(prpl_id, "prpl-msn")) |
|
be82a893c65e
[gaim-migrate @ 17743]
Christian Hammond <chipx86@chipx86.com>
parents:
14253
diff
changeset
|
170 | { |
| 15884 | 171 | mail = g_strdup(purple_normalize(account, |
| 172 | purple_buddy_get_name(buddy))); | |
|
15026
be82a893c65e
[gaim-migrate @ 17743]
Christian Hammond <chipx86@chipx86.com>
parents:
14253
diff
changeset
|
173 | } |
|
be82a893c65e
[gaim-migrate @ 17743]
Christian Hammond <chipx86@chipx86.com>
parents:
14253
diff
changeset
|
174 | else if (!strcmp(prpl_id, "prpl-yahoo")) |
|
be82a893c65e
[gaim-migrate @ 17743]
Christian Hammond <chipx86@chipx86.com>
parents:
14253
diff
changeset
|
175 | { |
|
be82a893c65e
[gaim-migrate @ 17743]
Christian Hammond <chipx86@chipx86.com>
parents:
14253
diff
changeset
|
176 | mail = g_strdup_printf("%s@yahoo.com", |
| 15884 | 177 | purple_normalize(account, |
| 178 | purple_buddy_get_name(buddy))); | |
|
15026
be82a893c65e
[gaim-migrate @ 17743]
Christian Hammond <chipx86@chipx86.com>
parents:
14253
diff
changeset
|
179 | } |
|
be82a893c65e
[gaim-migrate @ 17743]
Christian Hammond <chipx86@chipx86.com>
parents:
14253
diff
changeset
|
180 | } |
|
be82a893c65e
[gaim-migrate @ 17743]
Christian Hammond <chipx86@chipx86.com>
parents:
14253
diff
changeset
|
181 | |
|
be82a893c65e
[gaim-migrate @ 17743]
Christian Hammond <chipx86@chipx86.com>
parents:
14253
diff
changeset
|
182 | return mail; |
|
be82a893c65e
[gaim-migrate @ 17743]
Christian Hammond <chipx86@chipx86.com>
parents:
14253
diff
changeset
|
183 | } |