diff options
author | Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im> | 2013-05-11 19:06:59 +0200 |
---|---|---|
committer | Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im> | 2013-05-11 19:06:59 +0200 |
commit | 21837613f883278a658daf41dc562bdc6a6e45d1 (patch) | |
tree | d69de0b15167994d804ce483479d2d594542f219 | |
parent | 25a3966f3c042994fb7aa5e2090dbb383f672d0a (diff) | |
download | pidgin-21837613f883278a658daf41dc562bdc6a6e45d1.tar.gz |
Add keyring settings to finch
-rw-r--r-- | finch/gntprefs.c | 43 | ||||
-rw-r--r-- | finch/gntprefs.h | 5 | ||||
-rw-r--r-- | finch/gntui.c | 1 |
3 files changed, 48 insertions, 1 deletions
diff --git a/finch/gntprefs.c b/finch/gntprefs.c index 166a1aa84d..98a7bdf081 100644 --- a/finch/gntprefs.c +++ b/finch/gntprefs.c @@ -1,7 +1,6 @@ /** * @file gntprefs.c GNT Preferences API * @ingroup finch - * @todo: add support for master password changing. */ /* finch @@ -42,6 +41,7 @@ static struct { GList *freestrings; /* strings to be freed when the pref-window is closed */ gboolean showing; GntWidget *window; + GntWidget *keyring_window; } pref_request; void finch_prefs_init() @@ -253,6 +253,10 @@ void finch_prefs_show_all() return; } + if (pref_request.keyring_window != NULL) + purple_request_close(PURPLE_REQUEST_FIELDS, + pref_request.keyring_window); + fields = purple_request_fields_new(); add_pref_group(fields, _("Buddy List"), blist); @@ -268,3 +272,40 @@ void finch_prefs_show_all() NULL); } +static void +finch_prefs_keyring_save(void *data, PurpleRequestFields *fields) +{ + pref_request.keyring_window = NULL; + + purple_keyring_apply_settings(NULL, fields); +} + +static void +finch_prefs_keyring_cancel(void) +{ + pref_request.keyring_window = NULL; +} + +void finch_prefs_show_keyring(void) +{ + PurpleRequestFields *fields; + + if (pref_request.keyring_window != NULL) { + gnt_window_present(pref_request.keyring_window); + return; + } + + fields = purple_keyring_read_settings(); + if (fields == NULL) { + purple_notify_info(NULL, _("Keyring settings"), + _("Selected keyring doesn't allow any configuration"), + NULL); + return; + } + + pref_request.keyring_window = purple_request_fields(NULL, + _("Keyring settings"), NULL, NULL, fields, + _("Save"), G_CALLBACK(finch_prefs_keyring_save), + _("Cancel"), G_CALLBACK(finch_prefs_keyring_cancel), + NULL, NULL, NULL, NULL); +} diff --git a/finch/gntprefs.h b/finch/gntprefs.h index b11a3141f9..88173e13a1 100644 --- a/finch/gntprefs.h +++ b/finch/gntprefs.h @@ -42,6 +42,11 @@ void finch_prefs_init(void); void finch_prefs_show_all(void); /** + * Show the preferences dialog for the selected keyring. + */ +void finch_prefs_show_keyring(void); + +/** * You don't need to know about this. */ void finch_prefs_update_old(void); diff --git a/finch/gntui.c b/finch/gntui.c index bac9ec0912..833d464d7d 100644 --- a/finch/gntui.c +++ b/finch/gntui.c @@ -106,6 +106,7 @@ void gnt_ui_init() gnt_register_action(_("Room List"), finch_roomlist_show_all); gnt_register_action(_("Sounds"), finch_sounds_show_all); gnt_register_action(_("Preferences"), finch_prefs_show_all); + gnt_register_action(_("Keyring settings"), finch_prefs_show_keyring); gnt_register_action(_("Statuses"), finch_savedstatus_show_all); #ifdef STANDALONE |