plugins/gevolution/assoc-buddy.c

Tue, 17 Jan 2006 23:22:19 +0000

author
Etan Reisner <deryni@pidgin.im>
date
Tue, 17 Jan 2006 23:22:19 +0000
changeset 12919
519199cca273
parent 11807
24a6c489e7f2
permissions
-rw-r--r--

[gaim-migrate @ 15272]
Replace GaimBlistNodeAction with the more generic GaimMenuAction, this is in
preparation for letting the chat room user list have extensible menus like the
blist entries do. (I know it's not exactly the prettiest, and the callback
isn't exactly type-safe, when we eventually gobjectify everything we can get
some safety back by using (GObject, gpointer) but that's for later.)

I'm planning to look into merging GaimPluginActions into GaimMenuActions as
well.

8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1 /*
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2 * Evolution integration plugin for Gaim
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
3 *
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
4 * Copyright (C) 2003 Christian Hammond.
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
5 *
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
6 * This program is free software; you can redistribute it and/or
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
7 * modify it under the terms of the GNU General Public License as
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
8 * published by the Free Software Foundation; either version 2 of the
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
9 * License, or (at your option) any later version.
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
10 *
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
11 * This program is distributed in the hope that it will be useful, but
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
14 * General Public License for more details.
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
15 *
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
16 * You should have received a copy of the GNU General Public License
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
17 * along with this program; if not, write to the Free Software
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
18 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
19 * 02111-1307, USA.
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
20 */
9825
85a5ebe9315f [gaim-migrate @ 10696]
Christian Hammond <chipx86@chipx86.com>
parents: 9824
diff changeset
21 #include "internal.h"
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
22 #include "gtkblist.h"
11735
a1d2afa9b4e9 [gaim-migrate @ 14026]
Mark Doliner <markdoliner@pidgin.im>
parents: 10313
diff changeset
23 #include "gtkexpander.h"
9824
2fc5eef80af8 [gaim-migrate @ 10695]
Mark Doliner <markdoliner@pidgin.im>
parents: 9566
diff changeset
24 #include "gtkgaim.h"
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
25 #include "gtkutils.h"
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
26 #include "gtkimhtml.h"
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
27
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
28 #include "debug.h"
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
29
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
30 #include "gevolution.h"
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
31
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
32 #include <stdlib.h>
10081
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
33 #include <gtk/gtk.h>
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
34
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
35 enum
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
36 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
37 COLUMN_NAME,
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
38 COLUMN_DATA,
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
39 NUM_COLUMNS
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
40 };
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
41
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
42 static gint
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
43 delete_win_cb(GtkWidget *w, GdkEvent *event, GevoAssociateBuddyDialog *dialog)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
44 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
45 gtk_widget_destroy(dialog->win);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
46
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
47 if (dialog->contacts != NULL)
10081
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
48 {
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
49 g_list_foreach(dialog->contacts, (GFunc)g_object_unref, NULL);
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
50 g_list_free(dialog->contacts);
10081
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
51 }
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
52
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
53 g_object_unref(dialog->book);
10081
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
54 gevo_addrbooks_model_unref(dialog->addrbooks);
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
55
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
56 g_free(dialog);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
57
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
58 return 0;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
59 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
60
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
61 static void
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
62 search_changed_cb(GtkEntry *entry, GevoAssociateBuddyDialog *dialog)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
63 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
64 const char *text = gtk_entry_get_text(entry);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
65 GList *l;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
66
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
67 gtk_list_store_clear(dialog->model);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
68
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
69 for (l = dialog->contacts; l != NULL; l = l->next)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
70 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
71 EContact *contact = E_CONTACT(l->data);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
72 const char *name;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
73 GtkTreeIter iter;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
74
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
75 name = e_contact_get_const(contact, E_CONTACT_FULL_NAME);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
76
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
77 if (text != NULL && *text != '\0' && name != NULL &&
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
78 g_ascii_strncasecmp(name, text, strlen(text)))
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
79 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
80 continue;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
81 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
82
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
83 gtk_list_store_append(dialog->model, &iter);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
84
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
85 gtk_list_store_set(dialog->model, &iter,
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
86 COLUMN_NAME, name,
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
87 COLUMN_DATA, contact,
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
88 -1);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
89 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
90 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
91
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
92 static void
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
93 clear_cb(GtkWidget *w, GevoAssociateBuddyDialog *dialog)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
94 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
95 static gboolean lock = FALSE;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
96
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
97 if (lock)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
98 return;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
99
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
100 lock = TRUE;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
101 gtk_entry_set_text(GTK_ENTRY(dialog->search_field), "");
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
102 lock = FALSE;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
103 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
104
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
105 static void
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
106 selected_cb(GtkTreeSelection *sel, GevoAssociateBuddyDialog *dialog)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
107 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
108 gtk_widget_set_sensitive(dialog->assoc_button, TRUE);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
109 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
110
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
111 static void
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
112 add_columns(GevoAssociateBuddyDialog *dialog)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
113 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
114 GtkCellRenderer *renderer;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
115 GtkTreeViewColumn *column;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
116
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
117 /* Name column */
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
118 column = gtk_tree_view_column_new();
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
119 gtk_tree_view_column_set_title(column, _("Name"));
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
120 gtk_tree_view_insert_column(GTK_TREE_VIEW(dialog->treeview), column, -1);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
121 gtk_tree_view_column_set_sort_column_id(column, COLUMN_NAME);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
122
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
123 renderer = gtk_cell_renderer_text_new();
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
124 gtk_tree_view_column_pack_start(column, renderer, TRUE);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
125 gtk_tree_view_column_add_attribute(column, renderer,
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
126 "text", COLUMN_NAME);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
127 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
128
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
129 static void
10081
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
130 populate_treeview(GevoAssociateBuddyDialog *dialog, const gchar *uri)
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
131 {
10081
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
132 EBook *book;
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
133 EBookQuery *query;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
134 const char *prpl_id;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
135 gboolean status;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
136 GList *cards, *c;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
137
10081
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
138 if (dialog->book != NULL)
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
139 {
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
140 g_object_unref(dialog->book);
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
141 dialog->book = NULL;
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
142 }
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
143
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
144 if (dialog->contacts != NULL)
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
145 {
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
146 g_list_foreach(dialog->contacts, (GFunc) g_object_unref, NULL);
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
147 g_list_free(dialog->contacts);
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
148 dialog->contacts = NULL;
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
149 }
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
150
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
151 gtk_list_store_clear(dialog->model);
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
152
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
153 if (!gevo_load_addressbook(uri, &book, NULL))
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
154 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
155 gaim_debug_error("evolution",
10081
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
156 "Error retrieving addressbook\n");
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
157
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
158 return;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
159 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
160
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
161 query = e_book_query_field_exists(E_CONTACT_FULL_NAME);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
162
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
163 if (query == NULL)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
164 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
165 gaim_debug_error("evolution", "Error in creating query\n");
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
166
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
167 g_object_unref(book);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
168
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
169 return;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
170 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
171
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
172 status = e_book_get_contacts(book, query, &cards, NULL);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
173
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
174 e_book_query_unref(query);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
175
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
176 if (!status)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
177 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
178 gaim_debug_error("evolution", "Error %d in getting card list\n",
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
179 status);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
180
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
181 g_object_unref(book);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
182
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
183 return;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
184 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
185
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
186 prpl_id = gaim_account_get_protocol_id(dialog->buddy->account);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
187
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
188 for (c = cards; c != NULL; c = c->next)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
189 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
190 EContact *contact = E_CONTACT(c->data);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
191 const char *name;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
192 GtkTreeIter iter;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
193 EContactField protocol_field = 0;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
194
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
195 name = e_contact_get_const(contact, E_CONTACT_FULL_NAME);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
196
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
197 gtk_list_store_append(dialog->model, &iter);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
198
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
199 gtk_list_store_set(dialog->model, &iter,
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
200 COLUMN_NAME, name,
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
201 COLUMN_DATA, contact,
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
202 -1);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
203
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
204 /* See if this user has the buddy in its list. */
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
205 protocol_field = gevo_prpl_get_field(dialog->buddy->account,
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
206 dialog->buddy);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
207
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
208 if (protocol_field > 0)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
209 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
210 GList *ims, *l;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
211
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
212 ims = e_contact_get(contact, protocol_field);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
213
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
214 for (l = ims; l != NULL; l = l->next)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
215 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
216 if (!strcmp(l->data, dialog->buddy->name))
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
217 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
218 GtkTreeSelection *selection;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
219
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
220 /* This is it. Select it. */
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
221 selection = gtk_tree_view_get_selection(
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
222 GTK_TREE_VIEW(dialog->treeview));
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
223
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
224 gtk_tree_selection_select_iter(selection, &iter);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
225 break;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
226 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
227 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
228 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
229 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
230
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
231 dialog->contacts = cards;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
232 dialog->book = book;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
233 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
234
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
235 static void
10081
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
236 addrbook_change_cb(GtkComboBox *combo, GevoAssociateBuddyDialog *dialog)
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
237 {
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
238 GtkTreeIter iter;
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
239 const char *esource_uri;
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
240
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
241 if (!gtk_combo_box_get_active_iter(combo, &iter))
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
242 return;
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
243
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
244 gtk_tree_model_get(GTK_TREE_MODEL(dialog->addrbooks), &iter,
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
245 ADDRBOOK_COLUMN_URI, &esource_uri,
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
246 -1);
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
247
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
248 populate_treeview(dialog, esource_uri);
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
249 }
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
250
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
251 static void
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
252 new_person_cb(GtkWidget *w, GevoAssociateBuddyDialog *dialog)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
253 {
10081
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
254 gevo_new_person_dialog_show(dialog->book, NULL, dialog->buddy->account,
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
255 dialog->buddy->name, NULL, dialog->buddy,
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
256 TRUE);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
257
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
258 delete_win_cb(NULL, NULL, dialog);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
259 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
260
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
261 static void
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
262 cancel_cb(GtkWidget *w, GevoAssociateBuddyDialog *dialog)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
263 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
264 delete_win_cb(NULL, NULL, dialog);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
265 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
266
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
267 static void
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
268 assoc_buddy_cb(GtkWidget *w, GevoAssociateBuddyDialog *dialog)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
269 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
270 GtkTreeSelection *selection;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
271 GtkTreeIter iter;
9566
9253ccd670ed [gaim-migrate @ 10409]
Henry Jen
parents: 9354
diff changeset
272 GList *list;
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
273 const char *fullname;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
274 EContactField protocol_field;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
275 EContact *contact;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
276
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
277 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dialog->treeview));
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
278
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
279 gtk_tree_selection_get_selected(selection, NULL, &iter);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
280
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
281 gtk_tree_model_get(GTK_TREE_MODEL(dialog->model), &iter,
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
282 COLUMN_NAME, &fullname,
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
283 COLUMN_DATA, &contact,
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
284 -1);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
285
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
286 protocol_field = gevo_prpl_get_field(dialog->buddy->account, dialog->buddy);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
287
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
288 if (protocol_field == 0)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
289 return; /* XXX */
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
290
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
291 list = e_contact_get(contact, protocol_field);
9566
9253ccd670ed [gaim-migrate @ 10409]
Henry Jen
parents: 9354
diff changeset
292 list = g_list_append(list, g_strdup(dialog->buddy->name));
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
293
9566
9253ccd670ed [gaim-migrate @ 10409]
Henry Jen
parents: 9354
diff changeset
294 e_contact_set(contact, protocol_field, list);
10081
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
295
9566
9253ccd670ed [gaim-migrate @ 10409]
Henry Jen
parents: 9354
diff changeset
296 if (!e_book_commit_contact(dialog->book, contact, NULL))
9253ccd670ed [gaim-migrate @ 10409]
Henry Jen
parents: 9354
diff changeset
297 gaim_debug_error("evolution", "Error adding contact to book\n");
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
298
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
299 /* Free the list. */
9566
9253ccd670ed [gaim-migrate @ 10409]
Henry Jen
parents: 9354
diff changeset
300 g_list_foreach(list, (GFunc)g_free, NULL);
9253ccd670ed [gaim-migrate @ 10409]
Henry Jen
parents: 9354
diff changeset
301 g_list_free(list);
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
302
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
303 delete_win_cb(NULL, NULL, dialog);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
304 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
305
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
306 GevoAssociateBuddyDialog *
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
307 gevo_associate_buddy_dialog_new(GaimBuddy *buddy)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
308 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
309 GevoAssociateBuddyDialog *dialog;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
310 GtkWidget *button;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
311 GtkWidget *sw;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
312 GtkWidget *label;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
313 GtkWidget *vbox;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
314 GtkWidget *hbox;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
315 GtkWidget *bbox;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
316 GtkWidget *sep;
11735
a1d2afa9b4e9 [gaim-migrate @ 14026]
Mark Doliner <markdoliner@pidgin.im>
parents: 10313
diff changeset
317 GtkWidget *expander;
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
318 GtkTreeSelection *selection;
10081
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
319 GtkCellRenderer *cell;
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
320
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
321 g_return_val_if_fail(buddy != NULL, NULL);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
322
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
323 dialog = g_new0(GevoAssociateBuddyDialog, 1);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
324
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
325 dialog->buddy = buddy;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
326
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
327 dialog->win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
328 gtk_window_set_role(GTK_WINDOW(dialog->win), "assoc_buddy");
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
329 gtk_container_set_border_width(GTK_CONTAINER(dialog->win), 12);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
330
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
331 g_signal_connect(G_OBJECT(dialog->win), "delete_event",
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
332 G_CALLBACK(delete_win_cb), dialog);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
333
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
334 /* Setup the vbox */
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
335 vbox = gtk_vbox_new(FALSE, 12);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
336 gtk_container_add(GTK_CONTAINER(dialog->win), vbox);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
337 gtk_widget_show(vbox);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
338
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
339 /* Add the label. */
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
340 label = gtk_label_new(_("Select a person from your address book to "
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
341 "add this buddy to, or create a new person."));
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
342 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
343 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
344 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, TRUE, 0);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
345 gtk_widget_show(label);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
346
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
347 /* Add the search hbox */
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
348 hbox = gtk_hbox_new(FALSE, 6);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
349 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
350 gtk_widget_show(hbox);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
351
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
352 /* "Search" */
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
353 label = gtk_label_new(_("Search"));
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
354 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
355 gtk_widget_show(label);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
356
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
357 /* Addressbooks */
10081
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
358 dialog->addrbooks = gevo_addrbooks_model_new();
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
359
10081
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
360 dialog->addrbooks_combo = gtk_combo_box_new_with_model(dialog->addrbooks);
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
361 cell = gtk_cell_renderer_text_new();
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
362 gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(dialog->addrbooks_combo),
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
363 cell, TRUE);
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
364 gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(dialog->addrbooks_combo),
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
365 cell,
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
366 "text", ADDRBOOK_COLUMN_NAME,
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
367 NULL);
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
368 gtk_box_pack_start(GTK_BOX(hbox), dialog->addrbooks_combo, FALSE, FALSE, 0);
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
369 gtk_widget_show(dialog->addrbooks_combo);
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
370
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
371
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
372 /* Search field */
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
373 dialog->search_field = gtk_entry_new();
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
374 gtk_box_pack_start(GTK_BOX(hbox), dialog->search_field, TRUE, TRUE, 0);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
375 gtk_widget_show(dialog->search_field);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
376
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
377 g_signal_connect(G_OBJECT(dialog->search_field), "changed",
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
378 G_CALLBACK(search_changed_cb), dialog);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
379
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
380 /* Clear button */
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
381 button = gtk_button_new_from_stock(GTK_STOCK_CLEAR);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
382 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
383 gtk_widget_show(button);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
384
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
385 g_signal_connect(G_OBJECT(button), "clicked",
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
386 G_CALLBACK(clear_cb), dialog);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
387
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
388 /* Scrolled Window */
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
389 sw = gtk_scrolled_window_new(0, 0);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
390 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
391 GTK_POLICY_AUTOMATIC,
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
392 GTK_POLICY_ALWAYS);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
393 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
394 GTK_SHADOW_IN);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
395 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
396 gtk_widget_show(sw);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
397
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
398 /* Create the list model for the treeview. */
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
399 dialog->model = gtk_list_store_new(NUM_COLUMNS,
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
400 G_TYPE_STRING, G_TYPE_POINTER);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
401
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
402 /* Now for the treeview */
10081
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
403 dialog->treeview = gtk_tree_view_new_with_model(
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
404 GTK_TREE_MODEL(dialog->model));
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
405 gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(dialog->treeview), TRUE);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
406 gtk_container_add(GTK_CONTAINER(sw), dialog->treeview);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
407 gtk_widget_show(dialog->treeview);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
408
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
409 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dialog->treeview));
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
410
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
411 gtk_tree_selection_set_mode(selection, GTK_SELECTION_SINGLE);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
412
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
413 g_signal_connect(G_OBJECT(selection), "changed",
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
414 G_CALLBACK(selected_cb), dialog);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
415
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
416 add_columns(dialog);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
417
10081
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
418 /*
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
419 * Catch addressbook selection and populate treeview with the first
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
420 * addressbook
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
421 */
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
422 gevo_addrbooks_model_populate( dialog->addrbooks );
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
423 g_signal_connect(G_OBJECT(dialog->addrbooks_combo), "changed",
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
424 G_CALLBACK(addrbook_change_cb), dialog);
64e398f0eaa3 [gaim-migrate @ 11071]
Christian Hammond <chipx86@chipx86.com>
parents: 9825
diff changeset
425 gtk_combo_box_set_active(GTK_COMBO_BOX(dialog->addrbooks_combo), 0);
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
426
11735
a1d2afa9b4e9 [gaim-migrate @ 14026]
Mark Doliner <markdoliner@pidgin.im>
parents: 10313
diff changeset
427 /* Add the expander */
a1d2afa9b4e9 [gaim-migrate @ 14026]
Mark Doliner <markdoliner@pidgin.im>
parents: 10313
diff changeset
428 expander = gtk_expander_new_with_mnemonic(_("User _details"));
a1d2afa9b4e9 [gaim-migrate @ 14026]
Mark Doliner <markdoliner@pidgin.im>
parents: 10313
diff changeset
429 gtk_box_pack_start(GTK_BOX(vbox), expander, FALSE, FALSE, 0);
a1d2afa9b4e9 [gaim-migrate @ 14026]
Mark Doliner <markdoliner@pidgin.im>
parents: 10313
diff changeset
430 gtk_widget_show(expander);
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
431
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
432 /*
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
433 * User details
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
434 */
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
435
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
436 /* Scrolled Window */
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
437 sw = gtk_scrolled_window_new(0, 0);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
438 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
439 GTK_POLICY_NEVER,
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
440 GTK_POLICY_ALWAYS);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
441 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
442 GTK_SHADOW_IN);
11735
a1d2afa9b4e9 [gaim-migrate @ 14026]
Mark Doliner <markdoliner@pidgin.im>
parents: 10313
diff changeset
443 gtk_container_add(GTK_CONTAINER(expander), sw);
a1d2afa9b4e9 [gaim-migrate @ 14026]
Mark Doliner <markdoliner@pidgin.im>
parents: 10313
diff changeset
444 gtk_widget_show(sw);
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
445
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
446 /* Textview */
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
447 dialog->imhtml = gtk_imhtml_new(NULL, NULL);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
448 gtk_container_add(GTK_CONTAINER(sw), dialog->imhtml);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
449 gtk_widget_show(dialog->imhtml);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
450
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
451 /* Separator. */
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
452 sep = gtk_hseparator_new();
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
453 gtk_box_pack_start(GTK_BOX(vbox), sep, FALSE, FALSE, 0);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
454 gtk_widget_show(sep);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
455
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
456 /* Button box */
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
457 bbox = gtk_hbutton_box_new();
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
458 gtk_box_set_spacing(GTK_BOX(bbox), 6);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
459 gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
460 gtk_box_pack_end(GTK_BOX(vbox), bbox, FALSE, TRUE, 0);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
461 gtk_widget_show(bbox);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
462
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
463 /* "New Person" button */
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
464 button = gaim_pixbuf_button_from_stock(_("New Person"), GTK_STOCK_NEW,
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
465 GAIM_BUTTON_HORIZONTAL);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
466 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
467 gtk_widget_show(button);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
468
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
469 g_signal_connect(G_OBJECT(button), "clicked",
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
470 G_CALLBACK(new_person_cb), dialog);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
471
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
472 /* "Cancel" button */
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
473 button = gtk_button_new_from_stock(GTK_STOCK_CANCEL);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
474 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
475 gtk_widget_show(button);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
476
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
477 g_signal_connect(G_OBJECT(button), "clicked",
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
478 G_CALLBACK(cancel_cb), dialog);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
479
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
480 /* "Associate Buddy" button */
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
481 button = gaim_pixbuf_button_from_stock(_("_Associate Buddy"),
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
482 GTK_STOCK_APPLY,
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
483 GAIM_BUTTON_HORIZONTAL);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
484 dialog->assoc_button = button;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
485 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
486 gtk_widget_set_sensitive(button, FALSE);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
487 gtk_widget_show(button);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
488
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
489 g_signal_connect(G_OBJECT(button), "clicked",
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
490 G_CALLBACK(assoc_buddy_cb), dialog);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
491
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
492 /* Show it. */
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
493 gtk_widget_show(dialog->win);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
494
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
495 return dialog;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
496 }

mercurial