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