7acb10f
diff -up NetworkManager-vpnc-0.7.0/auth-dialog/gnome-two-password-dialog.c.grouppswd NetworkManager-vpnc-0.7.0/auth-dialog/gnome-two-password-dialog.c
0373c0d
--- NetworkManager-vpnc-0.7.0/auth-dialog/gnome-two-password-dialog.c.grouppswd	2008-09-13 16:47:27.000000000 -0400
0373c0d
+++ NetworkManager-vpnc-0.7.0/auth-dialog/gnome-two-password-dialog.c	2008-10-12 12:25:08.000000000 -0400
0373c0d
@@ -70,6 +70,7 @@ struct GnomeTwoPasswordDialogDetails
7acb10f
 	
7acb10f
 	GtkWidget *remember_session_button;
7acb10f
 	GtkWidget *remember_forever_button;
7acb10f
+	GtkWidget *remember_group_button;
7acb10f
 
7acb10f
 	GtkWidget *radio_vbox;
7acb10f
 	GtkWidget *connect_with_no_userpass_button;
0373c0d
@@ -463,14 +464,18 @@ gnome_two_password_dialog_new (const cha
7acb10f
 	gtk_widget_show_all (GTK_DIALOG (password_dialog)->vbox);
7acb10f
 
7acb10f
 	password_dialog->details->remember_session_button =
7acb10f
-		gtk_check_button_new_with_mnemonic (_("_Remember passwords for this session"));
7acb10f
+		gtk_radio_button_new_with_mnemonic (NULL, _("_Remember passwords for this session"));
7acb10f
 	password_dialog->details->remember_forever_button =
7acb10f
-		gtk_check_button_new_with_mnemonic (_("_Save passwords in keyring"));
7acb10f
+		gtk_radio_button_new_with_mnemonic_from_widget (GTK_RADIO_BUTTON (password_dialog->details->remember_session_button), _("_Save passwords in keyring"));
7acb10f
+	password_dialog->details->remember_group_button =
7acb10f
+		gtk_radio_button_new_with_mnemonic_from_widget (GTK_RADIO_BUTTON (password_dialog->details->remember_session_button), _("S_ave group password in keyring"));
7acb10f
 
7acb10f
 	gtk_box_pack_start (GTK_BOX (vbox), password_dialog->details->remember_session_button, 
7acb10f
 			    FALSE, FALSE, 0);
7acb10f
 	gtk_box_pack_start (GTK_BOX (vbox), password_dialog->details->remember_forever_button, 
7acb10f
 			    FALSE, FALSE, 0);
7acb10f
+	gtk_box_pack_start (GTK_BOX (vbox), password_dialog->details->remember_group_button, 
7acb10f
+			    FALSE, FALSE, 0);
7acb10f
 
7acb10f
 	gnome_two_password_dialog_set_username (password_dialog, username);
7acb10f
 	gnome_two_password_dialog_set_password (password_dialog, password);
0373c0d
@@ -689,9 +694,11 @@ gnome_two_password_dialog_set_show_remem
7acb10f
 	if (show_remember) {
7acb10f
 		gtk_widget_show (password_dialog->details->remember_session_button);
7acb10f
 		gtk_widget_show (password_dialog->details->remember_forever_button);
7acb10f
+		gtk_widget_show (password_dialog->details->remember_group_button);
7acb10f
 	} else {
7acb10f
 		gtk_widget_hide (password_dialog->details->remember_session_button);
7acb10f
 		gtk_widget_hide (password_dialog->details->remember_forever_button);
7acb10f
+		gtk_widget_hide (password_dialog->details->remember_group_button);
7acb10f
 	}
7acb10f
 }
7acb10f
 
0373c0d
@@ -699,32 +706,48 @@ void
7acb10f
 gnome_two_password_dialog_set_remember      (GnomeTwoPasswordDialog         *password_dialog,
7acb10f
 					 GnomeTwoPasswordDialogRemember  remember)
