2006-04-20 [colin] 2.1.1cvs20
[claws.git] / src / prefs_account.c
index 06e5e1fc99c409679bd76e00f50635254b9d6df8..db38949db016e7604e31a504e4d15fa94daf02fc 100644 (file)
@@ -65,6 +65,7 @@ static GtkWidget *sigfile_radiobtn;
 static GtkWidget *sigcmd_radiobtn;
 static GtkWidget *entry_sigpath;
 static GtkWidget *signature_browse_button;
+static GtkWidget *signature_edit_button;
 
 static GSList *prefs_pages = NULL;
 
@@ -139,6 +140,8 @@ static struct Send {
        GtkWidget *smtp_pass_entry;
        GtkWidget *pop_bfr_smtp_chkbtn;
        GtkWidget *pop_bfr_smtp_tm_entry;
+       GtkWidget *pop_auth_timeout_lbl;
+       GtkWidget *pop_auth_minutes_lbl;
 } p_send;
 
 static struct Compose {
@@ -160,6 +163,7 @@ static struct Privacy {
        GtkWidget *default_encrypt_reply_chkbtn;
        GtkWidget *default_sign_chkbtn;
        GtkWidget *save_clear_text_chkbtn;
+       GtkWidget *encrypt_to_self_chkbtn;
 } privacy;
 
 #if USE_OPENSSL
@@ -316,7 +320,7 @@ static PrefParam param[] = {
         &receive.rmmail_chkbtn,
         prefs_set_data_from_toggle, prefs_set_toggle},
 
-       {"message_leave_time", "0", &tmp_ac_prefs.msg_leave_time, P_INT,
+       {"message_leave_time", "7", &tmp_ac_prefs.msg_leave_time, P_INT,
         &receive.leave_time_entry,
         prefs_set_data_from_entry, prefs_set_entry},
 
@@ -440,6 +444,9 @@ static PrefParam param[] = {
        {"save_clear_text", "FALSE", &tmp_ac_prefs.save_encrypted_as_clear_text, P_BOOL,
         &privacy.save_clear_text_chkbtn,
         prefs_set_data_from_toggle, prefs_set_toggle},
+       {"encrypt_to_self", "FALSE", &tmp_ac_prefs.encrypt_to_self, P_BOOL,
+        &privacy.encrypt_to_self_chkbtn,
+        prefs_set_data_from_toggle, prefs_set_toggle},
        {"privacy_prefs", "", &privacy_prefs, P_STRING,
         NULL, NULL, NULL},
 #if USE_OPENSSL
@@ -596,6 +603,9 @@ static void prefs_account_sigcmd_radiobtn_cb        (GtkWidget      *widget,
 static void prefs_account_signature_browse_cb  (GtkWidget      *widget,
                                                 gpointer        data);
 
+static void prefs_account_signature_edit_cb    (GtkWidget      *widget,
+                                                gpointer        data);
+
 static void pop_bfr_smtp_tm_set_sens           (GtkWidget      *widget,
                                                 gpointer        data);
 
@@ -624,7 +634,10 @@ static void privacy_system_activated(GtkMenuItem *menuitem)
        gtk_widget_set_sensitive (privacy.default_encrypt_chkbtn, privacy_enabled);
        gtk_widget_set_sensitive (privacy.default_encrypt_reply_chkbtn, privacy_enabled);
        gtk_widget_set_sensitive (privacy.default_sign_chkbtn, privacy_enabled);
-       gtk_widget_set_sensitive (privacy.save_clear_text_chkbtn, privacy_enabled);
+       gtk_widget_set_sensitive (privacy.encrypt_to_self_chkbtn, privacy_enabled);
+       gtk_widget_set_sensitive (privacy.save_clear_text_chkbtn, 
+               privacy_enabled && !gtk_toggle_button_get_active(
+                                       GTK_TOGGLE_BUTTON(privacy.encrypt_to_self_chkbtn)));
 }
 
 void update_privacy_system_menu() {
@@ -943,7 +956,8 @@ void destroy_dialog(gpointer data)
        PrefsAccount *ac_prefs = (PrefsAccount *) data;
        if (!cancelled)
                *ac_prefs = tmp_ac_prefs;
-
+       else /* the customhdr_list may have changed, update it anyway */
+               ac_prefs->customhdr_list = (&tmp_ac_prefs)->customhdr_list;
        gtk_main_quit();
 }
 
@@ -1004,21 +1018,21 @@ static void prefs_account_create(void)
 
        /* create all widgets on notebook */
        prefs_account_basic_create();
-       SET_NOTEBOOK_LABEL(notebook, _("Basic"), page++);
+       SET_NOTEBOOK_LABEL(notebook, _("_Basic"), page++);
        prefs_account_receive_create();
-       SET_NOTEBOOK_LABEL(notebook, _("Receive"), page++);
+       SET_NOTEBOOK_LABEL(notebook, _("_Receive"), page++);
        prefs_account_send_create();
-       SET_NOTEBOOK_LABEL(notebook, _("Send"), page++);
+       SET_NOTEBOOK_LABEL(notebook, _("_Send"), page++);
        prefs_account_compose_create();
-       SET_NOTEBOOK_LABEL(notebook, _("Compose"), page++);
+       SET_NOTEBOOK_LABEL(notebook, _("Co_mpose"), page++);
        prefs_account_privacy_create();
-       SET_NOTEBOOK_LABEL(notebook, _("Privacy"), page++);
+       SET_NOTEBOOK_LABEL(notebook, _("_Privacy"), page++);
 #if USE_OPENSSL
        prefs_account_ssl_create();
-       SET_NOTEBOOK_LABEL(notebook, _("SSL"), page++);
+       SET_NOTEBOOK_LABEL(notebook, _("SS_L"), page++);
 #endif /* USE_OPENSSL */
        prefs_account_advanced_create();
-       SET_NOTEBOOK_LABEL(notebook, _("Advanced"), page++);
+       SET_NOTEBOOK_LABEL(notebook, _("A_dvanced"), page++);
 
        prefs_account_fix_size();
 }
@@ -1421,7 +1435,7 @@ static void prefs_account_receive_create(void)
        gtk_widget_set_size_request (local_inbox_entry, DEFAULT_ENTRY_WIDTH, -1);
        gtk_box_pack_start (GTK_BOX (local_hbox), local_inbox_entry, TRUE, TRUE, 0);
 
-       local_inbox_btn = gtkut_get_browse_file_btn(_("_Browse"));
+       local_inbox_btn = gtkut_get_browse_file_btn(_("Bro_wse"));
        gtk_widget_show (local_inbox_btn);
        gtk_tooltips_set_tip(GTK_TOOLTIPS(inbox_tooltip), local_inbox_btn,
                             _("Unfiltered messages will be stored in this folder"),
@@ -1516,7 +1530,7 @@ static void prefs_account_receive_create(void)
        gtk_widget_set_size_request (inbox_entry, DEFAULT_ENTRY_WIDTH, -1);
        gtk_box_pack_start (GTK_BOX (hbox1), inbox_entry, TRUE, TRUE, 0);
 
-       inbox_btn = gtkut_get_browse_file_btn(_("_Browse"));
+       inbox_btn = gtkut_get_browse_file_btn(_("Bro_wse"));
        gtk_widget_show (inbox_btn);
        gtk_tooltips_set_tip(GTK_TOOLTIPS(inbox_tooltip), inbox_btn,
                             _("Unfiltered messages will be stored in this folder"),
@@ -1581,6 +1595,7 @@ static void prefs_account_receive_create(void)
        MENUITEM_ADD (optmenu_menu, menuitem, _("Automatic"), 0);
        MENUITEM_ADD (optmenu_menu, menuitem, "LOGIN", IMAP_AUTH_LOGIN);
        MENUITEM_ADD (optmenu_menu, menuitem, "CRAM-MD5", IMAP_AUTH_CRAM_MD5);
+       MENUITEM_ADD (optmenu_menu, menuitem, "ANONYMOUS", IMAP_AUTH_ANON);
 
        gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu), optmenu_menu);
 
@@ -1661,6 +1676,8 @@ static void prefs_account_send_create(void)
        GtkWidget *vbox_spc;
        GtkWidget *pop_bfr_smtp_chkbtn;
        GtkWidget *pop_bfr_smtp_tm_entry;
+       GtkWidget *pop_auth_timeout_lbl;
+       GtkWidget *pop_auth_minutes_lbl;
 
        vbox1 = gtk_vbox_new (FALSE, VSPACING);
        gtk_widget_show (vbox1);
@@ -1804,18 +1821,18 @@ static void prefs_account_send_create(void)
        gtk_box_pack_start (GTK_BOX (hbox), hbox_spc, FALSE, FALSE, 0);
        gtk_widget_set_size_request (hbox_spc, 12, -1);
 
-       label = gtk_label_new(_("POP authentication timeout: "));
-       gtk_widget_show (label);
-       gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
+       pop_auth_timeout_lbl = gtk_label_new(_("POP authentication timeout: "));
+       gtk_widget_show (pop_auth_timeout_lbl);
+       gtk_box_pack_start (GTK_BOX (hbox), pop_auth_timeout_lbl, FALSE, FALSE, 0);
 
        pop_bfr_smtp_tm_entry = gtk_entry_new ();
        gtk_widget_show (pop_bfr_smtp_tm_entry);
        gtk_widget_set_size_request (pop_bfr_smtp_tm_entry, 30, -1);
        gtk_box_pack_start (GTK_BOX (hbox), pop_bfr_smtp_tm_entry, FALSE, FALSE, 0);
 
-       label = gtk_label_new(_("minutes"));
-       gtk_widget_show (label);
-       gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
+       pop_auth_minutes_lbl = gtk_label_new(_("minutes"));
+       gtk_widget_show (pop_auth_minutes_lbl);
+       gtk_box_pack_start (GTK_BOX (hbox), pop_auth_minutes_lbl, FALSE, FALSE, 0);
 
 
        
@@ -1829,6 +1846,8 @@ static void prefs_account_send_create(void)
        p_send.smtp_pass_entry        = smtp_pass_entry;
        p_send.pop_bfr_smtp_chkbtn    = pop_bfr_smtp_chkbtn;
        p_send.pop_bfr_smtp_tm_entry  = pop_bfr_smtp_tm_entry;
+       p_send.pop_auth_timeout_lbl   = pop_auth_timeout_lbl;
+       p_send.pop_auth_minutes_lbl   = pop_auth_minutes_lbl;
 }
 
 static void prefs_account_compose_create(void)
@@ -1916,12 +1935,22 @@ static void prefs_account_compose_create(void)
        gtk_widget_show (entry_sigpath);
        gtk_box_pack_start (GTK_BOX (hbox2), entry_sigpath, TRUE, TRUE, 0);
 
-       signature_browse_button = gtkut_get_browse_file_btn(_("_Browse"));
+       signature_browse_button = gtkut_get_browse_file_btn(_("Bro_wse"));
        gtk_widget_show (signature_browse_button);
        gtk_box_pack_start (GTK_BOX (hbox2), signature_browse_button, FALSE, FALSE, 0);
        g_signal_connect(G_OBJECT(signature_browse_button), "clicked",
                         G_CALLBACK(prefs_account_signature_browse_cb), NULL);
 
+       #if GTK_CHECK_VERSION(2, 6, 0)
+       signature_edit_button = gtk_button_new_from_stock (GTK_STOCK_EDIT);
+       #else
+       signature_edit_button = gtk_button_new_with_label (_(" Edit... "));
+       #endif
+       gtk_widget_show (signature_edit_button);
+       gtk_box_pack_start (GTK_BOX (hbox2), signature_edit_button, FALSE, FALSE, 0);
+       g_signal_connect(G_OBJECT(signature_edit_button), "clicked",
+                        G_CALLBACK(prefs_account_signature_edit_cb), entry_sigpath);
+
        PACK_FRAME (vbox1, frame, _("Automatically set the following addresses"));
 
        table =  gtk_table_new (3, 2, FALSE);
@@ -1994,6 +2023,7 @@ static void prefs_account_privacy_create(void)
        GtkWidget *default_encrypt_reply_chkbtn;
        GtkWidget *default_sign_chkbtn;
        GtkWidget *save_clear_text_chkbtn;
+       GtkWidget *encrypt_to_self_chkbtn;
 
        vbox1 = gtk_vbox_new (FALSE, VSPACING);
        gtk_widget_show (vbox1);
@@ -2023,14 +2053,19 @@ static void prefs_account_privacy_create(void)
                             "encrypted message"));
        PACK_CHECK_BUTTON (vbox2, default_sign_chkbtn,
                           _("Sign message by default"));
