plugins/gevolution/eds-utils.c

Thu, 07 Apr 2005 14:41:18 +0000

author
Richard Laager <rlaager@pidgin.im>
date
Thu, 07 Apr 2005 14:41:18 +0000
changeset 10788
79d6a09303e7
parent 10313
ebd197ba844a
child 11117
2278a06da7c4
permissions
-rw-r--r--

[gaim-migrate @ 12429]
" You can't pass NULL as errormsg as the documentation
implies. If you do, it segfaults. Perhaps that should be
allowable, but as the code stands, it's not. The
documentation should be updated in HEAD and oldstatus
to reflect this. Attached is a patch to that effect." --rlaager

committer: Luke Schierer <lschiere@pidgin.im>

10083
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1 /*
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2 * Evolution integration plugin for Gaim
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3 *
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4 * Copyright (C) 2004 Henry Jen.
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5 *
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
6 * This program is free software; you can redistribute it and/or
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
7 * modify it under the terms of the GNU General Public License as
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
8 * published by the Free Software Foundation; either version 2 of the
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
9 * License, or (at your option) any later version.
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
10 *
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
11 * This program is distributed in the hope that it will be useful, but
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
14 * General Public License for more details.
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
15 *
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
16 * You should have received a copy of the GNU General Public License
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
17 * along with this program; if not, write to the Free Software
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
18 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
19 * 02111-1307, USA.
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
20 */
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
21
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
22 #include "internal.h"
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
23 #include "gtkblist.h"
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
24 #include "gtkgaim.h"
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
25 #include "gtkutils.h"
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
26 #include "gtkimhtml.h"
10313
ebd197ba844a [gaim-migrate @ 11511]
Norberto Lopes
parents: 10083
diff changeset
27 #include "gtkgaim-disclosure.h"
10083
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
28
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
29 #include "debug.h"
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
30 #include "gevolution.h"
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
31
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
32 GtkTreeModel *
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
33 gevo_addrbooks_model_new()
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
34 {
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
35 return GTK_TREE_MODEL(gtk_list_store_new(NUM_ADDRBOOK_COLUMNS,
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
36 G_TYPE_STRING, G_TYPE_STRING));
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
37 }
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
38
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
39 void
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
40 gevo_addrbooks_model_unref(GtkTreeModel *model)
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
41 {
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
42 GtkTreeIter iter;
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
43
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
44 g_return_if_fail(model != NULL);
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
45 g_return_if_fail(GTK_IS_LIST_STORE(model));
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
46
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
47 if (!gtk_tree_model_get_iter_first(model, &iter))
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
48 return;
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
49
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
50 g_object_unref(model);
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
51 }
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
52
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
53 void
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
54 gevo_addrbooks_model_populate(GtkTreeModel *model)
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
55 {
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
56 ESourceList *addressbooks;
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
57 GError *err;
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
58 GSList *groups, *g;
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
59 GtkTreeIter iter;
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
60 GtkListStore *list;
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
61
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
62 g_return_if_fail(model != NULL);
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
63 g_return_if_fail(GTK_IS_LIST_STORE(model));
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
64
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
65 list = GTK_LIST_STORE(model);
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
66
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
67 if (!e_book_get_addressbooks(&addressbooks, &err))
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
68 {
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
69 gaim_debug_error("evolution",
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
70 "Unable to fetch list of address books.\n");
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
71
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
72 gtk_list_store_append(list, &iter);
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
73 gtk_list_store_set(list, &iter,
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
74 ADDRBOOK_COLUMN_NAME, _("None"),
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
75 ADDRBOOK_COLUMN_URI, NULL,
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
76 -1);
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
77
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
78 return;
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
79 }
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
80
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
81 groups = e_source_list_peek_groups(addressbooks);
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
82
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
83 if (groups == NULL)
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
84 {
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
85 gtk_list_store_append(list, &iter);
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
86 gtk_list_store_set(list, &iter,
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
87 ADDRBOOK_COLUMN_NAME, _("None"),
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
88 ADDRBOOK_COLUMN_URI, NULL,
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
89 -1);
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
90
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
91 return;
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
92 }
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
93
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
94 for (g = groups; g != NULL; g = g->next)
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
95 {
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
96 GSList *sources, *s;
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
97
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
98 sources = e_source_group_peek_sources(g->data);
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
99
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
100 for (s = sources; s != NULL; s = s->next)
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
101 {
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
102 ESource *source = E_SOURCE(s->data);
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
103
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
104 g_object_ref(source);
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
105
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
106 gtk_list_store_append(list, &iter);
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
107 gtk_list_store_set(list, &iter,
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
108 ADDRBOOK_COLUMN_NAME, e_source_peek_name(source),
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
109 ADDRBOOK_COLUMN_URI, e_source_get_uri(source),
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
110 -1);
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
111 }
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
112 }
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
113
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
114 g_object_unref(addressbooks);
7e81faf97543 [gaim-migrate @ 11079]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
115 }

mercurial