GtkWidget *pass_label;
GtkWidget *uid_entry;
GtkWidget *pass_entry;
+ GtkWidget *showpwd_checkbtn;
GtkWidget *auto_configure_btn;
GtkWidget *auto_configure_cancel_btn;
GtkWidget *auto_configure_lbl;
gpointer user_data);
static void prefs_account_mailcmd_toggled(GtkToggleButton *button,
gpointer user_data);
+static void prefs_account_showpwd_checkbtn_toggled(GtkToggleButton *button,
+ gpointer user_data);
static void prefs_account_filter_on_recv_toggled(GtkToggleButton *button,
gpointer user_data);
COMBOBOX_SENS, TRUE,
COMBOBOX_PRIVACY_PLUGIN_ID, id,
-1);
+ g_free(id);
}
+ g_slist_free(system_ids);
+
}
#define TABLE_YPAD 2
GtkWidget *auto_configure_btn;
GtkWidget *auto_configure_cancel_btn;
GtkWidget *auto_configure_lbl;
+ GtkWidget *showpwd_checkbtn;
GtkListStore *menu;
GtkTreeIter iter;
gchar *buf;
protocol_optmenu->no_imap_warn_icon = no_imap_warn_icon;
protocol_optmenu->no_imap_warn_label = no_imap_warn_label;
- serv_table = gtk_table_new (6, 4, FALSE);
+ serv_table = gtk_table_new (10, 4, FALSE);
gtk_widget_show (serv_table);
gtk_box_pack_start (GTK_BOX (vbox2), serv_table, FALSE, FALSE, 0);
gtk_table_set_row_spacings (GTK_TABLE (serv_table), VSPACING_NARROW);
gtk_table_attach (GTK_TABLE (serv_table), pass_label, 0, 1, 8, 9,
GTK_FILL, 0, 0, 0);
#endif
+
+ showpwd_checkbtn = gtk_check_button_new_with_label (_("Show password"));
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(showpwd_checkbtn), FALSE);
+ gtk_widget_show(showpwd_checkbtn);
+ gtk_table_attach (GTK_TABLE (serv_table), showpwd_checkbtn, 3, 4, 9, 10,
+ GTK_FILL, 0, 0, 0);
+ g_signal_connect(G_OBJECT(showpwd_checkbtn), "toggled",
+ G_CALLBACK(prefs_account_showpwd_checkbtn_toggled), pass_entry);
+
SET_TOGGLE_SENSITIVITY (nntpauth_checkbtn, uid_label);
SET_TOGGLE_SENSITIVITY (nntpauth_checkbtn, pass_label);
SET_TOGGLE_SENSITIVITY (nntpauth_checkbtn, uid_entry);
SET_TOGGLE_SENSITIVITY (nntpauth_checkbtn, pass_entry);
+ SET_TOGGLE_SENSITIVITY (nntpauth_checkbtn, showpwd_checkbtn);
SET_TOGGLE_SENSITIVITY (nntpauth_checkbtn, nntpauth_onconnect_checkbtn);
page->acname_entry = acname_entry;
page->pass_label = pass_label;
page->uid_entry = uid_entry;
page->pass_entry = pass_entry;
+ page->showpwd_checkbtn = showpwd_checkbtn;
page->auto_configure_btn = auto_configure_btn;
page->auto_configure_cancel_btn = auto_configure_cancel_btn;
page->auto_configure_lbl = auto_configure_lbl;
GtkWidget *checkbtn_msgid_with_addr;
GtkWidget *vbox3;
GtkWidget *smtp_auth_checkbtn;
+ GtkWidget *showpwd_checkbtn;
GtkWidget *optmenu;
GtkListStore *menu;
GtkTreeIter iter;
gtk_widget_show (smtp_pass_entry);
gtk_widget_set_size_request (smtp_pass_entry, DEFAULT_ENTRY_WIDTH, -1);
gtk_box_pack_start (GTK_BOX (hbox), smtp_pass_entry, TRUE, TRUE, 0);
-
gtk_entry_set_visibility (GTK_ENTRY (smtp_pass_entry), FALSE);
+
+ showpwd_checkbtn = gtk_check_button_new_with_label (_("Show password"));
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(showpwd_checkbtn), FALSE);
+ gtk_widget_show(showpwd_checkbtn);
+ gtk_box_pack_start(GTK_BOX (hbox), showpwd_checkbtn, FALSE, FALSE, 0);
+ g_signal_connect(G_OBJECT(showpwd_checkbtn), "toggled",
+ G_CALLBACK(prefs_account_showpwd_checkbtn_toggled), smtp_pass_entry);
+
PACK_VSPACER(vbox4, vbox_spc, VSPACING_NARROW_2);
hbox = gtk_hbox_new (FALSE, 8);
GtkWidget *cert_table;
GtkWidget *entry_in_cert_pass;
GtkWidget *entry_out_cert_pass;
+ GtkWidget *showpwd_checkbtn;
GtkWidget *vbox7;
GtkWidget *ssl_certs_auto_accept_checkbtn;
gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
entry_in_cert_pass = gtk_entry_new();
gtk_entry_set_visibility(GTK_ENTRY(entry_in_cert_pass), FALSE);
+ showpwd_checkbtn = gtk_check_button_new_with_label (_("Show password"));
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(showpwd_checkbtn), FALSE);
+ g_signal_connect(G_OBJECT(showpwd_checkbtn), "toggled",
+ G_CALLBACK(prefs_account_showpwd_checkbtn_toggled), entry_in_cert_pass);
gtk_table_attach(GTK_TABLE(cert_table), label, 0, 1, 1, 2, GTK_FILL, 0, 0, 0);
gtk_table_attach(GTK_TABLE(cert_table), entry_in_cert_pass, 1, 2, 1, 2,
GTK_FILL, 0, 0, 0);
+ gtk_table_attach(GTK_TABLE(cert_table), showpwd_checkbtn, 2, 3, 1, 2,
+ GTK_FILL, 0, 0, 0);
label = gtk_label_new(_("Certificate for sending"));
gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
entry_out_cert_pass = gtk_entry_new();
gtk_entry_set_visibility(GTK_ENTRY(entry_out_cert_pass), FALSE);
+ showpwd_checkbtn = gtk_check_button_new_with_label (_("Show password"));
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(showpwd_checkbtn), FALSE);
+ g_signal_connect(G_OBJECT(showpwd_checkbtn), "toggled",
+ G_CALLBACK(prefs_account_showpwd_checkbtn_toggled), entry_out_cert_pass);
gtk_table_attach(GTK_TABLE(cert_table), label, 0, 1, 3, 4, GTK_FILL, 0, 0, 0);
gtk_table_attach(GTK_TABLE(cert_table), entry_out_cert_pass, 1, 2, 3, 4,
GTK_FILL, 0, 0, 0);
+ gtk_table_attach(GTK_TABLE(cert_table), showpwd_checkbtn, 2, 3, 3, 4,
+ GTK_FILL, 0, 0, 0);
+
gtk_widget_show_all(cert_table);
g_signal_connect(G_OBJECT(in_ssl_cert_browse_button), "clicked",
return ac_prefs;
}
-void prefs_account_read_config(PrefsAccount *ac_prefs, const gchar *label)
+PrefsAccount *prefs_account_new_from_config(const gchar *label)
{
const gchar *p = label;
gchar *rcpath;
gint id;
gchar **strv, **cur;
gsize len;
+ PrefsAccount *ac_prefs;
- cm_return_if_fail(ac_prefs != NULL);
- cm_return_if_fail(label != NULL);
+ cm_return_val_if_fail(label != NULL, NULL);
+
+ ac_prefs = g_new0(PrefsAccount, 1);
+ /* Load default values to tmp_ac_prefs first, ... */
memset(&tmp_ac_prefs, 0, sizeof(PrefsAccount));
- tmp_ac_prefs.privacy_prefs = ac_prefs->privacy_prefs;
+ prefs_set_default(basic_param);
+ prefs_set_default(receive_param);
+ prefs_set_default(send_param);
+ prefs_set_default(compose_param);
+ prefs_set_default(templates_param);
+ prefs_set_default(privacy_param);
+ prefs_set_default(ssl_param);
+ prefs_set_default(advanced_param);
+ /* ... overriding them with values from stored config file. */
rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, ACCOUNT_RC, NULL);
prefs_read_config(basic_param, label, rcpath, NULL);
prefs_read_config(receive_param, label, rcpath, NULL);
g_free(rcpath);
*ac_prefs = tmp_ac_prefs;
+
while (*p && !g_ascii_isdigit(*p)) p++;
id = atoi(p);
if (id < 0) g_warning("wrong account id: %d", id);
ac_prefs->account_id = id;
+ /* Now parse privacy_prefs. */
+ ac_prefs->privacy_prefs = g_hash_table_new(g_str_hash, g_str_equal);
if (privacy_prefs != NULL) {
strv = g_strsplit(privacy_prefs, ",", 0);
for (cur = strv; *cur != NULL; cur++) {
privacy_prefs = NULL;
}
+ /* For older configurations, move stored passwords into the
+ * password store. */
gboolean passwords_migrated = FALSE;
if (ac_prefs->passwd != NULL && strlen(ac_prefs->passwd) > 1) {
passwords_migrated = TRUE;
}
- /* Write out password store to file immediately after their move
- * from accountrc there. */
+ /* Write out password store to file immediately, to prevent
+ * their loss. */
if (passwords_migrated)
passwd_store_write_config();
ac_prefs->receive_in_progress = FALSE;
prefs_custom_header_read_config(ac_prefs);
+
+ return ac_prefs;
}
static void create_privacy_prefs(gpointer key, gpointer _value, gpointer user_data)
FolderItem *item;
gchar *id;
- item = foldersel_folder_sel(NULL, FOLDER_SEL_COPY, NULL, FALSE);
+ item = foldersel_folder_sel(NULL, FOLDER_SEL_COPY, NULL, FALSE, NULL);
if (item && item->path) {
id = folder_item_get_identifier(item);
if (id) {
send_data->set_port = GTK_TOGGLE_BUTTON(advanced_page.smtpport_checkbtn);
send_data->port = GTK_SPIN_BUTTON(advanced_page.smtpport_spinbtn);
send_data->tls_checkbtn = GTK_TOGGLE_BUTTON(ssl_page.smtp_starttls_radiobtn);
- send_data->ssl_checkbtn = NULL;
+ send_data->ssl_checkbtn = GTK_TOGGLE_BUTTON(ssl_page.smtp_ssltunnel_radiobtn);
send_data->default_port = 25;
send_data->default_ssl_port = -1;
send_data->uid_entry = NULL;
gtk_widget_show(basic_page.pass_label);
gtk_widget_show(basic_page.uid_entry);
gtk_widget_show(basic_page.pass_entry);
+ gtk_widget_show(basic_page.showpwd_checkbtn);
gtk_table_set_row_spacing (GTK_TABLE (basic_page.serv_table),
7, VSPACING_NARROW);
gtk_widget_set_sensitive(basic_page.pass_label, TRUE);
gtk_widget_set_sensitive(basic_page.uid_entry, TRUE);
gtk_widget_set_sensitive(basic_page.pass_entry, TRUE);
+ gtk_widget_set_sensitive(basic_page.showpwd_checkbtn, TRUE);
/* update userid/passwd sensitive state */
gtk_widget_hide(basic_page.pass_label);
gtk_widget_hide(basic_page.uid_entry);
gtk_widget_hide(basic_page.pass_entry);
+ gtk_widget_hide(basic_page.showpwd_checkbtn);
gtk_table_set_row_spacing (GTK_TABLE (basic_page.serv_table),
7, 0);
gtk_widget_set_sensitive(basic_page.pass_label, TRUE);
gtk_widget_set_sensitive(basic_page.uid_entry, TRUE);
gtk_widget_set_sensitive(basic_page.pass_entry, TRUE);
+ gtk_widget_set_sensitive(basic_page.showpwd_checkbtn, TRUE);
gtk_widget_hide(receive_page.pop3_frame);
gtk_widget_hide(receive_page.imap_frame);
gtk_widget_show(receive_page.local_frame);
gtk_widget_show(basic_page.pass_label);
gtk_widget_show(basic_page.uid_entry);
gtk_widget_show(basic_page.pass_entry);
+ gtk_widget_show(basic_page.showpwd_checkbtn);
gtk_table_set_row_spacing (GTK_TABLE (basic_page.serv_table),
7, VSPACING_NARROW);
gtk_widget_set_sensitive(basic_page.pass_label, TRUE);
gtk_widget_set_sensitive(basic_page.uid_entry, TRUE);
gtk_widget_set_sensitive(basic_page.pass_entry, TRUE);
+ gtk_widget_set_sensitive(basic_page.showpwd_checkbtn, TRUE);
gtk_widget_hide(receive_page.pop3_frame);
gtk_widget_show(receive_page.imap_frame);
gtk_widget_hide(receive_page.local_frame);
gtk_widget_hide(basic_page.pass_label);
gtk_widget_hide(basic_page.uid_entry);
gtk_widget_hide(basic_page.pass_entry);
+ gtk_widget_hide(basic_page.showpwd_checkbtn);
gtk_table_set_row_spacing (GTK_TABLE (basic_page.serv_table),
7, VSPACING_NARROW);
gtk_widget_set_sensitive(basic_page.pass_label, FALSE);
gtk_widget_set_sensitive(basic_page.uid_entry, FALSE);
gtk_widget_set_sensitive(basic_page.pass_entry, FALSE);
+ gtk_widget_set_sensitive(basic_page.showpwd_checkbtn, FALSE);
gtk_widget_set_sensitive(receive_page.pop3_frame, FALSE);
gtk_widget_hide(receive_page.pop3_frame);
gtk_widget_hide(receive_page.imap_frame);
gtk_widget_show(basic_page.pass_label);
gtk_widget_show(basic_page.uid_entry);
gtk_widget_show(basic_page.pass_entry);
+ gtk_widget_show(basic_page.showpwd_checkbtn);
gtk_table_set_row_spacing (GTK_TABLE (basic_page.serv_table),
7, VSPACING_NARROW);
gtk_widget_set_sensitive(basic_page.pass_label, TRUE);
gtk_widget_set_sensitive(basic_page.uid_entry, TRUE);
gtk_widget_set_sensitive(basic_page.pass_entry, TRUE);
+ gtk_widget_set_sensitive(basic_page.showpwd_checkbtn, TRUE);
gtk_widget_set_sensitive(receive_page.pop3_frame, TRUE);
gtk_widget_show(receive_page.pop3_frame);
gtk_widget_hide(receive_page.imap_frame);
gtk_widget_set_sensitive(basic_page.pass_label, auth);
gtk_widget_set_sensitive(basic_page.uid_entry, auth);
gtk_widget_set_sensitive(basic_page.pass_entry, auth);
+ gtk_widget_set_sensitive(basic_page.showpwd_checkbtn, auth);
gtk_widget_set_sensitive(basic_page.nntpauth_onconnect_checkbtn, auth);
}
gtk_widget_set_sensitive(basic_page.smtpserv_label, !use_mailcmd);
gtk_widget_set_sensitive(basic_page.uid_entry, !use_mailcmd);
gtk_widget_set_sensitive(basic_page.pass_entry, !use_mailcmd);
+ gtk_widget_set_sensitive(basic_page.showpwd_checkbtn, !use_mailcmd);
+}
+
+static void prefs_account_showpwd_checkbtn_toggled(GtkToggleButton *button,
+ gpointer user_data)
+{
+ gboolean active = gtk_toggle_button_get_active(button);
+ GtkWidget *entry = GTK_WIDGET(user_data);
+
+ gtk_entry_set_visibility(GTK_ENTRY(entry), active);
}
static void prefs_account_filter_on_recv_toggled(GtkToggleButton *button,