+       PACK_CHECK_BUTTON (vbox2, encrypt_to_self_chkbtn,
+                          _("Encrypt sent messages to myself too"));
        PACK_CHECK_BUTTON (vbox2, save_clear_text_chkbtn,
                           _("Save sent encrypted messages as clear text"));
 
+       SET_TOGGLE_SENSITIVITY_REVERSE(encrypt_to_self_chkbtn, save_clear_text_chkbtn);
+
        privacy.default_privacy_system = default_privacy_system;
        privacy.default_encrypt_chkbtn = default_encrypt_chkbtn;
        privacy.default_encrypt_reply_chkbtn = default_encrypt_reply_chkbtn;
        privacy.default_sign_chkbtn    = default_sign_chkbtn;
        privacy.save_clear_text_chkbtn = save_clear_text_chkbtn;
+       privacy.encrypt_to_self_chkbtn = encrypt_to_self_chkbtn;
 }
 
 #if USE_OPENSSL
@@ -2535,6 +2570,10 @@ static void pop_bfr_smtp_tm_set_sens(GtkWidget *widget, gpointer data)
 {
        gtk_widget_set_sensitive(p_send.pop_bfr_smtp_tm_entry, 
                                 gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(p_send.pop_bfr_smtp_chkbtn)));
+       gtk_widget_set_sensitive(p_send.pop_auth_timeout_lbl, 
+                                gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(p_send.pop_bfr_smtp_chkbtn)));
+       gtk_widget_set_sensitive(p_send.pop_auth_minutes_lbl, 
+                                gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(p_send.pop_bfr_smtp_chkbtn)));
 }
 
 static void prefs_account_select_folder_cb(GtkWidget *widget, gpointer data)
