finch/gntprefs.c

branch
soc.2008.masterpassword
changeset 34191
13be8e0a1bd0
parent 34145
fa72f1e5cd77
child 34193
95e4bd9d5b9c
equal deleted inserted replaced
34190:b81cb5542862 34191:13be8e0a1bd0
1 /** 1 /**
2 * @file gntprefs.c GNT Preferences API 2 * @file gntprefs.c GNT Preferences API
3 * @ingroup finch 3 * @ingroup finch
4 * @todo: add support for master password changing.
5 */ 4 */
6 5
7 /* finch 6 /* finch
8 * 7 *
9 * Finch is the legal property of its developers, whose names are too numerous 8 * Finch is the legal property of its developers, whose names are too numerous
40 39
41 static struct { 40 static struct {
42 GList *freestrings; /* strings to be freed when the pref-window is closed */ 41 GList *freestrings; /* strings to be freed when the pref-window is closed */
43 gboolean showing; 42 gboolean showing;
44 GntWidget *window; 43 GntWidget *window;
44 GntWidget *keyring_window;
45 } pref_request; 45 } pref_request;
46 46
47 void finch_prefs_init() 47 void finch_prefs_init()
48 { 48 {
49 purple_prefs_add_none("/finch"); 49 purple_prefs_add_none("/finch");
251 if (pref_request.showing) { 251 if (pref_request.showing) {
252 gnt_window_present(pref_request.window); 252 gnt_window_present(pref_request.window);
253 return; 253 return;
254 } 254 }
255 255
256 if (pref_request.keyring_window != NULL)
257 purple_request_close(PURPLE_REQUEST_FIELDS,
258 pref_request.keyring_window);
259
256 fields = purple_request_fields_new(); 260 fields = purple_request_fields_new();
257 261
258 add_pref_group(fields, _("Buddy List"), blist); 262 add_pref_group(fields, _("Buddy List"), blist);
259 add_pref_group(fields, _("Conversations"), convs); 263 add_pref_group(fields, _("Conversations"), convs);
260 add_pref_group(fields, _("Keyring"), keyring); 264 add_pref_group(fields, _("Keyring"), keyring);
266 _("Save"), G_CALLBACK(save_cb), _("Cancel"), free_strings, 270 _("Save"), G_CALLBACK(save_cb), _("Cancel"), free_strings,
267 NULL, NULL, NULL, 271 NULL, NULL, NULL,
268 NULL); 272 NULL);
269 } 273 }
270 274
275 static void
276 finch_prefs_keyring_save(void *data, PurpleRequestFields *fields)
277 {
278 pref_request.keyring_window = NULL;
279
280 purple_keyring_apply_settings(NULL, fields);
281 }
282
283 static void
284 finch_prefs_keyring_cancel(void)
285 {
286 pref_request.keyring_window = NULL;
287 }
288
289 void finch_prefs_show_keyring(void)
290 {
291 PurpleRequestFields *fields;
292
293 if (pref_request.keyring_window != NULL) {
294 gnt_window_present(pref_request.keyring_window);
295 return;
296 }
297
298 fields = purple_keyring_read_settings();
299 if (fields == NULL) {
300 purple_notify_info(NULL, _("Keyring settings"),
301 _("Selected keyring doesn't allow any configuration"),
302 NULL);
303 return;
304 }
305
306 pref_request.keyring_window = purple_request_fields(NULL,
307 _("Keyring settings"), NULL, NULL, fields,
308 _("Save"), G_CALLBACK(finch_prefs_keyring_save),
309 _("Cancel"), G_CALLBACK(finch_prefs_keyring_cancel),
310 NULL, NULL, NULL, NULL);
311 }

mercurial