changeset 11042:a5c31b83063f

[gaim-migrate @ 12954] Patch #1228093 from Sadrul Habib Chowdhury "This patch adds a checkbox `Save password' in the request-password dialog." -- sadrul committer: Tailor Script <tailor@pidgin.im>
author Richard Laager <rlaager@wiktel.com>
date Thu, 30 Jun 2005 05:13:41 +0000
parents 84dd837a4445
children 629cbfd1ed6d
files src/account.c
diffstat 1 files changed, 34 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/account.c	Thu Jun 30 04:55:19 2005 +0000
+++ b/src/account.c	Thu Jun 30 05:13:41 2005 +0000
@@ -756,29 +756,37 @@
 }
 
 static void
-request_password_ok_cb(GaimAccount *account, const char *entry)
+request_password_ok_cb(GaimAccount *account, GaimRequestFields *fields)
 {
+	const char *entry;
+	gboolean remember;
+	
+	entry = gaim_request_fields_get_string(fields, "password");
+	remember = gaim_request_fields_get_bool(fields, "remember");
+	
 	if (!entry || !*entry)
 	{
 		gaim_notify_error(account, NULL, _("Password is required to sign on."), NULL);
 		return;
 	}
 
+	if(remember)
+		gaim_account_set_remember_password(account, TRUE);
+
 	if (gaim_account_get_remember_password(account))
 		gaim_account_set_password(account, entry);
 
 	gaim_connection_new(account, FALSE, entry);
 }
 
-/*
- * TODO: Make the entry box a required field, and add a
- *       "save password" checkbox.
- */
 static void
 request_password(GaimAccount *account)
 {
 	gchar *primary;
 	const gchar *username;
+	GaimRequestFieldGroup *group;
+	GaimRequestField *field;
+	GaimRequestFields *fields;
 
 	/* Close any previous password request windows */
 	gaim_request_close_with_handle(account);
@@ -786,10 +794,27 @@
 	username = gaim_account_get_username(account);
 	primary = g_strdup_printf(_("Enter password for %s (%s)"), username,
 								  gaim_account_get_protocol_name(account));
-	gaim_request_input(account, _("Enter Password"), primary, NULL, NULL,
-					   FALSE, TRUE, NULL,
-					   _("OK"), G_CALLBACK(request_password_ok_cb),
-					   _("Cancel"), NULL, account);
+
+	fields = gaim_request_fields_new();
+	group = gaim_request_field_group_new(NULL);
+	gaim_request_fields_add_group(fields, group);
+
+	field = gaim_request_field_string_new("password", _("Enter Password"), NULL, FALSE);
+	gaim_request_field_string_set_masked(field, TRUE);
+	gaim_request_field_set_required(field, TRUE);
+	gaim_request_field_group_add_field(group, field);
+
+	field = gaim_request_field_bool_new("remember", _("Save password"), FALSE);
+	gaim_request_field_group_add_field(group, field);
+
+	gaim_request_fields(account,
+                        NULL,
+                        primary,
+                        NULL,
+                        fields,
+                        _("OK"), G_CALLBACK(request_password_ok_cb),
+                        _("Cancel"), NULL,
+                        account);
 	g_free(primary);
 }