7acb10f
 {
7acb10f
-	gboolean session, forever;
7acb10f
+	gboolean session, forever, group;
7acb10f
 
7acb10f
 	session = FALSE;
7acb10f
 	forever = FALSE;
7acb10f
-	if (remember == GNOME_TWO_PASSWORD_DIALOG_REMEMBER_SESSION) {
7acb10f
+	group = FALSE;
7acb10f
+
7acb10f
+	switch (remember) {
7acb10f
+	case GNOME_TWO_PASSWORD_DIALOG_REMEMBER_SESSION:
7acb10f
 		session = TRUE;
7acb10f
-	} else if (remember == GNOME_TWO_PASSWORD_DIALOG_REMEMBER_FOREVER){
7acb10f
+		break;
7acb10f
+	case GNOME_TWO_PASSWORD_DIALOG_REMEMBER_FOREVER:
7acb10f
 		forever = TRUE;
7acb10f
+		break;
7acb10f
+	case GNOME_TWO_PASSWORD_DIALOG_REMEMBER_GROUP:
7acb10f
+		group = TRUE;
7acb10f
+		break;
622208b
+	default:
622208b
+		break;
7acb10f
 	}
7acb10f
+
7acb10f
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (password_dialog->details->remember_session_button),
7acb10f
 				      session);
7acb10f
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (password_dialog->details->remember_forever_button),
7acb10f
 				      forever);
7acb10f
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (password_dialog->details->remember_group_button),
7acb10f
+				      group);
7acb10f
 }
7acb10f
 
7acb10f
 GnomeTwoPasswordDialogRemember
7acb10f
 gnome_two_password_dialog_get_remember (GnomeTwoPasswordDialog         *password_dialog)
7acb10f
 {
7acb10f
-	gboolean session, forever;
7acb10f
+	gboolean session, forever, group;
7acb10f
 
7acb10f
 	session = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (password_dialog->details->remember_session_button));
7acb10f
 	forever = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (password_dialog->details->remember_forever_button));
7acb10f
+	group = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (password_dialog->details->remember_group_button));
7acb10f
 	if (forever) {
7acb10f
 		return GNOME_TWO_PASSWORD_DIALOG_REMEMBER_FOREVER;
7acb10f
 	} else if (session) {
7acb10f
 		return GNOME_TWO_PASSWORD_DIALOG_REMEMBER_SESSION;
7acb10f
+	} else if (group) {
7acb10f
+		return GNOME_TWO_PASSWORD_DIALOG_REMEMBER_GROUP;
7acb10f
 	}
7acb10f
 	return GNOME_TWO_PASSWORD_DIALOG_REMEMBER_NOTHING;
7acb10f
 }
7acb10f
diff -up NetworkManager-vpnc-0.7.0/auth-dialog/gnome-two-password-dialog.h.grouppswd NetworkManager-vpnc-0.7.0/auth-dialog/gnome-two-password-dialog.h
0373c0d
--- NetworkManager-vpnc-0.7.0/auth-dialog/gnome-two-password-dialog.h.grouppswd	2008-09-13 16:47:27.000000000 -0400
0373c0d
+++ NetworkManager-vpnc-0.7.0/auth-dialog/gnome-two-password-dialog.h	2008-10-12 12:25:08.000000000 -0400
7acb10f
@@ -57,6 +57,7 @@ struct GnomeTwoPasswordDialogClass
7acb10f
 typedef enum {
7acb10f
 	GNOME_TWO_PASSWORD_DIALOG_REMEMBER_NOTHING,
7acb10f
 	GNOME_TWO_PASSWORD_DIALOG_REMEMBER_SESSION,
7acb10f
+	GNOME_TWO_PASSWORD_DIALOG_REMEMBER_GROUP,
7acb10f
 	GNOME_TWO_PASSWORD_DIALOG_REMEMBER_FOREVER
7acb10f
 } GnomeTwoPasswordDialogRemember;
7acb10f
 