@@ -2555,11 +2594,13 @@ static void prefs_account_select_folder_cb(GtkWidget *widget, gpointer data)
 static void prefs_account_sigfile_radiobtn_cb(GtkWidget *widget, gpointer data)
 {
        gtk_widget_set_sensitive(GTK_WIDGET(signature_browse_button), TRUE);
+       gtk_widget_set_sensitive(GTK_WIDGET(signature_edit_button), TRUE);
 }
 
 static void prefs_account_sigcmd_radiobtn_cb(GtkWidget *widget, gpointer data)
 {
        gtk_widget_set_sensitive(GTK_WIDGET(signature_browse_button), FALSE);
+       gtk_widget_set_sensitive(GTK_WIDGET(signature_edit_button), FALSE);
 }
 
 static void prefs_account_signature_browse_cb(GtkWidget *widget, gpointer data)
@@ -2579,6 +2620,12 @@ static void prefs_account_signature_browse_cb(GtkWidget *widget, gpointer data)
        g_free(utf8_filename);
 }
 
+static void prefs_account_signature_edit_cb(GtkWidget *widget, gpointer data)
+{
+       const gchar *sigpath = gtk_entry_get_text(GTK_ENTRY(data));
+       open_txt_editor(sigpath, prefs_common.ext_editor_cmd);
+}
+
 static void prefs_account_edit_custom_header(void)
 {
        prefs_custom_header_open(&tmp_ac_prefs);
@@ -2680,6 +2727,9 @@ static void prefs_account_imap_auth_type_set_optmenu(PrefParam *pparam)
        case IMAP_AUTH_CRAM_MD5:
                gtk_option_menu_set_history(optmenu, 2);
                break;
+       case IMAP_AUTH_ANON:
+               gtk_option_menu_set_history(optmenu, 3);
+               break;
        case 0:
        default:
                gtk_option_menu_set_history(optmenu, 0);