Mercurial > pidgin.yaz
annotate finch/gntaccount.c @ 25040:a214dc3807f8
Setup message handlers on the MSN Notification server so that messages from
Yahoo! buddies aren't lost in the ether. This assumes you can't get custom
emoticons from them (but shouldn't be hard to fix that if necessary).
Fixes #7676.
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Sun, 01 Feb 2009 09:08:44 +0000 |
parents | 024818afb013 |
children | 6e1967b0f90b 68f4edb42f39 |
rev | line source |
---|---|
15818 | 1 /** |
2 * @file gntaccount.c GNT Account API | |
16194
0f0832c13fcb
Rename the Doxygen group from gntui to finch and define the finch group
Richard Laager <rlaager@wiktel.com>
parents:
15871
diff
changeset
|
3 * @ingroup finch |
20074
6bf32c9e15a7
remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@gmail.com>
parents:
19944
diff
changeset
|
4 */ |
6bf32c9e15a7
remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@gmail.com>
parents:
19944
diff
changeset
|
5 |
6bf32c9e15a7
remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@gmail.com>
parents:
19944
diff
changeset
|
6 /* finch |
15818 | 7 * |
15871
66dff3dfdea6
Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@wiktel.com>
parents:
15823
diff
changeset
|
8 * Finch is the legal property of its developers, whose names are too numerous |
15818 | 9 * to list here. Please refer to the COPYRIGHT file distributed with this |
10 * source distribution. | |
11 * | |
12 * This program is free software; you can redistribute it and/or modify | |
13 * it under the terms of the GNU General Public License as published by | |
14 * the Free Software Foundation; either version 2 of the License, or | |
15 * (at your option) any later version. | |
16 * | |
17 * This program is distributed in the hope that it will be useful, | |
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
20 * GNU General Public License for more details. | |
21 * | |
22 * You should have received a copy of the GNU General Public License | |
23 * along with this program; if not, write to the Free Software | |
19680
44b4e8bd759b
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
19392
diff
changeset
|
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
15818 | 25 */ |
26 #include <gnt.h> | |
27 #include <gntbox.h> | |
28 #include <gntbutton.h> | |
29 #include <gntcheckbox.h> | |
30 #include <gntcombobox.h> | |
31 #include <gntentry.h> | |
32 #include <gntlabel.h> | |
33 #include <gntline.h> | |
34 #include <gnttree.h> | |
18511
7ee0e0597a26
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18432
diff
changeset
|
35 #include <gntutils.h> |
17520
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
36 #include <gntwindow.h> |
15818 | 37 |
18210
b8572b937c09
#include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <stu@nosnilmot.com>
parents:
18063
diff
changeset
|
38 #include "finch.h" |
b8572b937c09
#include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <stu@nosnilmot.com>
parents:
18063
diff
changeset
|
39 |
15818 | 40 #include <account.h> |
41 #include <accountopt.h> | |
42 #include <connection.h> | |
43 #include <notify.h> | |
44 #include <plugin.h> | |
45 #include <request.h> | |
23085
02ef6c5c6650
Allow account registration in a new account dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22770
diff
changeset
|
46 #include <savedstatuses.h> |
15818 | 47 |
48 #include "gntaccount.h" | |
17520
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
49 #include "gntblist.h" |
15818 | 50 |
51 #include <string.h> | |
52 | |
53 typedef struct | |
54 { | |
55 GntWidget *window; | |
56 GntWidget *tree; | |
57 } FinchAccountList; | |
58 | |
59 static FinchAccountList accounts; | |
60 | |
61 typedef struct | |
62 { | |
15823 | 63 PurpleAccount *account; /* NULL for a new account */ |
15818 | 64 |
65 GntWidget *window; | |
66 | |
67 GntWidget *protocol; | |
68 GntWidget *screenname; | |
69 GntWidget *password; | |
70 GntWidget *alias; | |
23085
02ef6c5c6650
Allow account registration in a new account dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22770
diff
changeset
|
71 |
15818 | 72 GntWidget *splits; |
73 GList *split_entries; | |
74 | |
75 GList *prpl_entries; | |
76 GntWidget *prpls; | |
77 | |
78 GntWidget *newmail; | |
79 GntWidget *remember; | |
23085
02ef6c5c6650
Allow account registration in a new account dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22770
diff
changeset
|
80 GntWidget *regserver; |
15818 | 81 } AccountEditDialog; |
82 | |
83 /* This is necessary to close an edit-dialog when an account is deleted */ | |
84 static GList *accountdialogs; | |
85 | |
86 static void | |
15823 | 87 account_add(PurpleAccount *account) |
15818 | 88 { |
89 gnt_tree_add_choice(GNT_TREE(accounts.tree), account, | |
90 gnt_tree_create_row(GNT_TREE(accounts.tree), | |
15823 | 91 purple_account_get_username(account), |
92 purple_account_get_protocol_name(account)), | |
15818 | 93 NULL, NULL); |
94 gnt_tree_set_choice(GNT_TREE(accounts.tree), account, | |
15823 | 95 purple_account_get_enabled(account, FINCH_UI)); |
15818 | 96 } |
97 | |
98 static void | |
99 edit_dialog_destroy(AccountEditDialog *dialog) | |
100 { | |
101 accountdialogs = g_list_remove(accountdialogs, dialog); | |
102 g_list_free(dialog->prpl_entries); | |
103 g_list_free(dialog->split_entries); | |
104 g_free(dialog); | |
105 } | |
106 | |
107 static void | |
108 save_account_cb(AccountEditDialog *dialog) | |
109 { | |
15823 | 110 PurpleAccount *account; |
111 PurplePlugin *plugin; | |
112 PurplePluginProtocolInfo *prplinfo; | |
15818 | 113 const char *value; |
114 GString *username; | |
115 | |
116 /* XXX: Do some error checking first. */ | |
117 | |
118 plugin = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(dialog->protocol)); | |
15823 | 119 prplinfo = PURPLE_PLUGIN_PROTOCOL_INFO(plugin); |
15818 | 120 |
121 /* Screenname && user-splits */ | |
122 value = gnt_entry_get_text(GNT_ENTRY(dialog->screenname)); | |
123 | |
124 if (value == NULL || *value == '\0') | |
125 { | |
15823 | 126 purple_notify_error(NULL, _("Error"), _("Account was not added"), |
22770
cc8903c59d6b
Change the string "screen name" to "username" everywhere. I think most
Mark Doliner <mark@kingant.net>
parents:
22257
diff
changeset
|
127 _("Username of an account must be non-empty.")); |
15818 | 128 return; |
129 } | |
23085
02ef6c5c6650
Allow account registration in a new account dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22770
diff
changeset
|
130 |
15818 | 131 username = g_string_new(value); |
132 | |
133 if (prplinfo != NULL) | |
134 { | |
135 GList *iter, *entries; | |
136 for (iter = prplinfo->user_splits, entries = dialog->split_entries; | |
137 iter && entries; iter = iter->next, entries = entries->next) | |
138 { | |
15823 | 139 PurpleAccountUserSplit *split = iter->data; |
15818 | 140 GntWidget *entry = entries->data; |
141 | |
142 value = gnt_entry_get_text(GNT_ENTRY(entry)); | |
143 if (value == NULL || *value == '\0') | |
15823 | 144 value = purple_account_user_split_get_default_value(split); |
15818 | 145 g_string_append_printf(username, "%c%s", |
15823 | 146 purple_account_user_split_get_separator(split), |
15818 | 147 value); |
148 } | |
149 } | |
150 | |
151 if (dialog->account == NULL) | |
152 { | |
15823 | 153 account = purple_account_new(username->str, purple_plugin_get_id(plugin)); |
154 purple_accounts_add(account); | |
15818 | 155 } |
156 else | |
157 { | |
158 account = dialog->account; | |
159 | |
160 /* Protocol */ | |
15823 | 161 purple_account_set_protocol_id(account, purple_plugin_get_id(plugin)); |
162 purple_account_set_username(account, username->str); | |
15818 | 163 } |
164 g_string_free(username, TRUE); | |
165 | |
166 /* Alias */ | |
167 value = gnt_entry_get_text(GNT_ENTRY(dialog->alias)); | |
168 if (value && *value) | |
15823 | 169 purple_account_set_alias(account, value); |
15818 | 170 |
171 /* Remember password and password */ | |
15823 | 172 purple_account_set_remember_password(account, |
15818 | 173 gnt_check_box_get_checked(GNT_CHECK_BOX(dialog->remember))); |
174 value = gnt_entry_get_text(GNT_ENTRY(dialog->password)); | |
19938
656506d8935e
Don't prompt for the password again if the user entered it once in the account window.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19680
diff
changeset
|
175 if (value && *value) |
15823 | 176 purple_account_set_password(account, value); |
15818 | 177 else |
15823 | 178 purple_account_set_password(account, NULL); |
15818 | 179 |
180 /* Mail notification */ | |
15823 | 181 purple_account_set_check_mail(account, |
15818 | 182 gnt_check_box_get_checked(GNT_CHECK_BOX(dialog->newmail))); |
183 | |
184 /* Protocol options */ | |
185 if (prplinfo) | |
186 { | |
187 GList *iter, *entries; | |
23085
02ef6c5c6650
Allow account registration in a new account dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22770
diff
changeset
|
188 |
15818 | 189 for (iter = prplinfo->protocol_options, entries = dialog->prpl_entries; |
190 iter && entries; iter = iter->next, entries = entries->next) | |
191 { | |
15823 | 192 PurpleAccountOption *option = iter->data; |
15818 | 193 GntWidget *entry = entries->data; |
15823 | 194 PurplePrefType type = purple_account_option_get_type(option); |
195 const char *setting = purple_account_option_get_setting(option); | |
15818 | 196 |
15823 | 197 if (type == PURPLE_PREF_STRING) |
15818 | 198 { |
199 const char *value = gnt_entry_get_text(GNT_ENTRY(entry)); | |
15823 | 200 purple_account_set_string(account, setting, value); |
15818 | 201 } |
15823 | 202 else if (type == PURPLE_PREF_INT) |
15818 | 203 { |
204 const char *str = gnt_entry_get_text(GNT_ENTRY(entry)); | |
205 int value = 0; | |
206 if (str) | |
207 value = atoi(str); | |
15823 | 208 purple_account_set_int(account, setting, value); |
15818 | 209 } |
15823 | 210 else if (type == PURPLE_PREF_BOOLEAN) |
15818 | 211 { |
212 gboolean value = gnt_check_box_get_checked(GNT_CHECK_BOX(entry)); | |
15823 | 213 purple_account_set_bool(account, setting, value); |
15818 | 214 } |
15823 | 215 else if (type == PURPLE_PREF_STRING_LIST) |
15818 | 216 { |
217 /* TODO: */ | |
218 } | |
219 else | |
220 { | |
221 g_assert_not_reached(); | |
222 } | |
223 } | |
224 } | |
225 | |
226 /* XXX: Proxy options */ | |
227 | |
19392
74f7d5e4a605
Focus the modified/created account in the accounts window after modifying/
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18829
diff
changeset
|
228 if (accounts.window && accounts.tree) { |
74f7d5e4a605
Focus the modified/created account in the accounts window after modifying/
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18829
diff
changeset
|
229 gnt_tree_set_selected(GNT_TREE(accounts.tree), account); |
74f7d5e4a605
Focus the modified/created account in the accounts window after modifying/
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18829
diff
changeset
|
230 gnt_box_give_focus_to_child(GNT_BOX(accounts.window), accounts.tree); |
74f7d5e4a605
Focus the modified/created account in the accounts window after modifying/
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18829
diff
changeset
|
231 } |
74f7d5e4a605
Focus the modified/created account in the accounts window after modifying/
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18829
diff
changeset
|
232 |
23085
02ef6c5c6650
Allow account registration in a new account dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22770
diff
changeset
|
233 if (prplinfo && prplinfo->register_user && |
02ef6c5c6650
Allow account registration in a new account dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22770
diff
changeset
|
234 gnt_check_box_get_checked(GNT_CHECK_BOX(dialog->regserver))) { |
02ef6c5c6650
Allow account registration in a new account dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22770
diff
changeset
|
235 purple_account_register(account); |
02ef6c5c6650
Allow account registration in a new account dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22770
diff
changeset
|
236 } else if (dialog->account == NULL) { |
02ef6c5c6650
Allow account registration in a new account dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22770
diff
changeset
|
237 /* This is a new account. Set it to the current status. */ |
02ef6c5c6650
Allow account registration in a new account dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22770
diff
changeset
|
238 /* Xerox from gtkaccount.c :D */ |
02ef6c5c6650
Allow account registration in a new account dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22770
diff
changeset
|
239 const PurpleSavedStatus *saved_status; |
02ef6c5c6650
Allow account registration in a new account dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22770
diff
changeset
|
240 saved_status = purple_savedstatus_get_current(); |
02ef6c5c6650
Allow account registration in a new account dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22770
diff
changeset
|
241 if (saved_status != NULL) { |
02ef6c5c6650
Allow account registration in a new account dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22770
diff
changeset
|
242 purple_savedstatus_activate_for_account(saved_status, account); |
02ef6c5c6650
Allow account registration in a new account dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22770
diff
changeset
|
243 purple_account_set_enabled(account, FINCH_UI, TRUE); |
02ef6c5c6650
Allow account registration in a new account dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22770
diff
changeset
|
244 } |
02ef6c5c6650
Allow account registration in a new account dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22770
diff
changeset
|
245 } |
02ef6c5c6650
Allow account registration in a new account dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22770
diff
changeset
|
246 |
15818 | 247 gnt_widget_destroy(dialog->window); |
248 } | |
249 | |
250 static void | |
251 update_user_splits(AccountEditDialog *dialog) | |
252 { | |
253 GntWidget *hbox; | |
15823 | 254 PurplePlugin *plugin; |
255 PurplePluginProtocolInfo *prplinfo; | |
15818 | 256 GList *iter, *entries; |
257 char *username = NULL; | |
258 | |
259 if (dialog->splits) | |
260 { | |
261 gnt_box_remove_all(GNT_BOX(dialog->splits)); | |
262 g_list_free(dialog->split_entries); | |
263 } | |
264 else | |
265 { | |
266 dialog->splits = gnt_vbox_new(FALSE); | |
267 gnt_box_set_pad(GNT_BOX(dialog->splits), 0); | |
268 gnt_box_set_fill(GNT_BOX(dialog->splits), TRUE); | |
269 } | |
270 | |
271 dialog->split_entries = NULL; | |
272 | |
273 plugin = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(dialog->protocol)); | |
274 if (!plugin) | |
275 return; | |
15823 | 276 prplinfo = PURPLE_PLUGIN_PROTOCOL_INFO(plugin); |
15818 | 277 |
15823 | 278 username = dialog->account ? g_strdup(purple_account_get_username(dialog->account)) : NULL; |
15818 | 279 |
280 for (iter = prplinfo->user_splits; iter; iter = iter->next) | |
281 { | |
15823 | 282 PurpleAccountUserSplit *split = iter->data; |
15818 | 283 GntWidget *entry; |
284 char *buf; | |
285 | |
286 hbox = gnt_hbox_new(TRUE); | |
287 gnt_box_add_widget(GNT_BOX(dialog->splits), hbox); | |
288 | |
15823 | 289 buf = g_strdup_printf("%s:", purple_account_user_split_get_text(split)); |
15818 | 290 gnt_box_add_widget(GNT_BOX(hbox), gnt_label_new(buf)); |
291 | |
292 entry = gnt_entry_new(NULL); | |
293 gnt_box_add_widget(GNT_BOX(hbox), entry); | |
294 | |
295 dialog->split_entries = g_list_append(dialog->split_entries, entry); | |
296 g_free(buf); | |
297 } | |
298 | |
299 for (iter = g_list_last(prplinfo->user_splits), entries = g_list_last(dialog->split_entries); | |
300 iter && entries; iter = iter->prev, entries = entries->prev) | |
301 { | |
302 GntWidget *entry = entries->data; | |
15823 | 303 PurpleAccountUserSplit *split = iter->data; |
15818 | 304 const char *value = NULL; |
305 char *s; | |
306 | |
307 if (dialog->account) | |
308 { | |
18037
e3e42a99070e
jabber can contain @ symbols and / in the resource, so we have to look for
Nathan Walp <nwalp@pidgin.im>
parents:
17419
diff
changeset
|
309 if(purple_account_user_split_get_reverse(split)) |
e3e42a99070e
jabber can contain @ symbols and / in the resource, so we have to look for
Nathan Walp <nwalp@pidgin.im>
parents:
17419
diff
changeset
|
310 s = strrchr(username, purple_account_user_split_get_separator(split)); |
e3e42a99070e
jabber can contain @ symbols and / in the resource, so we have to look for
Nathan Walp <nwalp@pidgin.im>
parents:
17419
diff
changeset
|
311 else |
e3e42a99070e
jabber can contain @ symbols and / in the resource, so we have to look for
Nathan Walp <nwalp@pidgin.im>
parents:
17419
diff
changeset
|
312 s = strchr(username, purple_account_user_split_get_separator(split)); |
e3e42a99070e
jabber can contain @ symbols and / in the resource, so we have to look for
Nathan Walp <nwalp@pidgin.im>
parents:
17419
diff
changeset
|
313 |
15818 | 314 if (s != NULL) |
315 { | |
316 *s = '\0'; | |
317 s++; | |
318 value = s; | |
319 } | |
320 } | |
321 if (value == NULL) | |
15823 | 322 value = purple_account_user_split_get_default_value(split); |
15818 | 323 |
324 if (value != NULL) | |
325 gnt_entry_set_text(GNT_ENTRY(entry), value); | |
326 } | |
327 | |
328 if (username != NULL) | |
329 gnt_entry_set_text(GNT_ENTRY(dialog->screenname), username); | |
330 | |
331 g_free(username); | |
332 } | |
333 | |
334 static void | |
335 add_protocol_options(AccountEditDialog *dialog) | |
336 { | |
15823 | 337 PurplePlugin *plugin; |
338 PurplePluginProtocolInfo *prplinfo; | |
15818 | 339 GList *iter; |
340 GntWidget *vbox, *box; | |
15823 | 341 PurpleAccount *account; |
15818 | 342 |
343 if (dialog->prpls) | |
344 gnt_box_remove_all(GNT_BOX(dialog->prpls)); | |
345 else | |
346 { | |
347 dialog->prpls = vbox = gnt_vbox_new(FALSE); | |
348 gnt_box_set_pad(GNT_BOX(vbox), 0); | |
349 gnt_box_set_alignment(GNT_BOX(vbox), GNT_ALIGN_LEFT); | |
350 gnt_box_set_fill(GNT_BOX(vbox), TRUE); | |
351 } | |
352 | |
353 if (dialog->prpl_entries) | |
354 { | |
355 g_list_free(dialog->prpl_entries); | |
356 dialog->prpl_entries = NULL; | |
357 } | |
358 | |
359 vbox = dialog->prpls; | |
360 | |
361 plugin = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(dialog->protocol)); | |
362 if (!plugin) | |
363 return; | |
364 | |
15823 | 365 prplinfo = PURPLE_PLUGIN_PROTOCOL_INFO(plugin); |
15818 | 366 |
367 account = dialog->account; | |
368 | |
369 for (iter = prplinfo->protocol_options; iter; iter = iter->next) | |
370 { | |
15823 | 371 PurpleAccountOption *option = iter->data; |
372 PurplePrefType type = purple_account_option_get_type(option); | |
15818 | 373 |
374 box = gnt_hbox_new(TRUE); | |
375 gnt_box_set_pad(GNT_BOX(box), 0); | |
376 gnt_box_add_widget(GNT_BOX(vbox), box); | |
377 | |
15823 | 378 if (type == PURPLE_PREF_BOOLEAN) |
15818 | 379 { |
15823 | 380 GntWidget *widget = gnt_check_box_new(purple_account_option_get_text(option)); |
15818 | 381 gnt_box_add_widget(GNT_BOX(box), widget); |
382 dialog->prpl_entries = g_list_append(dialog->prpl_entries, widget); | |
383 | |
384 if (account) | |
385 gnt_check_box_set_checked(GNT_CHECK_BOX(widget), | |
15823 | 386 purple_account_get_bool(account, |
387 purple_account_option_get_setting(option), | |
388 purple_account_option_get_default_bool(option))); | |
15818 | 389 else |
390 gnt_check_box_set_checked(GNT_CHECK_BOX(widget), | |
15823 | 391 purple_account_option_get_default_bool(option)); |
15818 | 392 } |
393 else | |
394 { | |
395 gnt_box_add_widget(GNT_BOX(box), | |
15823 | 396 gnt_label_new(purple_account_option_get_text(option))); |
15818 | 397 |
15823 | 398 if (type == PURPLE_PREF_STRING_LIST) |
15818 | 399 { |
400 /* TODO: Use a combobox */ | |
401 /* Don't forget to append the widget to prpl_entries */ | |
402 } | |
403 else | |
404 { | |
405 GntWidget *entry = gnt_entry_new(NULL); | |
406 gnt_box_add_widget(GNT_BOX(box), entry); | |
407 dialog->prpl_entries = g_list_append(dialog->prpl_entries, entry); | |
408 | |
15823 | 409 if (type == PURPLE_PREF_STRING) |
15818 | 410 { |
15823 | 411 const char *dv = purple_account_option_get_default_string(option); |
15818 | 412 |
413 if (account) | |
414 gnt_entry_set_text(GNT_ENTRY(entry), | |
15823 | 415 purple_account_get_string(account, |
416 purple_account_option_get_setting(option), dv)); | |
15818 | 417 else |
418 gnt_entry_set_text(GNT_ENTRY(entry), dv); | |
419 } | |
15823 | 420 else if (type == PURPLE_PREF_INT) |
15818 | 421 { |
422 char str[32]; | |
15823 | 423 int value = purple_account_option_get_default_int(option); |
15818 | 424 if (account) |
15823 | 425 value = purple_account_get_int(account, |
426 purple_account_option_get_setting(option), value); | |
15818 | 427 snprintf(str, sizeof(str), "%d", value); |
428 gnt_entry_set_flag(GNT_ENTRY(entry), GNT_ENTRY_FLAG_INT); | |
429 gnt_entry_set_text(GNT_ENTRY(entry), str); | |
430 } | |
431 else | |
432 { | |
433 g_assert_not_reached(); | |
434 } | |
435 } | |
436 } | |
437 } | |
23085
02ef6c5c6650
Allow account registration in a new account dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22770
diff
changeset
|
438 |
02ef6c5c6650
Allow account registration in a new account dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22770
diff
changeset
|
439 /* Show the registration checkbox only in a new account dialog, |
02ef6c5c6650
Allow account registration in a new account dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22770
diff
changeset
|
440 * and when the selected prpl has the support for it. */ |
02ef6c5c6650
Allow account registration in a new account dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22770
diff
changeset
|
441 gnt_widget_set_visible(dialog->regserver, account == NULL && |
02ef6c5c6650
Allow account registration in a new account dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22770
diff
changeset
|
442 prplinfo->register_user != NULL); |
15818 | 443 } |
444 | |
445 static void | |
446 update_user_options(AccountEditDialog *dialog) | |
447 { | |
15823 | 448 PurplePlugin *plugin; |
449 PurplePluginProtocolInfo *prplinfo; | |
15818 | 450 |
451 plugin = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(dialog->protocol)); | |
452 if (!plugin) | |
453 return; | |
454 | |
15823 | 455 prplinfo = PURPLE_PLUGIN_PROTOCOL_INFO(plugin); |
15818 | 456 |
457 if (dialog->newmail == NULL) | |
458 dialog->newmail = gnt_check_box_new(_("New mail notifications")); | |
459 if (dialog->account) | |
460 gnt_check_box_set_checked(GNT_CHECK_BOX(dialog->newmail), | |
15823 | 461 purple_account_get_check_mail(dialog->account)); |
15818 | 462 if (!prplinfo || !(prplinfo->options & OPT_PROTO_MAIL_CHECK)) |
463 gnt_widget_set_visible(dialog->newmail, FALSE); | |
464 else | |
465 gnt_widget_set_visible(dialog->newmail, TRUE); | |
466 | |
467 if (dialog->remember == NULL) | |
468 dialog->remember = gnt_check_box_new(_("Remember password")); | |
469 if (dialog->account) | |
470 gnt_check_box_set_checked(GNT_CHECK_BOX(dialog->remember), | |
15823 | 471 purple_account_get_remember_password(dialog->account)); |
15818 | 472 } |
473 | |
474 static void | |
15823 | 475 prpl_changed_cb(GntWidget *combo, PurplePlugin *old, PurplePlugin *new, AccountEditDialog *dialog) |
15818 | 476 { |
477 update_user_splits(dialog); | |
478 add_protocol_options(dialog); | |
479 update_user_options(dialog); /* This may not be necessary here */ | |
480 gnt_box_readjust(GNT_BOX(dialog->window)); | |
481 gnt_widget_draw(dialog->window); | |
482 } | |
483 | |
484 static void | |
15823 | 485 edit_account(PurpleAccount *account) |
15818 | 486 { |
487 GntWidget *window, *hbox; | |
488 GntWidget *combo, *button, *entry; | |
489 GList *list, *iter; | |
490 AccountEditDialog *dialog; | |
491 | |
492 if (account) | |
493 { | |
494 GList *iter; | |
495 for (iter = accountdialogs; iter; iter = iter->next) | |
496 { | |
497 AccountEditDialog *dlg = iter->data; | |
498 if (dlg->account == account) | |
499 return; | |
500 } | |
501 } | |
502 | |
18432
f5a17e7e4bfa
Do not crash when people run finch without 'make install'ing first.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18345
diff
changeset
|
503 list = purple_plugins_get_protocols(); |
f5a17e7e4bfa
Do not crash when people run finch without 'make install'ing first.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18345
diff
changeset
|
504 if (list == NULL) { |
f5a17e7e4bfa
Do not crash when people run finch without 'make install'ing first.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18345
diff
changeset
|
505 purple_notify_error(NULL, _("Error"), |
23983
81169f04ab1c
datallah reminds me that my strings suck
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23960
diff
changeset
|
506 _("There are no protocol plugins installed."), |
18432
f5a17e7e4bfa
Do not crash when people run finch without 'make install'ing first.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18345
diff
changeset
|
507 _("(You probably forgot to 'make install'.)")); |
f5a17e7e4bfa
Do not crash when people run finch without 'make install'ing first.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18345
diff
changeset
|
508 return; |
f5a17e7e4bfa
Do not crash when people run finch without 'make install'ing first.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18345
diff
changeset
|
509 } |
f5a17e7e4bfa
Do not crash when people run finch without 'make install'ing first.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18345
diff
changeset
|
510 |
15818 | 511 dialog = g_new0(AccountEditDialog, 1); |
512 accountdialogs = g_list_prepend(accountdialogs, dialog); | |
513 | |
514 dialog->window = window = gnt_vbox_new(FALSE); | |
515 dialog->account = account; | |
516 gnt_box_set_toplevel(GNT_BOX(window), TRUE); | |
517 gnt_box_set_title(GNT_BOX(window), account ? _("Modify Account") : _("New Account")); | |
518 gnt_box_set_alignment(GNT_BOX(window), GNT_ALIGN_MID); | |
519 gnt_box_set_pad(GNT_BOX(window), 0); | |
520 gnt_widget_set_name(window, "edit-account"); | |
521 gnt_box_set_fill(GNT_BOX(window), TRUE); | |
522 | |
523 hbox = gnt_hbox_new(TRUE); | |
524 gnt_box_set_pad(GNT_BOX(hbox), 0); | |
525 gnt_box_add_widget(GNT_BOX(window), hbox); | |
526 | |
527 dialog->protocol = combo = gnt_combo_box_new(); | |
528 for (iter = list; iter; iter = iter->next) | |
529 { | |
530 gnt_combo_box_add_data(GNT_COMBO_BOX(combo), iter->data, | |
15823 | 531 ((PurplePlugin*)iter->data)->info->name); |
15818 | 532 } |
533 | |
534 if (account) | |
535 gnt_combo_box_set_selected(GNT_COMBO_BOX(combo), | |
15823 | 536 purple_plugins_find_with_id(purple_account_get_protocol_id(account))); |
15818 | 537 else |
538 gnt_combo_box_set_selected(GNT_COMBO_BOX(combo), list->data); | |
539 | |
540 g_signal_connect(G_OBJECT(combo), "selection-changed", G_CALLBACK(prpl_changed_cb), dialog); | |
541 | |
542 gnt_box_add_widget(GNT_BOX(hbox), gnt_label_new(_("Protocol:"))); | |
543 gnt_box_add_widget(GNT_BOX(hbox), combo); | |
544 | |
545 hbox = gnt_hbox_new(TRUE); | |
546 gnt_box_set_pad(GNT_BOX(hbox), 0); | |
547 gnt_box_add_widget(GNT_BOX(window), hbox); | |
548 | |
549 dialog->screenname = entry = gnt_entry_new(NULL); | |
22770
cc8903c59d6b
Change the string "screen name" to "username" everywhere. I think most
Mark Doliner <mark@kingant.net>
parents:
22257
diff
changeset
|
550 gnt_box_add_widget(GNT_BOX(hbox), gnt_label_new(_("Username:"))); |
15818 | 551 gnt_box_add_widget(GNT_BOX(hbox), entry); |
552 | |
553 /* User splits */ | |
554 update_user_splits(dialog); | |
555 gnt_box_add_widget(GNT_BOX(window), dialog->splits); | |
556 | |
557 hbox = gnt_hbox_new(TRUE); | |
558 gnt_box_set_pad(GNT_BOX(hbox), 0); | |
559 gnt_box_add_widget(GNT_BOX(window), hbox); | |
560 | |
561 dialog->password = entry = gnt_entry_new(NULL); | |
562 gnt_entry_set_masked(GNT_ENTRY(entry), TRUE); | |
563 gnt_box_add_widget(GNT_BOX(hbox), gnt_label_new(_("Password:"))); | |
564 gnt_box_add_widget(GNT_BOX(hbox), entry); | |
565 if (account) | |
15823 | 566 gnt_entry_set_text(GNT_ENTRY(entry), purple_account_get_password(account)); |
15818 | 567 |
568 hbox = gnt_hbox_new(TRUE); | |
569 gnt_box_set_pad(GNT_BOX(hbox), 0); | |
570 gnt_box_add_widget(GNT_BOX(window), hbox); | |
571 | |
572 dialog->alias = entry = gnt_entry_new(NULL); | |
573 gnt_box_add_widget(GNT_BOX(hbox), gnt_label_new(_("Alias:"))); | |
574 gnt_box_add_widget(GNT_BOX(hbox), entry); | |
575 if (account) | |
15823 | 576 gnt_entry_set_text(GNT_ENTRY(entry), purple_account_get_alias(account)); |
15818 | 577 |
578 /* User options */ | |
579 update_user_options(dialog); | |
580 gnt_box_add_widget(GNT_BOX(window), dialog->remember); | |
581 gnt_box_add_widget(GNT_BOX(window), dialog->newmail); | |
582 | |
23085
02ef6c5c6650
Allow account registration in a new account dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22770
diff
changeset
|
583 /* Register checkbox */ |
02ef6c5c6650
Allow account registration in a new account dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22770
diff
changeset
|
584 dialog->regserver = gnt_check_box_new(_("Create this account on the server")); |
02ef6c5c6650
Allow account registration in a new account dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22770
diff
changeset
|
585 gnt_box_add_widget(GNT_BOX(window), dialog->regserver); |
02ef6c5c6650
Allow account registration in a new account dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22770
diff
changeset
|
586 |
15818 | 587 gnt_box_add_widget(GNT_BOX(window), gnt_line_new(FALSE)); |
588 | |
589 /* The advanced box */ | |
590 add_protocol_options(dialog); | |
591 gnt_box_add_widget(GNT_BOX(window), dialog->prpls); | |
592 | |
593 /* TODO: Add proxy options */ | |
594 | |
595 /* The button box */ | |
596 hbox = gnt_hbox_new(FALSE); | |
597 gnt_box_add_widget(GNT_BOX(window), hbox); | |
598 gnt_box_set_alignment(GNT_BOX(hbox), GNT_ALIGN_MID); | |
599 | |
600 button = gnt_button_new(_("Cancel")); | |
601 gnt_box_add_widget(GNT_BOX(hbox), button); | |
602 g_signal_connect_swapped(G_OBJECT(button), "activate", G_CALLBACK(gnt_widget_destroy), window); | |
603 | |
604 button = gnt_button_new(_("Save")); | |
605 gnt_box_add_widget(GNT_BOX(hbox), button); | |
606 g_signal_connect_swapped(G_OBJECT(button), "activate", G_CALLBACK(save_account_cb), dialog); | |
607 | |
608 g_signal_connect_swapped(G_OBJECT(window), "destroy", G_CALLBACK(edit_dialog_destroy), dialog); | |
609 | |
610 gnt_widget_show(window); | |
611 gnt_box_readjust(GNT_BOX(window)); | |
612 gnt_widget_draw(window); | |
613 } | |
614 | |
615 static void | |
616 add_account_cb(GntWidget *widget, gpointer null) | |
617 { | |
618 edit_account(NULL); | |
619 } | |
620 | |
621 static void | |
622 modify_account_cb(GntWidget *widget, GntTree *tree) | |
623 { | |
15823 | 624 PurpleAccount *account = gnt_tree_get_selection_data(tree); |
15818 | 625 if (!account) |
626 return; | |
627 edit_account(account); | |
628 } | |
629 | |
630 static void | |
15823 | 631 really_delete_account(PurpleAccount *account) |
15818 | 632 { |
633 GList *iter; | |
634 for (iter = accountdialogs; iter; iter = iter->next) | |
635 { | |
636 AccountEditDialog *dlg = iter->data; | |
637 if (dlg->account == account) | |
638 { | |
639 gnt_widget_destroy(dlg->window); | |
640 break; | |
641 } | |
642 } | |
15823 | 643 purple_request_close_with_handle(account); /* Close any other opened delete window */ |
644 purple_accounts_delete(account); | |
15818 | 645 } |
646 | |
647 static void | |
648 delete_account_cb(GntWidget *widget, GntTree *tree) | |
649 { | |
15823 | 650 PurpleAccount *account; |
15818 | 651 char *prompt; |
652 | |
653 account = gnt_tree_get_selection_data(tree); | |
654 if (!account) | |
655 return; | |
656 | |
657 prompt = g_strdup_printf(_("Are you sure you want to delete %s?"), | |
15823 | 658 purple_account_get_username(account)); |
15818 | 659 |
22257
8233bbcf3e86
The Gnome Human Interface Guidelines say, "if pressing this button by
Mark Doliner <mark@kingant.net>
parents:
22213
diff
changeset
|
660 purple_request_action(account, _("Delete Account"), prompt, NULL, |
8233bbcf3e86
The Gnome Human Interface Guidelines say, "if pressing this button by
Mark Doliner <mark@kingant.net>
parents:
22213
diff
changeset
|
661 PURPLE_DEFAULT_ACTION_NONE, |
21570
dccfd999ffe7
merge of '76c07fcb434a2a7aa289734bb221c171a376d73b'
Evan Schoenberg <evan.s@dreskin.net>
parents:
21244
diff
changeset
|
662 account, NULL, NULL, account, 2, |
16465
4b6d81d26b56
Fix a warning introduced with the request api changes.
Gary Kramlich <grim@reaperworld.com>
parents:
16442
diff
changeset
|
663 _("Delete"), really_delete_account, |
4b6d81d26b56
Fix a warning introduced with the request api changes.
Gary Kramlich <grim@reaperworld.com>
parents:
16442
diff
changeset
|
664 _("Cancel"), NULL); |
15818 | 665 g_free(prompt); |
666 } | |
667 | |
668 static void | |
669 account_toggled(GntWidget *widget, void *key, gpointer null) | |
670 { | |
15823 | 671 PurpleAccount *account = key; |
15818 | 672 |
15823 | 673 purple_account_set_enabled(account, FINCH_UI, gnt_tree_get_choice(GNT_TREE(widget), key)); |
15818 | 674 } |
675 | |
23960
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
676 static gboolean |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
677 account_list_key_pressed_cb(GntWidget *widget, const char *text, gpointer null) |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
678 { |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
679 GntTree *tree = GNT_TREE(widget); |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
680 PurpleAccount *account = gnt_tree_get_selection_data(tree); |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
681 int move, pos, count; |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
682 GList *accounts; |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
683 |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
684 if (!account) |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
685 return FALSE; |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
686 |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
687 switch (text[0]) { |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
688 case '-': |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
689 move = -1; |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
690 break; |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
691 case '=': |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
692 move = 2; /* XXX: This seems to be a bug in libpurple */ |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
693 break; |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
694 default: |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
695 return FALSE; |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
696 } |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
697 |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
698 accounts = purple_accounts_get_all(); |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
699 count = g_list_length(accounts); |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
700 pos = g_list_index(accounts, account); |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
701 pos = (move + pos + count + 1) % (count + 1); |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
702 purple_accounts_reorder(account, pos); |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
703 |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
704 /* I don't like this, but recreating the entire list seems to be |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
705 * the easiest way of doing it */ |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
706 gnt_tree_remove_all(tree); |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
707 accounts = purple_accounts_get_all(); |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
708 for (; accounts; accounts = accounts->next) |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
709 account_add(accounts->data); |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
710 gnt_tree_set_selected(tree, account); |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
711 |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
712 return TRUE; |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
713 } |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
714 |
15818 | 715 static void |
716 reset_accounts_win(GntWidget *widget, gpointer null) | |
717 { | |
718 accounts.window = NULL; | |
719 accounts.tree = NULL; | |
720 } | |
721 | |
722 void finch_accounts_show_all() | |
723 { | |
18063
926ccb104da0
disapproval of revision '1411afd7660760db59966c3a9f18e2adab8eb27e'
Richard Laager <rlaager@wiktel.com>
parents:
18058
diff
changeset
|
724 GList *iter; |
15818 | 725 GntWidget *box, *button; |
726 | |
18345
2d4df5ef0090
If the action-windows are already there, then bring them to front when
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18210
diff
changeset
|
727 if (accounts.window) { |
2d4df5ef0090
If the action-windows are already there, then bring them to front when
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18210
diff
changeset
|
728 gnt_window_present(accounts.window); |
15818 | 729 return; |
18345
2d4df5ef0090
If the action-windows are already there, then bring them to front when
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18210
diff
changeset
|
730 } |
15818 | 731 |
732 accounts.window = gnt_vbox_new(FALSE); | |
733 gnt_box_set_toplevel(GNT_BOX(accounts.window), TRUE); | |
734 gnt_box_set_title(GNT_BOX(accounts.window), _("Accounts")); | |
735 gnt_box_set_pad(GNT_BOX(accounts.window), 0); | |
736 gnt_box_set_alignment(GNT_BOX(accounts.window), GNT_ALIGN_MID); | |
737 gnt_widget_set_name(accounts.window, "accounts"); | |
738 | |
739 gnt_box_add_widget(GNT_BOX(accounts.window), | |
740 gnt_label_new(_("You can enable/disable accounts from the following list."))); | |
741 | |
742 gnt_box_add_widget(GNT_BOX(accounts.window), gnt_line_new(FALSE)); | |
743 | |
744 accounts.tree = gnt_tree_new_with_columns(2); | |
745 GNT_WIDGET_SET_FLAGS(accounts.tree, GNT_WIDGET_NO_BORDER); | |
746 | |
15823 | 747 for (iter = purple_accounts_get_all(); iter; iter = iter->next) |
15818 | 748 { |
15823 | 749 PurpleAccount *account = iter->data; |
15818 | 750 account_add(account); |
751 } | |
752 | |
753 g_signal_connect(G_OBJECT(accounts.tree), "toggled", G_CALLBACK(account_toggled), NULL); | |
23960
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
754 g_signal_connect(G_OBJECT(accounts.tree), "key_pressed", G_CALLBACK(account_list_key_pressed_cb), NULL); |
22213
16ff37f64e29
Update finch to not touch the internals of PurpleAccount. This also includes a change I made to reduce the Cyclomatic Complexity of one of the functions.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22007
diff
changeset
|
755 |
15818 | 756 gnt_tree_set_col_width(GNT_TREE(accounts.tree), 0, 40); |
757 gnt_tree_set_col_width(GNT_TREE(accounts.tree), 1, 10); | |
758 gnt_box_add_widget(GNT_BOX(accounts.window), accounts.tree); | |
759 | |
760 gnt_box_add_widget(GNT_BOX(accounts.window), gnt_line_new(FALSE)); | |
761 | |
762 box = gnt_hbox_new(FALSE); | |
763 | |
764 button = gnt_button_new(_("Add")); | |
765 gnt_box_add_widget(GNT_BOX(box), button); | |
18511
7ee0e0597a26
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18432
diff
changeset
|
766 gnt_util_set_trigger_widget(GNT_WIDGET(accounts.tree), GNT_KEY_INS, button); |
15818 | 767 g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(add_account_cb), NULL); |
768 | |
769 button = gnt_button_new(_("Modify")); | |
770 gnt_box_add_widget(GNT_BOX(box), button); | |
771 g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(modify_account_cb), accounts.tree); | |
772 | |
773 button = gnt_button_new(_("Delete")); | |
774 gnt_box_add_widget(GNT_BOX(box), button); | |
18511
7ee0e0597a26
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18432
diff
changeset
|
775 gnt_util_set_trigger_widget(GNT_WIDGET(accounts.tree), GNT_KEY_DEL, button); |
15818 | 776 g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(delete_account_cb), accounts.tree); |
22213
16ff37f64e29
Update finch to not touch the internals of PurpleAccount. This also includes a change I made to reduce the Cyclomatic Complexity of one of the functions.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22007
diff
changeset
|
777 |
15818 | 778 gnt_box_add_widget(GNT_BOX(accounts.window), box); |
779 | |
780 g_signal_connect(G_OBJECT(accounts.window), "destroy", G_CALLBACK(reset_accounts_win), NULL); | |
22213
16ff37f64e29
Update finch to not touch the internals of PurpleAccount. This also includes a change I made to reduce the Cyclomatic Complexity of one of the functions.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22007
diff
changeset
|
781 |
15818 | 782 gnt_widget_show(accounts.window); |
783 } | |
784 | |
19944
41cad24fd6df
Instead of just notifying the user about a connection error, give him options
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19938
diff
changeset
|
785 void finch_account_dialog_show(PurpleAccount *account) |
41cad24fd6df
Instead of just notifying the user about a connection error, give him options
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19938
diff
changeset
|
786 { |
41cad24fd6df
Instead of just notifying the user about a connection error, give him options
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19938
diff
changeset
|
787 edit_account(account); |
41cad24fd6df
Instead of just notifying the user about a connection error, give him options
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19938
diff
changeset
|
788 } |
41cad24fd6df
Instead of just notifying the user about a connection error, give him options
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19938
diff
changeset
|
789 |
15818 | 790 static gpointer |
22007
c38d72677c8a
Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@wiktel.com>
parents:
21570
diff
changeset
|
791 finch_accounts_get_handle(void) |
15818 | 792 { |
793 static int handle; | |
794 | |
795 return &handle; | |
796 } | |
797 | |
798 static void | |
15823 | 799 account_added_callback(PurpleAccount *account) |
15818 | 800 { |
801 if (accounts.window == NULL) | |
802 return; | |
803 account_add(account); | |
804 gnt_widget_draw(accounts.tree); | |
805 } | |
806 | |
807 static void | |
15823 | 808 account_removed_callback(PurpleAccount *account) |
15818 | 809 { |
810 if (accounts.window == NULL) | |
811 return; | |
812 | |
813 gnt_tree_remove(GNT_TREE(accounts.tree), account); | |
814 } | |
815 | |
17419
8c3a3407af58
Finch autoreconnecting (largely copy/paste from pidgin)
Richard Nelson <wabz@pidgin.im>
parents:
17104
diff
changeset
|
816 static void |
8c3a3407af58
Finch autoreconnecting (largely copy/paste from pidgin)
Richard Nelson <wabz@pidgin.im>
parents:
17104
diff
changeset
|
817 account_abled_cb(PurpleAccount *account, gpointer user_data) |
8c3a3407af58
Finch autoreconnecting (largely copy/paste from pidgin)
Richard Nelson <wabz@pidgin.im>
parents:
17104
diff
changeset
|
818 { |
8c3a3407af58
Finch autoreconnecting (largely copy/paste from pidgin)
Richard Nelson <wabz@pidgin.im>
parents:
17104
diff
changeset
|
819 if (accounts.window == NULL) |
8c3a3407af58
Finch autoreconnecting (largely copy/paste from pidgin)
Richard Nelson <wabz@pidgin.im>
parents:
17104
diff
changeset
|
820 return; |
8c3a3407af58
Finch autoreconnecting (largely copy/paste from pidgin)
Richard Nelson <wabz@pidgin.im>
parents:
17104
diff
changeset
|
821 gnt_tree_set_choice(GNT_TREE(accounts.tree), account, |
8c3a3407af58
Finch autoreconnecting (largely copy/paste from pidgin)
Richard Nelson <wabz@pidgin.im>
parents:
17104
diff
changeset
|
822 GPOINTER_TO_INT(user_data)); |
8c3a3407af58
Finch autoreconnecting (largely copy/paste from pidgin)
Richard Nelson <wabz@pidgin.im>
parents:
17104
diff
changeset
|
823 } |
8c3a3407af58
Finch autoreconnecting (largely copy/paste from pidgin)
Richard Nelson <wabz@pidgin.im>
parents:
17104
diff
changeset
|
824 |
15818 | 825 void finch_accounts_init() |
826 { | |
18063
926ccb104da0
disapproval of revision '1411afd7660760db59966c3a9f18e2adab8eb27e'
Richard Laager <rlaager@wiktel.com>
parents:
18058
diff
changeset
|
827 GList *iter; |
15818 | 828 |
15823 | 829 purple_signal_connect(purple_accounts_get_handle(), "account-added", |
830 finch_accounts_get_handle(), PURPLE_CALLBACK(account_added_callback), | |
15818 | 831 NULL); |
15823 | 832 purple_signal_connect(purple_accounts_get_handle(), "account-removed", |
833 finch_accounts_get_handle(), PURPLE_CALLBACK(account_removed_callback), | |
15818 | 834 NULL); |
17419
8c3a3407af58
Finch autoreconnecting (largely copy/paste from pidgin)
Richard Nelson <wabz@pidgin.im>
parents:
17104
diff
changeset
|
835 purple_signal_connect(purple_accounts_get_handle(), "account-disabled", |
8c3a3407af58
Finch autoreconnecting (largely copy/paste from pidgin)
Richard Nelson <wabz@pidgin.im>
parents:
17104
diff
changeset
|
836 finch_accounts_get_handle(), |
8c3a3407af58
Finch autoreconnecting (largely copy/paste from pidgin)
Richard Nelson <wabz@pidgin.im>
parents:
17104
diff
changeset
|
837 PURPLE_CALLBACK(account_abled_cb), GINT_TO_POINTER(FALSE)); |
8c3a3407af58
Finch autoreconnecting (largely copy/paste from pidgin)
Richard Nelson <wabz@pidgin.im>
parents:
17104
diff
changeset
|
838 purple_signal_connect(purple_accounts_get_handle(), "account-enabled", |
8c3a3407af58
Finch autoreconnecting (largely copy/paste from pidgin)
Richard Nelson <wabz@pidgin.im>
parents:
17104
diff
changeset
|
839 finch_accounts_get_handle(), |
8c3a3407af58
Finch autoreconnecting (largely copy/paste from pidgin)
Richard Nelson <wabz@pidgin.im>
parents:
17104
diff
changeset
|
840 PURPLE_CALLBACK(account_abled_cb), GINT_TO_POINTER(TRUE)); |
8c3a3407af58
Finch autoreconnecting (largely copy/paste from pidgin)
Richard Nelson <wabz@pidgin.im>
parents:
17104
diff
changeset
|
841 |
17532
e2e709e5446b
If there's no account at startup, sohw the 'New Account' dialog too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17523
diff
changeset
|
842 iter = purple_accounts_get_all(); |
e2e709e5446b
If there's no account at startup, sohw the 'New Account' dialog too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17523
diff
changeset
|
843 if (iter) { |
e2e709e5446b
If there's no account at startup, sohw the 'New Account' dialog too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17523
diff
changeset
|
844 for (; iter; iter = iter->next) { |
e2e709e5446b
If there's no account at startup, sohw the 'New Account' dialog too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17523
diff
changeset
|
845 if (purple_account_get_enabled(iter->data, FINCH_UI)) |
e2e709e5446b
If there's no account at startup, sohw the 'New Account' dialog too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17523
diff
changeset
|
846 break; |
e2e709e5446b
If there's no account at startup, sohw the 'New Account' dialog too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17523
diff
changeset
|
847 } |
e2e709e5446b
If there's no account at startup, sohw the 'New Account' dialog too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17523
diff
changeset
|
848 if (!iter) |
e2e709e5446b
If there's no account at startup, sohw the 'New Account' dialog too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17523
diff
changeset
|
849 finch_accounts_show_all(); |
e2e709e5446b
If there's no account at startup, sohw the 'New Account' dialog too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17523
diff
changeset
|
850 } else { |
e2e709e5446b
If there's no account at startup, sohw the 'New Account' dialog too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17523
diff
changeset
|
851 edit_account(NULL); |
e2e709e5446b
If there's no account at startup, sohw the 'New Account' dialog too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17523
diff
changeset
|
852 finch_accounts_show_all(); |
15818 | 853 } |
854 } | |
855 | |
856 void finch_accounts_uninit() | |
857 { | |
858 if (accounts.window) | |
859 gnt_widget_destroy(accounts.window); | |
860 } | |
861 | |
862 /* The following uiops stuff are copied from gtkaccount.c */ | |
863 typedef struct | |
864 { | |
15823 | 865 PurpleAccount *account; |
15818 | 866 char *username; |
867 char *alias; | |
868 } AddUserData; | |
869 | |
870 static char * | |
15823 | 871 make_info(PurpleAccount *account, PurpleConnection *gc, const char *remote_user, |
15818 | 872 const char *id, const char *alias, const char *msg) |
873 { | |
874 if (msg != NULL && *msg == '\0') | |
875 msg = NULL; | |
876 | |
877 return g_strdup_printf(_("%s%s%s%s has made %s his or her buddy%s%s"), | |
878 remote_user, | |
879 (alias != NULL ? " (" : ""), | |
880 (alias != NULL ? alias : ""), | |
881 (alias != NULL ? ")" : ""), | |
882 (id != NULL | |
883 ? id | |
15823 | 884 : (purple_connection_get_display_name(gc) != NULL |
885 ? purple_connection_get_display_name(gc) | |
886 : purple_account_get_username(account))), | |
15818 | 887 (msg != NULL ? ": " : "."), |
888 (msg != NULL ? msg : "")); | |
889 } | |
890 | |
891 static void | |
15823 | 892 notify_added(PurpleAccount *account, const char *remote_user, |
15818 | 893 const char *id, const char *alias, |
894 const char *msg) | |
895 { | |
896 char *buffer; | |
15823 | 897 PurpleConnection *gc; |
15818 | 898 |
15823 | 899 gc = purple_account_get_connection(account); |
15818 | 900 |
901 buffer = make_info(account, gc, remote_user, id, alias, msg); | |
902 | |
15823 | 903 purple_notify_info(NULL, NULL, buffer, NULL); |
15818 | 904 |
905 g_free(buffer); | |
906 } | |
907 | |
908 static void | |
909 free_add_user_data(AddUserData *data) | |
910 { | |
911 g_free(data->username); | |
912 | |
913 if (data->alias != NULL) | |
914 g_free(data->alias); | |
915 | |
916 g_free(data); | |
917 } | |
918 | |
919 static void | |
920 add_user_cb(AddUserData *data) | |
921 { | |
15823 | 922 PurpleConnection *gc = purple_account_get_connection(data->account); |
15818 | 923 |
18063
926ccb104da0
disapproval of revision '1411afd7660760db59966c3a9f18e2adab8eb27e'
Richard Laager <rlaager@wiktel.com>
parents:
18058
diff
changeset
|
924 if (g_list_find(purple_connections_get_all(), gc)) |
15818 | 925 { |
15823 | 926 purple_blist_request_add_buddy(data->account, data->username, |
15818 | 927 NULL, data->alias); |
928 } | |
929 | |
930 free_add_user_data(data); | |
931 } | |
932 | |
933 static void | |
15823 | 934 request_add(PurpleAccount *account, const char *remote_user, |
15818 | 935 const char *id, const char *alias, |
936 const char *msg) | |
937 { | |
938 char *buffer; | |
15823 | 939 PurpleConnection *gc; |
15818 | 940 AddUserData *data; |
941 | |
15823 | 942 gc = purple_account_get_connection(account); |
15818 | 943 |
944 data = g_new0(AddUserData, 1); | |
945 data->account = account; | |
946 data->username = g_strdup(remote_user); | |
947 data->alias = (alias != NULL ? g_strdup(alias) : NULL); | |
948 | |
949 buffer = make_info(account, gc, remote_user, id, alias, msg); | |
21570
dccfd999ffe7
merge of '76c07fcb434a2a7aa289734bb221c171a376d73b'
Evan Schoenberg <evan.s@dreskin.net>
parents:
21244
diff
changeset
|
950 purple_request_action(NULL, NULL, _("Add buddy to your list?"), |
16442
08db93bbd798
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents:
16194
diff
changeset
|
951 buffer, PURPLE_DEFAULT_ACTION_NONE, |
08db93bbd798
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents:
16194
diff
changeset
|
952 account, remote_user, NULL, |
21570
dccfd999ffe7
merge of '76c07fcb434a2a7aa289734bb221c171a376d73b'
Evan Schoenberg <evan.s@dreskin.net>
parents:
21244
diff
changeset
|
953 data, 2, |
15818 | 954 _("Add"), G_CALLBACK(add_user_cb), |
955 _("Cancel"), G_CALLBACK(free_add_user_data)); | |
956 g_free(buffer); | |
957 } | |
958 | |
959 /* Copied from gtkaccount.c */ | |
960 typedef struct { | |
15823 | 961 PurpleAccountRequestAuthorizationCb auth_cb; |
962 PurpleAccountRequestAuthorizationCb deny_cb; | |
15818 | 963 void *data; |
964 char *username; | |
965 char *alias; | |
15823 | 966 PurpleAccount *account; |
15818 | 967 } auth_and_add; |
968 | |
969 static void | |
17520
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
970 free_auth_and_add(auth_and_add *aa) |
15818 | 971 { |
972 g_free(aa->username); | |
973 g_free(aa->alias); | |
974 g_free(aa); | |
975 } | |
976 | |
977 static void | |
17520
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
978 authorize_and_add_cb(auth_and_add *aa) |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
979 { |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
980 aa->auth_cb(aa->data); |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
981 purple_blist_request_add_buddy(aa->account, aa->username, |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
982 NULL, aa->alias); |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
983 } |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
984 |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
985 static void |
15818 | 986 deny_no_add_cb(auth_and_add *aa) |
987 { | |
988 aa->deny_cb(aa->data); | |
989 } | |
990 | |
991 static void * | |
18829
7a594763c229
Correct the types of the authorize_cb and deny_cb parameters of
Will Thompson <will.thompson@collabora.co.uk>
parents:
18516
diff
changeset
|
992 finch_request_authorize(PurpleAccount *account, |
7a594763c229
Correct the types of the authorize_cb and deny_cb parameters of
Will Thompson <will.thompson@collabora.co.uk>
parents:
18516
diff
changeset
|
993 const char *remote_user, |
7a594763c229
Correct the types of the authorize_cb and deny_cb parameters of
Will Thompson <will.thompson@collabora.co.uk>
parents:
18516
diff
changeset
|
994 const char *id, |
7a594763c229
Correct the types of the authorize_cb and deny_cb parameters of
Will Thompson <will.thompson@collabora.co.uk>
parents:
18516
diff
changeset
|
995 const char *alias, |
7a594763c229
Correct the types of the authorize_cb and deny_cb parameters of
Will Thompson <will.thompson@collabora.co.uk>
parents:
18516
diff
changeset
|
996 const char *message, |
7a594763c229
Correct the types of the authorize_cb and deny_cb parameters of
Will Thompson <will.thompson@collabora.co.uk>
parents:
18516
diff
changeset
|
997 gboolean on_list, |
7a594763c229
Correct the types of the authorize_cb and deny_cb parameters of
Will Thompson <will.thompson@collabora.co.uk>
parents:
18516
diff
changeset
|
998 PurpleAccountRequestAuthorizationCb auth_cb, |
7a594763c229
Correct the types of the authorize_cb and deny_cb parameters of
Will Thompson <will.thompson@collabora.co.uk>
parents:
18516
diff
changeset
|
999 PurpleAccountRequestAuthorizationCb deny_cb, |
7a594763c229
Correct the types of the authorize_cb and deny_cb parameters of
Will Thompson <will.thompson@collabora.co.uk>
parents:
18516
diff
changeset
|
1000 void *user_data) |
15818 | 1001 { |
1002 char *buffer; | |
15823 | 1003 PurpleConnection *gc; |
15818 | 1004 void *uihandle; |
1005 | |
15823 | 1006 gc = purple_account_get_connection(account); |
15818 | 1007 if (message != NULL && *message == '\0') |
1008 message = NULL; | |
1009 | |
18516
15f0c935e699
I changed a string during a string freeze\! Sorry\!
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18511
diff
changeset
|
1010 buffer = g_strdup_printf(_("%s%s%s%s wants to add %s to his or her buddy list%s%s"), |
15818 | 1011 remote_user, |
1012 (alias != NULL ? " (" : ""), | |
1013 (alias != NULL ? alias : ""), | |
1014 (alias != NULL ? ")" : ""), | |
1015 (id != NULL | |
1016 ? id | |
15823 | 1017 : (purple_connection_get_display_name(gc) != NULL |
1018 ? purple_connection_get_display_name(gc) | |
1019 : purple_account_get_username(account))), | |
18516
15f0c935e699
I changed a string during a string freeze\! Sorry\!
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18511
diff
changeset
|
1020 (message != NULL ? ": " : "."), |
15818 | 1021 (message != NULL ? message : "")); |
1022 if (!on_list) { | |
17521
7f652ef12ed6
Remove the confusing 'OK' button from the auth dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17520
diff
changeset
|
1023 GntWidget *widget; |
7f652ef12ed6
Remove the confusing 'OK' button from the auth dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17520
diff
changeset
|
1024 GList *iter; |
15818 | 1025 auth_and_add *aa = g_new(auth_and_add, 1); |
17521
7f652ef12ed6
Remove the confusing 'OK' button from the auth dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17520
diff
changeset
|
1026 |
18829
7a594763c229
Correct the types of the authorize_cb and deny_cb parameters of
Will Thompson <will.thompson@collabora.co.uk>
parents:
18516
diff
changeset
|
1027 aa->auth_cb = auth_cb; |
7a594763c229
Correct the types of the authorize_cb and deny_cb parameters of
Will Thompson <will.thompson@collabora.co.uk>
parents:
18516
diff
changeset
|
1028 aa->deny_cb = deny_cb; |
15818 | 1029 aa->data = user_data; |
1030 aa->username = g_strdup(remote_user); | |
1031 aa->alias = g_strdup(alias); | |
1032 aa->account = account; | |
17520
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
1033 |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
1034 uihandle = gnt_vwindow_new(FALSE); |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
1035 gnt_box_set_title(GNT_BOX(uihandle), _("Authorize buddy?")); |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
1036 gnt_box_set_pad(GNT_BOX(uihandle), 0); |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
1037 |
21570
dccfd999ffe7
merge of '76c07fcb434a2a7aa289734bb221c171a376d73b'
Evan Schoenberg <evan.s@dreskin.net>
parents:
21244
diff
changeset
|
1038 widget = purple_request_action(NULL, _("Authorize buddy?"), buffer, NULL, |
16442
08db93bbd798
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents:
16194
diff
changeset
|
1039 PURPLE_DEFAULT_ACTION_NONE, |
08db93bbd798
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents:
16194
diff
changeset
|
1040 account, remote_user, NULL, |
21570
dccfd999ffe7
merge of '76c07fcb434a2a7aa289734bb221c171a376d73b'
Evan Schoenberg <evan.s@dreskin.net>
parents:
21244
diff
changeset
|
1041 aa, 2, |
15818 | 1042 _("Authorize"), authorize_and_add_cb, |
1043 _("Deny"), deny_no_add_cb); | |
17520
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
1044 gnt_screen_release(widget); |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
1045 gnt_box_set_toplevel(GNT_BOX(widget), FALSE); |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
1046 gnt_box_add_widget(GNT_BOX(uihandle), widget); |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
1047 |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
1048 gnt_box_add_widget(GNT_BOX(uihandle), gnt_hline_new()); |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
1049 |
22213
16ff37f64e29
Update finch to not touch the internals of PurpleAccount. This also includes a change I made to reduce the Cyclomatic Complexity of one of the functions.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22007
diff
changeset
|
1050 widget = finch_retrieve_user_info(purple_account_get_connection(account), remote_user); |
17521
7f652ef12ed6
Remove the confusing 'OK' button from the auth dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17520
diff
changeset
|
1051 for (iter = GNT_BOX(widget)->list; iter; iter = iter->next) { |
7f652ef12ed6
Remove the confusing 'OK' button from the auth dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17520
diff
changeset
|
1052 if (GNT_IS_BUTTON(iter->data)) { |
7f652ef12ed6
Remove the confusing 'OK' button from the auth dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17520
diff
changeset
|
1053 gnt_widget_destroy(iter->data); |
7f652ef12ed6
Remove the confusing 'OK' button from the auth dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17520
diff
changeset
|
1054 gnt_box_remove(GNT_BOX(widget), iter->data); |
7f652ef12ed6
Remove the confusing 'OK' button from the auth dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17520
diff
changeset
|
1055 break; |
7f652ef12ed6
Remove the confusing 'OK' button from the auth dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17520
diff
changeset
|
1056 } |
7f652ef12ed6
Remove the confusing 'OK' button from the auth dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17520
diff
changeset
|
1057 } |
17520
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
1058 gnt_box_set_toplevel(GNT_BOX(widget), FALSE); |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
1059 gnt_screen_release(widget); |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
1060 gnt_box_add_widget(GNT_BOX(uihandle), widget); |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
1061 gnt_widget_show(uihandle); |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
1062 |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
1063 g_signal_connect_swapped(G_OBJECT(uihandle), "destroy", G_CALLBACK(free_auth_and_add), aa); |
15818 | 1064 } else { |
21570
dccfd999ffe7
merge of '76c07fcb434a2a7aa289734bb221c171a376d73b'
Evan Schoenberg <evan.s@dreskin.net>
parents:
21244
diff
changeset
|
1065 uihandle = purple_request_action(NULL, _("Authorize buddy?"), buffer, NULL, |
16442
08db93bbd798
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents:
16194
diff
changeset
|
1066 PURPLE_DEFAULT_ACTION_NONE, |
08db93bbd798
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents:
16194
diff
changeset
|
1067 account, remote_user, NULL, |
21570
dccfd999ffe7
merge of '76c07fcb434a2a7aa289734bb221c171a376d73b'
Evan Schoenberg <evan.s@dreskin.net>
parents:
21244
diff
changeset
|
1068 user_data, 2, |
15818 | 1069 _("Authorize"), auth_cb, |
1070 _("Deny"), deny_cb); | |
1071 } | |
24541
024818afb013
A patch to clean up authorization request related stuff. Fixes #7695.
Paul Aurich <paul@darkrain42.org>
parents:
23983
diff
changeset
|
1072 g_signal_connect(G_OBJECT(uihandle), "destroy", |
024818afb013
A patch to clean up authorization request related stuff. Fixes #7695.
Paul Aurich <paul@darkrain42.org>
parents:
23983
diff
changeset
|
1073 G_CALLBACK(purple_account_request_close), NULL); |
15818 | 1074 g_free(buffer); |
1075 return uihandle; | |
1076 } | |
1077 | |
1078 static void | |
1079 finch_request_close(void *uihandle) | |
1080 { | |
15823 | 1081 purple_request_close(PURPLE_REQUEST_ACTION, uihandle); |
15818 | 1082 } |
1083 | |
15823 | 1084 static PurpleAccountUiOps ui_ops = |
15818 | 1085 { |
17104
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16465
diff
changeset
|
1086 notify_added, |
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16465
diff
changeset
|
1087 NULL, |
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16465
diff
changeset
|
1088 request_add, |
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16465
diff
changeset
|
1089 finch_request_authorize, |
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16465
diff
changeset
|
1090 finch_request_close, |
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16465
diff
changeset
|
1091 NULL, |
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16465
diff
changeset
|
1092 NULL, |
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16465
diff
changeset
|
1093 NULL, |
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16465
diff
changeset
|
1094 NULL |
15818 | 1095 }; |
1096 | |
15823 | 1097 PurpleAccountUiOps *finch_accounts_get_ui_ops() |
15818 | 1098 { |
1099 return &ui_ops; | |
1100 } | |
1101 |