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