Mercurial > pidgin.yaz
annotate finch/gntaccount.c @ 27302:716bd29bdc28
Process the data correctly if the server sends chunked data.
The yahoo servers seem to always send out chunked data, which can cause
errors with aliases, profile pictures etc. Apparently we include 'Host: '
header when we request the URL, hoping that would stop the server from
sending us chunked data. But that at least doesn't work for the yahoo
servers, it seems.
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Tue, 30 Jun 2009 20:48:12 +0000 |
parents | 246081d2d990 |
children | f7c5bb2f6623 |
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; | |
25416
6e1967b0f90b
Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents:
24541
diff
changeset
|
68 GntWidget *username; |
15818 | 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 |
25416
6e1967b0f90b
Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents:
24541
diff
changeset
|
121 /* Username && user-splits */ |
6e1967b0f90b
Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents:
24541
diff
changeset
|
122 value = gnt_entry_get_text(GNT_ENTRY(dialog->username)); |
15818 | 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) | |
25416
6e1967b0f90b
Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents:
24541
diff
changeset
|
329 gnt_entry_set_text(GNT_ENTRY(dialog->username), username); |
15818 | 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 | |
25416
6e1967b0f90b
Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents:
24541
diff
changeset
|
549 dialog->username = 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; |
26580
246081d2d990
Activate the current status for an account being enabled
Richard Nelson <wabz@pidgin.im>
parents:
26429
diff
changeset
|
672 gboolean enabled = gnt_tree_get_choice(GNT_TREE(widget), key); |
15818 | 673 |
26580
246081d2d990
Activate the current status for an account being enabled
Richard Nelson <wabz@pidgin.im>
parents:
26429
diff
changeset
|
674 if (enabled) |
246081d2d990
Activate the current status for an account being enabled
Richard Nelson <wabz@pidgin.im>
parents:
26429
diff
changeset
|
675 purple_savedstatus_activate_for_account(purple_savedstatus_get_current(), |
246081d2d990
Activate the current status for an account being enabled
Richard Nelson <wabz@pidgin.im>
parents:
26429
diff
changeset
|
676 account); |
246081d2d990
Activate the current status for an account being enabled
Richard Nelson <wabz@pidgin.im>
parents:
26429
diff
changeset
|
677 |
246081d2d990
Activate the current status for an account being enabled
Richard Nelson <wabz@pidgin.im>
parents:
26429
diff
changeset
|
678 purple_account_set_enabled(account, FINCH_UI, enabled); |
15818 | 679 } |
680 | |
23960
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
681 static gboolean |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
682 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
|
683 { |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
684 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
|
685 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
|
686 int move, pos, count; |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
687 GList *accounts; |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
688 |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
689 if (!account) |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
690 return FALSE; |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
691 |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
692 switch (text[0]) { |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
693 case '-': |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
694 move = -1; |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
695 break; |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
696 case '=': |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
697 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
|
698 break; |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
699 default: |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
700 return FALSE; |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
701 } |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
702 |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
703 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
|
704 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
|
705 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
|
706 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
|
707 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
|
708 |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
709 /* 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
|
710 * 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
|
711 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
|
712 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
|
713 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
|
714 account_add(accounts->data); |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
715 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
|
716 |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
717 return TRUE; |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
718 } |
84deb53a0a06
Press - or = in the accounts list to reorder accounts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23085
diff
changeset
|
719 |
15818 | 720 static void |
721 reset_accounts_win(GntWidget *widget, gpointer null) | |
722 { | |
723 accounts.window = NULL; | |
724 accounts.tree = NULL; | |
725 } | |
726 | |
727 void finch_accounts_show_all() | |
728 { | |
18063
926ccb104da0
disapproval of revision '1411afd7660760db59966c3a9f18e2adab8eb27e'
Richard Laager <rlaager@wiktel.com>
parents:
18058
diff
changeset
|
729 GList *iter; |
15818 | 730 GntWidget *box, *button; |
731 | |
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
|
732 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
|
733 gnt_window_present(accounts.window); |
15818 | 734 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
|
735 } |
15818 | 736 |
737 accounts.window = gnt_vbox_new(FALSE); | |
738 gnt_box_set_toplevel(GNT_BOX(accounts.window), TRUE); | |
739 gnt_box_set_title(GNT_BOX(accounts.window), _("Accounts")); | |
740 gnt_box_set_pad(GNT_BOX(accounts.window), 0); | |
741 gnt_box_set_alignment(GNT_BOX(accounts.window), GNT_ALIGN_MID); | |
742 gnt_widget_set_name(accounts.window, "accounts"); | |
743 | |
744 gnt_box_add_widget(GNT_BOX(accounts.window), | |
745 gnt_label_new(_("You can enable/disable accounts from the following list."))); | |
746 | |
747 gnt_box_add_widget(GNT_BOX(accounts.window), gnt_line_new(FALSE)); | |
748 | |
749 accounts.tree = gnt_tree_new_with_columns(2); | |
750 GNT_WIDGET_SET_FLAGS(accounts.tree, GNT_WIDGET_NO_BORDER); | |
751 | |
15823 | 752 for (iter = purple_accounts_get_all(); iter; iter = iter->next) |
15818 | 753 { |
15823 | 754 PurpleAccount *account = iter->data; |
15818 | 755 account_add(account); |
756 } | |
757 | |
758 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
|
759 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
|
760 |
15818 | 761 gnt_tree_set_col_width(GNT_TREE(accounts.tree), 0, 40); |
762 gnt_tree_set_col_width(GNT_TREE(accounts.tree), 1, 10); | |
763 gnt_box_add_widget(GNT_BOX(accounts.window), accounts.tree); | |
764 | |
765 gnt_box_add_widget(GNT_BOX(accounts.window), gnt_line_new(FALSE)); | |
766 | |
767 box = gnt_hbox_new(FALSE); | |
768 | |
769 button = gnt_button_new(_("Add")); | |
770 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
|
771 gnt_util_set_trigger_widget(GNT_WIDGET(accounts.tree), GNT_KEY_INS, button); |
15818 | 772 g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(add_account_cb), NULL); |
773 | |
774 button = gnt_button_new(_("Modify")); | |
775 gnt_box_add_widget(GNT_BOX(box), button); | |
776 g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(modify_account_cb), accounts.tree); | |
777 | |
778 button = gnt_button_new(_("Delete")); | |
779 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
|
780 gnt_util_set_trigger_widget(GNT_WIDGET(accounts.tree), GNT_KEY_DEL, button); |
15818 | 781 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
|
782 |
15818 | 783 gnt_box_add_widget(GNT_BOX(accounts.window), box); |
784 | |
785 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
|
786 |
15818 | 787 gnt_widget_show(accounts.window); |
788 } | |
789 | |
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
|
790 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
|
791 { |
41cad24fd6df
Instead of just notifying the user about a connection error, give him options
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19938
diff
changeset
|
792 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
|
793 } |
41cad24fd6df
Instead of just notifying the user about a connection error, give him options
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19938
diff
changeset
|
794 |
15818 | 795 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
|
796 finch_accounts_get_handle(void) |
15818 | 797 { |
798 static int handle; | |
799 | |
800 return &handle; | |
801 } | |
802 | |
803 static void | |
15823 | 804 account_added_callback(PurpleAccount *account) |
15818 | 805 { |
806 if (accounts.window == NULL) | |
807 return; | |
808 account_add(account); | |
809 gnt_widget_draw(accounts.tree); | |
810 } | |
811 | |
812 static void | |
15823 | 813 account_removed_callback(PurpleAccount *account) |
15818 | 814 { |
815 if (accounts.window == NULL) | |
816 return; | |
817 | |
818 gnt_tree_remove(GNT_TREE(accounts.tree), account); | |
819 } | |
820 | |
17419
8c3a3407af58
Finch autoreconnecting (largely copy/paste from pidgin)
Richard Nelson <wabz@pidgin.im>
parents:
17104
diff
changeset
|
821 static void |
8c3a3407af58
Finch autoreconnecting (largely copy/paste from pidgin)
Richard Nelson <wabz@pidgin.im>
parents:
17104
diff
changeset
|
822 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
|
823 { |
8c3a3407af58
Finch autoreconnecting (largely copy/paste from pidgin)
Richard Nelson <wabz@pidgin.im>
parents:
17104
diff
changeset
|
824 if (accounts.window == NULL) |
8c3a3407af58
Finch autoreconnecting (largely copy/paste from pidgin)
Richard Nelson <wabz@pidgin.im>
parents:
17104
diff
changeset
|
825 return; |
8c3a3407af58
Finch autoreconnecting (largely copy/paste from pidgin)
Richard Nelson <wabz@pidgin.im>
parents:
17104
diff
changeset
|
826 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
|
827 GPOINTER_TO_INT(user_data)); |
8c3a3407af58
Finch autoreconnecting (largely copy/paste from pidgin)
Richard Nelson <wabz@pidgin.im>
parents:
17104
diff
changeset
|
828 } |
8c3a3407af58
Finch autoreconnecting (largely copy/paste from pidgin)
Richard Nelson <wabz@pidgin.im>
parents:
17104
diff
changeset
|
829 |
15818 | 830 void finch_accounts_init() |
831 { | |
18063
926ccb104da0
disapproval of revision '1411afd7660760db59966c3a9f18e2adab8eb27e'
Richard Laager <rlaager@wiktel.com>
parents:
18058
diff
changeset
|
832 GList *iter; |
15818 | 833 |
15823 | 834 purple_signal_connect(purple_accounts_get_handle(), "account-added", |
835 finch_accounts_get_handle(), PURPLE_CALLBACK(account_added_callback), | |
15818 | 836 NULL); |
15823 | 837 purple_signal_connect(purple_accounts_get_handle(), "account-removed", |
838 finch_accounts_get_handle(), PURPLE_CALLBACK(account_removed_callback), | |
15818 | 839 NULL); |
17419
8c3a3407af58
Finch autoreconnecting (largely copy/paste from pidgin)
Richard Nelson <wabz@pidgin.im>
parents:
17104
diff
changeset
|
840 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
|
841 finch_accounts_get_handle(), |
8c3a3407af58
Finch autoreconnecting (largely copy/paste from pidgin)
Richard Nelson <wabz@pidgin.im>
parents:
17104
diff
changeset
|
842 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
|
843 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
|
844 finch_accounts_get_handle(), |
8c3a3407af58
Finch autoreconnecting (largely copy/paste from pidgin)
Richard Nelson <wabz@pidgin.im>
parents:
17104
diff
changeset
|
845 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
|
846 |
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
|
847 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
|
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 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
|
850 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
|
851 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
|
852 } |
e2e709e5446b
If there's no account at startup, sohw the 'New Account' dialog too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17523
diff
changeset
|
853 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
|
854 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
|
855 } 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
|
856 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
|
857 finch_accounts_show_all(); |
15818 | 858 } |
859 } | |
860 | |
861 void finch_accounts_uninit() | |
862 { | |
863 if (accounts.window) | |
864 gnt_widget_destroy(accounts.window); | |
865 } | |
866 | |
867 /* The following uiops stuff are copied from gtkaccount.c */ | |
868 typedef struct | |
869 { | |
15823 | 870 PurpleAccount *account; |
15818 | 871 char *username; |
872 char *alias; | |
873 } AddUserData; | |
874 | |
875 static char * | |
15823 | 876 make_info(PurpleAccount *account, PurpleConnection *gc, const char *remote_user, |
15818 | 877 const char *id, const char *alias, const char *msg) |
878 { | |
879 if (msg != NULL && *msg == '\0') | |
880 msg = NULL; | |
881 | |
882 return g_strdup_printf(_("%s%s%s%s has made %s his or her buddy%s%s"), | |
883 remote_user, | |
884 (alias != NULL ? " (" : ""), | |
885 (alias != NULL ? alias : ""), | |
886 (alias != NULL ? ")" : ""), | |
887 (id != NULL | |
888 ? id | |
15823 | 889 : (purple_connection_get_display_name(gc) != NULL |
890 ? purple_connection_get_display_name(gc) | |
891 : purple_account_get_username(account))), | |
15818 | 892 (msg != NULL ? ": " : "."), |
893 (msg != NULL ? msg : "")); | |
894 } | |
895 | |
896 static void | |
15823 | 897 notify_added(PurpleAccount *account, const char *remote_user, |
15818 | 898 const char *id, const char *alias, |
899 const char *msg) | |
900 { | |
901 char *buffer; | |
15823 | 902 PurpleConnection *gc; |
15818 | 903 |
15823 | 904 gc = purple_account_get_connection(account); |
15818 | 905 |
906 buffer = make_info(account, gc, remote_user, id, alias, msg); | |
907 | |
15823 | 908 purple_notify_info(NULL, NULL, buffer, NULL); |
15818 | 909 |
910 g_free(buffer); | |
911 } | |
912 | |
913 static void | |
914 free_add_user_data(AddUserData *data) | |
915 { | |
916 g_free(data->username); | |
917 | |
918 if (data->alias != NULL) | |
919 g_free(data->alias); | |
920 | |
921 g_free(data); | |
922 } | |
923 | |
924 static void | |
925 add_user_cb(AddUserData *data) | |
926 { | |
15823 | 927 PurpleConnection *gc = purple_account_get_connection(data->account); |
15818 | 928 |
18063
926ccb104da0
disapproval of revision '1411afd7660760db59966c3a9f18e2adab8eb27e'
Richard Laager <rlaager@wiktel.com>
parents:
18058
diff
changeset
|
929 if (g_list_find(purple_connections_get_all(), gc)) |
15818 | 930 { |
15823 | 931 purple_blist_request_add_buddy(data->account, data->username, |
15818 | 932 NULL, data->alias); |
933 } | |
934 | |
935 free_add_user_data(data); | |
936 } | |
937 | |
938 static void | |
15823 | 939 request_add(PurpleAccount *account, const char *remote_user, |
15818 | 940 const char *id, const char *alias, |
941 const char *msg) | |
942 { | |
943 char *buffer; | |
15823 | 944 PurpleConnection *gc; |
15818 | 945 AddUserData *data; |
946 | |
15823 | 947 gc = purple_account_get_connection(account); |
15818 | 948 |
949 data = g_new0(AddUserData, 1); | |
950 data->account = account; | |
951 data->username = g_strdup(remote_user); | |
952 data->alias = (alias != NULL ? g_strdup(alias) : NULL); | |
953 | |
954 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
|
955 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
|
956 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
|
957 account, remote_user, NULL, |
21570
dccfd999ffe7
merge of '76c07fcb434a2a7aa289734bb221c171a376d73b'
Evan Schoenberg <evan.s@dreskin.net>
parents:
21244
diff
changeset
|
958 data, 2, |
15818 | 959 _("Add"), G_CALLBACK(add_user_cb), |
960 _("Cancel"), G_CALLBACK(free_add_user_data)); | |
961 g_free(buffer); | |
962 } | |
963 | |
964 /* Copied from gtkaccount.c */ | |
965 typedef struct { | |
15823 | 966 PurpleAccountRequestAuthorizationCb auth_cb; |
967 PurpleAccountRequestAuthorizationCb deny_cb; | |
15818 | 968 void *data; |
969 char *username; | |
970 char *alias; | |
15823 | 971 PurpleAccount *account; |
15818 | 972 } auth_and_add; |
973 | |
974 static void | |
17520
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
975 free_auth_and_add(auth_and_add *aa) |
15818 | 976 { |
977 g_free(aa->username); | |
978 g_free(aa->alias); | |
979 g_free(aa); | |
980 } | |
981 | |
982 static void | |
17520
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
983 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
|
984 { |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
985 aa->auth_cb(aa->data); |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
986 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
|
987 NULL, aa->alias); |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
988 } |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
989 |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
990 static void |
15818 | 991 deny_no_add_cb(auth_and_add *aa) |
992 { | |
993 aa->deny_cb(aa->data); | |
994 } | |
995 | |
996 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
|
997 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
|
998 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
|
999 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
|
1000 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
|
1001 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
|
1002 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
|
1003 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
|
1004 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
|
1005 void *user_data) |
15818 | 1006 { |
1007 char *buffer; | |
15823 | 1008 PurpleConnection *gc; |
15818 | 1009 void *uihandle; |
1010 | |
15823 | 1011 gc = purple_account_get_connection(account); |
15818 | 1012 if (message != NULL && *message == '\0') |
1013 message = NULL; | |
1014 | |
18516
15f0c935e699
I changed a string during a string freeze\! Sorry\!
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18511
diff
changeset
|
1015 buffer = g_strdup_printf(_("%s%s%s%s wants to add %s to his or her buddy list%s%s"), |
15818 | 1016 remote_user, |
1017 (alias != NULL ? " (" : ""), | |
1018 (alias != NULL ? alias : ""), | |
1019 (alias != NULL ? ")" : ""), | |
1020 (id != NULL | |
1021 ? id | |
15823 | 1022 : (purple_connection_get_display_name(gc) != NULL |
1023 ? purple_connection_get_display_name(gc) | |
1024 : 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
|
1025 (message != NULL ? ": " : "."), |
15818 | 1026 (message != NULL ? message : "")); |
1027 if (!on_list) { | |
17521
7f652ef12ed6
Remove the confusing 'OK' button from the auth dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17520
diff
changeset
|
1028 GntWidget *widget; |
7f652ef12ed6
Remove the confusing 'OK' button from the auth dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17520
diff
changeset
|
1029 GList *iter; |
15818 | 1030 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
|
1031 |
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
|
1032 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
|
1033 aa->deny_cb = deny_cb; |
15818 | 1034 aa->data = user_data; |
1035 aa->username = g_strdup(remote_user); | |
1036 aa->alias = g_strdup(alias); | |
1037 aa->account = account; | |
17520
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
1038 |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
1039 uihandle = gnt_vwindow_new(FALSE); |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
1040 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
|
1041 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
|
1042 |
21570
dccfd999ffe7
merge of '76c07fcb434a2a7aa289734bb221c171a376d73b'
Evan Schoenberg <evan.s@dreskin.net>
parents:
21244
diff
changeset
|
1043 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
|
1044 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
|
1045 account, remote_user, NULL, |
21570
dccfd999ffe7
merge of '76c07fcb434a2a7aa289734bb221c171a376d73b'
Evan Schoenberg <evan.s@dreskin.net>
parents:
21244
diff
changeset
|
1046 aa, 2, |
15818 | 1047 _("Authorize"), authorize_and_add_cb, |
1048 _("Deny"), deny_no_add_cb); | |
17520
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
1049 gnt_screen_release(widget); |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
1050 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
|
1051 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
|
1052 |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
1053 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
|
1054 |
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
|
1055 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
|
1056 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
|
1057 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
|
1058 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
|
1059 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
|
1060 break; |
7f652ef12ed6
Remove the confusing 'OK' button from the auth dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17520
diff
changeset
|
1061 } |
7f652ef12ed6
Remove the confusing 'OK' button from the auth dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17520
diff
changeset
|
1062 } |
17520
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
1063 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
|
1064 gnt_screen_release(widget); |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
1065 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
|
1066 gnt_widget_show(uihandle); |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
1067 |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17104
diff
changeset
|
1068 g_signal_connect_swapped(G_OBJECT(uihandle), "destroy", G_CALLBACK(free_auth_and_add), aa); |
15818 | 1069 } else { |
21570
dccfd999ffe7
merge of '76c07fcb434a2a7aa289734bb221c171a376d73b'
Evan Schoenberg <evan.s@dreskin.net>
parents:
21244
diff
changeset
|
1070 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
|
1071 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
|
1072 account, remote_user, NULL, |
21570
dccfd999ffe7
merge of '76c07fcb434a2a7aa289734bb221c171a376d73b'
Evan Schoenberg <evan.s@dreskin.net>
parents:
21244
diff
changeset
|
1073 user_data, 2, |
15818 | 1074 _("Authorize"), auth_cb, |
1075 _("Deny"), deny_cb); | |
1076 } | |
24541
024818afb013
A patch to clean up authorization request related stuff. Fixes #7695.
Paul Aurich <paul@darkrain42.org>
parents:
23983
diff
changeset
|
1077 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
|
1078 G_CALLBACK(purple_account_request_close), NULL); |
15818 | 1079 g_free(buffer); |
1080 return uihandle; | |
1081 } | |
1082 | |
1083 static void | |
1084 finch_request_close(void *uihandle) | |
1085 { | |
15823 | 1086 purple_request_close(PURPLE_REQUEST_ACTION, uihandle); |
15818 | 1087 } |
1088 | |
15823 | 1089 static PurpleAccountUiOps ui_ops = |
15818 | 1090 { |
17104
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16465
diff
changeset
|
1091 notify_added, |
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 request_add, |
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16465
diff
changeset
|
1094 finch_request_authorize, |
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16465
diff
changeset
|
1095 finch_request_close, |
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16465
diff
changeset
|
1096 NULL, |
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16465
diff
changeset
|
1097 NULL, |
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16465
diff
changeset
|
1098 NULL, |
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16465
diff
changeset
|
1099 NULL |
15818 | 1100 }; |
1101 | |
15823 | 1102 PurpleAccountUiOps *finch_accounts_get_ui_ops() |
15818 | 1103 { |
1104 return &ui_ops; | |
1105 } | |
1106 |