summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>2013-05-11 19:06:59 +0200
committerTomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>2013-05-11 19:06:59 +0200
commit21837613f883278a658daf41dc562bdc6a6e45d1 (patch)
treed69de0b15167994d804ce483479d2d594542f219
parent25a3966f3c042994fb7aa5e2090dbb383f672d0a (diff)
downloadpidgin-21837613f883278a658daf41dc562bdc6a6e45d1.tar.gz
Add keyring settings to finch
-rw-r--r--finch/gntprefs.c43
-rw-r--r--finch/gntprefs.h5
-rw-r--r--finch/gntui.c1
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