7acb10f
diff -up NetworkManager-vpnc-0.7.0/auth-dialog/main.c.grouppswd NetworkManager-vpnc-0.7.0/auth-dialog/main.c
0373c0d
--- NetworkManager-vpnc-0.7.0/auth-dialog/main.c.grouppswd	2008-09-13 16:47:27.000000000 -0400
0373c0d
+++ NetworkManager-vpnc-0.7.0/auth-dialog/main.c	2008-10-12 12:31:57.000000000 -0400
0373c0d
@@ -74,9 +74,11 @@ get_secrets (const char *vpn_uuid,
622208b
 	gnome_two_password_dialog_set_password_secondary_label (dialog, _("_Group Password:"));
622208b
 
622208b
 	/* If nothing was found in the keyring, default to not remembering any secrets */
622208b
-	if (found) {
622208b
+	if (found || *group_password) {
622208b
 		/* Otherwise set default remember based on which keyring the secrets were found in */
622208b
-		if (is_session)
622208b
+		if (!*password && *group_password)
622208b
+			gnome_two_password_dialog_set_remember (dialog, GNOME_TWO_PASSWORD_DIALOG_REMEMBER_GROUP);
622208b
+		else if (is_session)
622208b
 			gnome_two_password_dialog_set_remember (dialog, GNOME_TWO_PASSWORD_DIALOG_REMEMBER_SESSION);
622208b
 		else
622208b
 			gnome_two_password_dialog_set_remember (dialog, GNOME_TWO_PASSWORD_DIALOG_REMEMBER_FOREVER);
0373c0d
@@ -97,8 +99,8 @@ get_secrets (const char *vpn_uuid,
0373c0d
 
0373c0d
 	gtk_widget_show (GTK_WIDGET (dialog));
0373c0d
 
0373c0d
-	if (gnome_two_password_dialog_run_and_block (dialog)) {
0373c0d
 		*password = gnome_two_password_dialog_get_password (dialog);
0373c0d
+	if (gnome_two_password_dialog_run_and_block (dialog)) {
0373c0d
 		*group_password = gnome_two_password_dialog_get_password_secondary (dialog);
0373c0d
 
0373c0d
 		switch (gnome_two_password_dialog_get_remember (dialog)) {
0373c0d
@@ -110,6 +112,9 @@ get_secrets (const char *vpn_uuid,
0373c0d
 			keyring_helpers_save_secret (vpn_uuid, vpn_name, NULL, VPNC_USER_PASSWORD, *password);
0373c0d
 			keyring_helpers_save_secret (vpn_uuid, vpn_name, NULL, VPNC_GROUP_PASSWORD, *group_password);
622208b
 			break;
622208b
+		case GNOME_TWO_PASSWORD_DIALOG_REMEMBER_GROUP:
0373c0d
+			keyring_helpers_save_secret (vpn_uuid, vpn_name, NULL, VPNC_GROUP_PASSWORD, *group_password);
622208b
+			break;
622208b
 		default:
622208b
 			break;
622208b
 		}
0373c0d
@@ -119,7 +124,7 @@ get_secrets (const char *vpn_uuid,
0373c0d
 	gtk_widget_hide (GTK_WIDGET (dialog));
0373c0d
 	gtk_widget_destroy (GTK_WIDGET (dialog));
0373c0d
 
0373c0d
-	return TRUE;
0373c0d
+	return (*password && *group_password);
0373c0d
 }
0373c0d
 
0373c0d
 int 
0373c0d
diff -up NetworkManager-vpnc-0.7.0/common-gnome/keyring-helpers.c.grouppswd NetworkManager-vpnc-0.7.0/common-gnome/keyring-helpers.c
0373c0d
--- NetworkManager-vpnc-0.7.0/common-gnome/keyring-helpers.c.grouppswd	2008-10-12 12:30:24.000000000 -0400
0373c0d
+++ NetworkManager-vpnc-0.7.0/common-gnome/keyring-helpers.c	2008-10-12 12:30:53.000000000 -0400
0373c0d
@@ -84,8 +84,6 @@ keyring_helpers_lookup_secrets (const ch
0373c0d
 	g_return_val_if_fail (*group_password == NULL, FALSE);
0373c0d
 
0373c0d
 	*password = find_one_password (vpn_uuid, VPNC_USER_PASSWORD, is_session);
0373c0d
-	if (!*password)
0373c0d
-		return FALSE;
0373c0d
 
0373c0d
 	*group_password = find_one_password (vpn_uuid, VPNC_GROUP_PASSWORD, is_session);
0373c0d
 	if (!*group_password) {
0373c0d
@@ -95,7 +93,7 @@ keyring_helpers_lookup_secrets (const ch
0373c0d
 		return FALSE;
0373c0d
 	}
0373c0d
 
0373c0d
-	return TRUE;
0373c0d
+	return (*password && *group_password);
0373c0d
 }
0373c0d
 
0373c0d
 GnomeKeyringResult