aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mail/ChangeLog51
-rw-r--r--mail/mail-accounts.c11
-rw-r--r--mail/mail-accounts.h7
-rw-r--r--mail/mail-config.c105
-rw-r--r--mail/mail-config.glade14
-rw-r--r--mail/mail-config.h3
-rw-r--r--mail/mail-crypto.c12
7 files changed, 136 insertions, 67 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index 68d75e100e..17dab48fb2 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,17 +1,35 @@
+2001-07-09 Jeffrey Stedfast <fejj@ximian.com>
+
+ * mail-crypto.c (mail_crypto_pgp_mime_part_sign): Update to pass
+ in the `remember' argument when creating a new pgp context.
+ (mail_crypto_pgp_mime_part_verify): Same.
+ (mail_crypto_pgp_mime_part_encrypt): And here...
+ (mail_crypto_pgp_mime_part_decrypt): And finally here.
+
+ * mail-config.c (mail_config_get_remember_pgp_passphrase): New.
+ (mail_config_set_remember_pgp_passphrase): New.
+ (config_read): Read in the "remember passphrase" value.
+ (mail_config_write_on_exit): Save the remember-passphrase value.
+
+ * mail-accounts.c (construct): Allow the user to set "Remember PGP
+ Passphrase".
+ (remember_pgp_passphrase_toggled): Set the toggle state.
+
2001-07-09 Peter Williams <peterw@ximian.com>
- * mail-ops.c (get_folderinfo_got): Check for an exception and print it.
- Call done anyway.
+ * mail-ops.c (get_folderinfo_got): Check for an exception and
+ print it. Call done anyway.
(do_update_subfolders): Check for NULL info.
2001-07-09 Peter Williams <peterw@ximian.com>
- * mail-config.c (mail_config_write): Some NULL protection for our strings:
- pgp_key, html_signature, smime_key. Probably we should do this for all
- strings. Either that or change Bonobo Config.
+ * mail-config.c (mail_config_write): Some NULL protection for our
+ strings: pgp_key, html_signature, smime_key. Probably we should do
+ this for all strings. Either that or change Bonobo Config.
- * message-list.c (message_list_init): Explicitly initialize search to NULL.
- Bug 3951 might to be due to a problem wrt this, and it can't hurt.
+ * message-list.c (message_list_init): Explicitly initialize search
+ to NULL. Bug 3951 might to be due to a problem wrt this, and it
+ can't hurt.
2001-07-09 Dan Winship <danw@ximian.com>
@@ -32,24 +50,25 @@
2001-07-09 Peter Williams <peterw@ximian.com>
- * mail-config.c (mail_config_write): Change html_signature stuff over
- to bonobo-config -- someone forgot to do this.
+ * mail-config.c (mail_config_write): Change html_signature stuff
+ over to bonobo-config -- someone forgot to do this.
- * mail-folder-cache.c (dm): Gave up and got rid of dm. Just replaced it
- with d(g_message()) and set G_LOG_DOMAIN.
+ * mail-folder-cache.c (dm): Gave up and got rid of dm. Just
+ replaced it with d(g_message()) and set G_LOG_DOMAIN.
2001-07-09 Peter Williams <peterw@ximian.com>
- * mail-folder-cache.c (mail_folder_cache_set_update_shellview): Deleted
+ * mail-folder-cache.c (mail_folder_cache_set_update_shellview):
+ Deleted
(as opposed to #if 0)
(get_folder_info): Changed to assume it has the folder lock.
(make_folder_name): Same.
(make_folder_status): Same.
(update_idle): Don't unlock around the make_folder_ functions.
- (*): Changed behavior wrt. get_folder_info. Lock before calling, but
- also move preconditions before -- get_folder_info can only return NULL
- if uri is NULL. Also add preconditions for other arguments where
- necessary.
+ (*): Changed behavior wrt. get_folder_info. Lock before calling,
+ but also move preconditions before -- get_folder_info can only
+ return NULL if uri is NULL. Also add preconditions for other
+ arguments where necessary.
2001-07-07 Christopher James Lahey <clahey@ximian.com>
diff --git a/mail/mail-accounts.c b/mail/mail-accounts.c
index edb147f49d..e4e02fe61d 100644
--- a/mail/mail-accounts.c
+++ b/mail/mail-accounts.c
@@ -648,6 +648,12 @@ empty_trash_toggled (GtkWidget *toggle, gpointer data)
}
static void
+remember_pgp_passphrase_toggled (GtkWidget *toggle, gpointer data)
+{
+ mail_config_set_remember_pgp_passphrase (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (toggle)));
+}
+
+static void
prompt_empty_subject_toggled (GtkWidget *toggle, gpointer data)
{
mail_config_set_prompt_empty_subject (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (toggle)));
@@ -797,6 +803,11 @@ construct (MailAccountsDialog *dialog)
gtk_signal_connect (GTK_OBJECT (gnome_file_entry_gtk_entry (dialog->pgp_path)),
"changed", GTK_SIGNAL_FUNC (pgp_path_changed), dialog);
+ dialog->remember_passwd = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "chkRememberPGPPassphrase"));
+ gtk_toggle_button_set_active (dialog->remember_passwd, mail_config_get_remember_pgp_passphrase ());
+ gtk_signal_connect (GTK_OBJECT (dialog->remember_passwd), "toggled",
+ GTK_SIGNAL_FUNC (remember_pgp_passphrase_toggled), dialog);
+
dialog->charset = GTK_OPTION_MENU (glade_xml_get_widget (gui, "omenuCharset"));
menu = e_charset_picker_new (mail_config_get_default_charset ());
gtk_option_menu_set_menu (dialog->charset, menu);
diff --git a/mail/mail-accounts.h b/mail/mail-accounts.h
index f0ece925d9..765ab399ec 100644
--- a/mail/mail-accounts.h
+++ b/mail/mail-accounts.h
@@ -54,7 +54,7 @@ struct _MailAccountsDialog {
const GSList *accounts;
gint accounts_row;
-
+
/* Accounts page */
GtkCList *mail_accounts;
GtkButton *mail_add;
@@ -65,7 +65,7 @@ struct _MailAccountsDialog {
const GSList *news;
gint news_row;
-
+
/* News page */
GtkCList *news_accounts;
GtkButton *news_add;
@@ -77,7 +77,7 @@ struct _MailAccountsDialog {
GnomeColorPicker *citation_color;
GtkSpinButton *timeout;
GtkToggleButton *images_always, *images_sometimes, *images_never;
-
+
/* Composer page */
GtkToggleButton *send_html;
GtkOptionMenu *forward_style;
@@ -89,6 +89,7 @@ struct _MailAccountsDialog {
/* PGP page */
GnomeFileEntry *pgp_path;
+ GtkToggleButton *remember_passwd;
};
typedef struct _MailAccountsDialog MailAccountsDialog;
diff --git a/mail/mail-config.c b/mail/mail-config.c
index de98723925..67eee583a9 100644
--- a/mail/mail-config.c
+++ b/mail/mail-config.c
@@ -73,6 +73,7 @@ typedef struct {
char *pgp_path;
CamelPgpType pgp_type;
+ gboolean remember_pgp_passphrase;
MailConfigHTTPMode http_mode;
MailConfigForwardStyle default_forward_style;
@@ -510,10 +511,13 @@ config_read (void)
/* PGP/GPG */
config->pgp_path = bonobo_config_get_string (config->db,
"/Mail/PGP/path", NULL);
-
+
config->pgp_type = bonobo_config_get_long_with_default (config->db,
"/Mail/PGP/type", CAMEL_PGP_TYPE_NONE, NULL);
-
+
+ config->remember_pgp_passphrase = bonobo_config_get_boolean_with_default (
+ config->db, "/Mail/PGP/remember_passphrase", TRUE, NULL);
+
/* HTTP images */
config->http_mode = bonobo_config_get_long_with_default (config->db,
"/Mail/Display/http_images", MAIL_CONFIG_HTTP_SOMETIMES, NULL);
@@ -527,11 +531,11 @@ config_read (void)
config->message_display_style = bonobo_config_get_long_with_default (
config->db, "/Mail/Format/message_display_style",
MAIL_CONFIG_DISPLAY_NORMAL, NULL);
-
+
/* Default charset */
config->default_charset = bonobo_config_get_string (config->db,
"/Mail/Format/default_charset", NULL);
-
+
if (!config->default_charset) {
g_get_charset (&config->default_charset);
if (!config->default_charset ||
@@ -540,7 +544,7 @@ config_read (void)
else
config->default_charset = g_strdup (config->default_charset);
}
-
+
/* Trash folders */
config->empty_trash_on_exit = bonobo_config_get_boolean_with_default (
config->db, "/Mail/Trash/empty_on_exit", FALSE, NULL);
@@ -553,10 +557,10 @@ mail_config_write (void)
gint len, i, default_num;
/* Accounts */
-
+
if (!config)
return;
-
+
CORBA_exception_init (&ev);
Bonobo_ConfigDatabase_removeDir (config->db, "/Mail/Accounts", &ev);
CORBA_exception_init (&ev);
@@ -567,11 +571,11 @@ mail_config_write (void)
len = g_slist_length (config->accounts);
bonobo_config_set_long (config->db,
"/Mail/Accounts/num", len, NULL);
-
+
default_num = mail_config_get_default_account_num ();
bonobo_config_set_long (config->db,
"/Mail/Accounts/default_account", default_num, NULL);
-
+
for (i = 0; i < len; i++) {
MailConfigAccount *account;
gchar *path;
@@ -582,22 +586,22 @@ mail_config_write (void)
path = g_strdup_printf ("/Mail/Accounts/account_name_%d", i);
bonobo_config_set_string (config->db, path, account->name, NULL);
g_free (path);
-
+
path = g_strdup_printf ("/Mail/Accounts/account_drafts_folder_name_%d", i);
bonobo_config_set_string (config->db, path,
account->drafts_folder_name, NULL);
g_free (path);
-
+
path = g_strdup_printf ("/Mail/Accounts/account_drafts_folder_uri_%d", i);
bonobo_config_set_string (config->db, path,
account->drafts_folder_uri, NULL);
g_free (path);
-
+
path = g_strdup_printf ("/Mail/Accounts/account_sent_folder_name_%d", i);
bonobo_config_set_string (config->db, path,
account->sent_folder_name, NULL);
g_free (path);
-
+
path = g_strdup_printf ("/Mail/Accounts/account_sent_folder_uri_%d", i);
bonobo_config_set_string (config->db, path,
account->sent_folder_uri, NULL);
@@ -610,7 +614,7 @@ mail_config_write (void)
else
bonobo_config_set_string (config->db, path, "", NULL);
g_free (path);
-
+
path = g_strdup_printf ("/Mail/Accounts/account_pgp_encrypt_to_self_%d", i);
bonobo_config_set_boolean (config->db, path,
account->pgp_encrypt_to_self, NULL);
@@ -625,7 +629,7 @@ mail_config_write (void)
bonobo_config_set_string (config->db, path,
"", NULL);
g_free (path);
-
+
path = g_strdup_printf ("/Mail/Accounts/account_smime_encrypt_to_self_%d", i);
bonobo_config_set_boolean (config->db, path,
account->smime_encrypt_to_self,
@@ -637,17 +641,17 @@ mail_config_write (void)
bonobo_config_set_string (config->db, path, account->id->name,
NULL);
g_free (path);
-
+
path = g_strdup_printf ("/Mail/Accounts/identity_address_%d", i);
bonobo_config_set_string (config->db, path,
account->id->address, NULL);
g_free (path);
-
+
path = g_strdup_printf ("/Mail/Accounts/identity_organization_%d", i);
bonobo_config_set_string (config->db, path,
account->id->organization, NULL);
g_free (path);
-
+
path = g_strdup_printf ("/Mail/Accounts/identity_signature_%d", i);
bonobo_config_set_string (config->db, path,
account->id->signature, NULL);
@@ -668,29 +672,29 @@ mail_config_write (void)
account->source->url ? account->source->url : "",
NULL);
g_free (path);
-
+
path = g_strdup_printf ("/Mail/Accounts/source_keep_on_server_%d", i);
bonobo_config_set_boolean (config->db, path,
account->source->keep_on_server,
NULL);
g_free (path);
-
+
path = g_strdup_printf ("/Mail/Accounts/source_auto_check_%d", i);
bonobo_config_set_boolean (config->db, path,
account->source->auto_check, NULL);
g_free (path);
-
+
path = g_strdup_printf ("/Mail/Accounts/source_auto_check_time_%d", i);
bonobo_config_set_long (config->db, path,
account->source->auto_check_time,
NULL);
g_free (path);
-
+
path = g_strdup_printf ("/Mail/Accounts/source_enabled_%d", i);
bonobo_config_set_boolean (config->db, path,
account->source->enabled, NULL);
g_free (path);
-
+
path = g_strdup_printf ("/Mail/Accounts/source_save_passwd_%d", i);
bonobo_config_set_boolean (config->db, path,
account->source->save_passwd, NULL);
@@ -712,7 +716,7 @@ mail_config_write (void)
#ifdef ENABLE_NNTP
/* News */
-
+
len = g_slist_length (config->news);
bonobo_config_set_long (config->db, "/News/Sources/num", len, NULL);
for (i = 0; i < len; i++) {
@@ -725,7 +729,7 @@ mail_config_write (void)
bonobo_config_set_string (config->db, path, n->url, NULL);
g_free (path);
}
-
+
#endif
CORBA_exception_init (&ev);
@@ -762,7 +766,7 @@ mail_config_write_on_exit (void)
/* Show Message Preview */
bonobo_config_set_boolean (config->db, "/Mail/Display/preview_pane",
config->show_preview, NULL);
-
+
/* Hide deleted automatically */
bonobo_config_set_boolean (config->db, "Mail/Display/hide_deleted",
config->hide_deleted, NULL);
@@ -770,7 +774,7 @@ mail_config_write_on_exit (void)
/* Size of vpaned in mail view */
bonobo_config_set_long (config->db, "Mail/Display/paned_size",
config->paned_size, NULL);
-
+
/* Mark as seen timeout */
bonobo_config_set_long (config->db, "/Mail/Display/seen_timeout",
config->seen_timeout, NULL);
@@ -783,7 +787,7 @@ mail_config_write_on_exit (void)
bonobo_config_set_boolean (config->db,
"/Mail/Display/citation_highlight",
config->citation_highlight, NULL);
-
+
bonobo_config_set_long (config->db, "/Mail/Display/citation_color",
config->citation_color, NULL);
@@ -794,18 +798,21 @@ mail_config_write_on_exit (void)
/* Only Bcc */
bonobo_config_set_boolean (config->db, "/Mail/Prompts/only_bcc",
config->prompt_only_bcc, NULL);
-
+
/* PGP/GPG */
bonobo_config_set_string (config->db, "/Mail/PGP/path",
config->pgp_path, NULL);
-
+
bonobo_config_set_long (config->db, "/Mail/PGP/type",
config->pgp_type, NULL);
+ bonobo_config_set_boolean (config->db, "/Mail/Prompts/remember_passphrase",
+ config->remember_pgp_passphrase, NULL);
+
/* HTTP images */
bonobo_config_set_long (config->db, "/Mail/Display/http_images",
config->http_mode, NULL);
-
+
/* Forwarding */
bonobo_config_set_long (config->db,
"/Mail/Format/default_forward_style",
@@ -815,7 +822,7 @@ mail_config_write_on_exit (void)
bonobo_config_set_long (config->db,
"/Mail/Format/message_display_style",
config->message_display_style, NULL);
-
+
/* Default charset */
bonobo_config_set_string (config->db, "/Mail/Format/default_charset",
config->default_charset, NULL);
@@ -823,18 +830,17 @@ mail_config_write_on_exit (void)
/* Trash folders */
bonobo_config_set_boolean (config->db, "/Mail/Trash/empty_on_exit",
config->empty_trash_on_exit, NULL);
-
-
+
g_hash_table_foreach_remove (config->threaded_hash,
hash_save_state, "Threads");
-
+
g_hash_table_foreach_remove (config->preview_hash,
hash_save_state, "Preview");
-
+
CORBA_exception_init (&ev);
Bonobo_ConfigDatabase_sync (config->db, &ev);
CORBA_exception_free (&ev);
-
+
/* Passwords */
/* fixme: still depends on gnome-config */
gnome_config_private_clean_section ("/Evolution/Passwords");
@@ -863,20 +869,19 @@ uri_to_key (const char *uri)
{
char *rval;
int i = 0;
-
+
if (!uri)
return NULL;
-
+
rval = g_strdup (uri);
-
- while (rval [i]) {
-
+
+ while (rval [i]) {
if (rval [i] == '/' || rval [i] == ':')
rval [i] = '_';
-
+
i++;
}
-
+
return rval;
}
@@ -1202,6 +1207,18 @@ mail_config_set_pgp_path (const char *pgp_path)
config->pgp_path = g_strdup (pgp_path);
}
+gboolean
+mail_config_get_remember_pgp_passphrase (void)
+{
+ return config->remember_pgp_passphrase;
+}
+
+void
+mail_config_set_remember_pgp_passphrase (gboolean value)
+{
+ config->remember_pgp_passphrase = value;
+}
+
MailConfigHTTPMode
mail_config_get_http_mode (void)
{
diff --git a/mail/mail-config.glade b/mail/mail-config.glade
index 3fcc2bba07..f0590975ef 100644
--- a/mail/mail-config.glade
+++ b/mail/mail-config.glade
@@ -2712,6 +2712,20 @@ Quoted
</widget>
<widget>
+ <class>GtkCheckButton</class>
+ <name>chkPGPRemeberPassphrase</name>
+ <can_focus>True</can_focus>
+ <label>Remember PGP Passphrase until exit</label>
+ <active>True</active>
+ <draw_indicator>True</draw_indicator>
+ <child>
+ <padding>0</padding>
+ <expand>False</expand>
+ <fill>False</fill>
+ </child>
+ </widget>
+
+ <widget>
<class>GtkHBox</class>
<name>hbox56</name>
<homogeneous>False</homogeneous>
diff --git a/mail/mail-config.h b/mail/mail-config.h
index 4a3167f6b9..0d012ec046 100644
--- a/mail/mail-config.h
+++ b/mail/mail-config.h
@@ -145,6 +145,9 @@ void mail_config_set_pgp_type (CamelPgpType pgp_type);
const char *mail_config_get_pgp_path (void);
void mail_config_set_pgp_path (const char *pgp_path);
+gboolean mail_config_get_remember_pgp_passphrase (void);
+void mail_config_set_remember_pgp_passphrase (gboolean value);
+
MailConfigHTTPMode mail_config_get_http_mode (void);
void mail_config_set_http_mode (MailConfigHTTPMode);
diff --git a/mail/mail-crypto.c b/mail/mail-crypto.c
index bad81e5539..f7e003f07c 100644
--- a/mail/mail-crypto.c
+++ b/mail/mail-crypto.c
@@ -49,7 +49,8 @@ mail_crypto_pgp_mime_part_sign (CamelMimePart **mime_part, const char *userid, C
CamelPgpContext *context;
context = camel_pgp_context_new (session, mail_config_get_pgp_type (),
- mail_config_get_pgp_path ());
+ mail_config_get_pgp_path (),
+ mail_config_get_pgp_remember_pgp_passphrase ());
if (context) {
camel_pgp_mime_part_sign (context, mime_part, userid, hash, ex);
@@ -74,7 +75,8 @@ mail_crypto_pgp_mime_part_verify (CamelMimePart *mime_part, CamelException *ex)
CamelPgpContext *context;
context = camel_pgp_context_new (session, mail_config_get_pgp_type (),
- mail_config_get_pgp_path ());
+ mail_config_get_pgp_path (),
+ mail_config_get_pgp_remember_pgp_passphrase ());
if (context) {
valid = camel_pgp_mime_part_verify (context, mime_part, ex);
@@ -103,7 +105,8 @@ mail_crypto_pgp_mime_part_encrypt (CamelMimePart **mime_part, GPtrArray *recipie
CamelPgpContext *context;
context = camel_pgp_context_new (session, mail_config_get_pgp_type (),
- mail_config_get_pgp_path ());
+ mail_config_get_pgp_path (),
+ mail_config_get_pgp_remember_pgp_passphrase ());
if (context) {
camel_pgp_mime_part_encrypt (context, mime_part, recipients, ex);
@@ -128,7 +131,8 @@ mail_crypto_pgp_mime_part_decrypt (CamelMimePart *mime_part, CamelException *ex)
CamelMimePart *part = NULL;
context = camel_pgp_context_new (session, mail_config_get_pgp_type (),
- mail_config_get_pgp_path ());
+ mail_config_get_pgp_path (),
+ mail_config_get_pgp_remember_pgp_passphrase ());
if (context) {
part = camel_pgp_mime_part_decrypt (context, mime_part, ex);