added SSL support for POP using OpenSSL
[claws.git] / src / prefs_account.c
index b4fb9e08951bdc7131ce6cab1513e9957d16a172..0ec03659640fef9d5d686d159efcde611529bfbd 100644 (file)
@@ -89,6 +89,9 @@ static struct Receive {
        GtkWidget *getall_chkbtn;
        GtkWidget *recvatgetall_chkbtn;
        GtkWidget *filter_on_recv_chkbtn;
+
+       GtkWidget *imap_frame;
+       GtkWidget *imapdir_entry;
 } receive;
 
 static struct Send {
@@ -124,8 +127,18 @@ static struct Privacy {
 static struct Advanced {
        GtkWidget *smtpport_chkbtn;
        GtkWidget *smtpport_entry;
+       GtkWidget *popport_hbox;
        GtkWidget *popport_chkbtn;
        GtkWidget *popport_entry;
+#if USE_SSL
+       GtkWidget *popssl_chkbtn;
+#endif
+       GtkWidget *imapport_hbox;
+       GtkWidget *imapport_chkbtn;
+       GtkWidget *imapport_entry;
+       GtkWidget *nntpport_hbox;
+       GtkWidget *nntpport_chkbtn;
+       GtkWidget *nntpport_entry;
        GtkWidget *domain_chkbtn;
        GtkWidget *domain_entry;
 } advanced;
@@ -216,6 +229,9 @@ static PrefParam param[] = {
         &receive.filter_on_recv_chkbtn,
         prefs_set_data_from_toggle, prefs_set_toggle},
 
+       {"imap_directory", NULL, &tmp_ac_prefs.imap_dir, P_STRING,
+        &receive.imapdir_entry, prefs_set_data_from_entry, prefs_set_entry},
+
        /* Send */
        {"add_date", "TRUE", &tmp_ac_prefs.add_date, P_BOOL,
         &send.date_chkbtn,
@@ -294,6 +310,28 @@ static PrefParam param[] = {
         &advanced.popport_entry,
         prefs_set_data_from_entry, prefs_set_entry},
 
+#if USE_SSL
+       {"pop_ssl", "FALSE", &tmp_ac_prefs.pop_ssl, P_BOOL,
+        &advanced.popssl_chkbtn,
+        prefs_set_data_from_toggle, prefs_set_toggle},
+#endif
+
+       {"set_imapport", "FALSE", &tmp_ac_prefs.set_imapport, P_BOOL,
+        &advanced.imapport_chkbtn,
+        prefs_set_data_from_toggle, prefs_set_toggle},
+
+       {"imap_port", "143", &tmp_ac_prefs.imapport, P_USHORT,
+        &advanced.imapport_entry,
+        prefs_set_data_from_entry, prefs_set_entry},
+
+       {"set_nntpport", "FALSE", &tmp_ac_prefs.set_nntpport, P_BOOL,
+        &advanced.nntpport_chkbtn,
+        prefs_set_data_from_toggle, prefs_set_toggle},
+
+       {"nntp_port", "119", &tmp_ac_prefs.nntpport, P_USHORT,
+        &advanced.nntpport_entry,
+        prefs_set_data_from_entry, prefs_set_entry},
+
        {"set_domain", "FALSE", &tmp_ac_prefs.set_domain, P_BOOL,
         &advanced.domain_chkbtn,
         prefs_set_data_from_toggle, prefs_set_toggle},
@@ -874,6 +912,10 @@ static void prefs_account_receive_create(void)
        GtkWidget *getall_chkbtn;
        GtkWidget *recvatgetall_chkbtn;
        GtkWidget *filter_on_recv_chkbtn;
+       GtkWidget *frame2;
+       GtkWidget *hbox1;
+       GtkWidget *imapdir_label;
+       GtkWidget *imapdir_entry;
 
        vbox1 = gtk_vbox_new (FALSE, VSPACING);
        gtk_widget_show (vbox1);
@@ -890,18 +932,40 @@ static void prefs_account_receive_create(void)
        PACK_CHECK_BUTTON (vbox2, rmmail_chkbtn,
                           _("Remove messages on server when received"));
        PACK_CHECK_BUTTON (vbox2, getall_chkbtn,
-                          _("Receive all messages on server"));
+                          _("Download all messages on server"));
        PACK_CHECK_BUTTON
                (vbox2, recvatgetall_chkbtn,
-                _("`Receive all' checks for new mail on this account"));
+                _("`Get all' checks for new mail on this account"));
        PACK_CHECK_BUTTON (vbox2, filter_on_recv_chkbtn,
                           _("Filter messages on receiving"));
 
+       PACK_FRAME (vbox1, frame2, _("IMAP4"));
+
+       vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
+       gtk_widget_show (vbox2);
+       gtk_container_add (GTK_CONTAINER (frame2), vbox2);
+       gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
+
+       hbox1 = gtk_hbox_new (FALSE, 8);
+       gtk_widget_show (hbox1);
+       gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, FALSE, 0);
+
+       imapdir_label = gtk_label_new (_("IMAP server directory"));
+       gtk_widget_show (imapdir_label);
+       gtk_box_pack_start (GTK_BOX (hbox1), imapdir_label, FALSE, FALSE, 0);
+
+       imapdir_entry = gtk_entry_new();
+       gtk_widget_show (imapdir_entry);
+       gtk_box_pack_start (GTK_BOX (hbox1), imapdir_entry, TRUE, TRUE, 0);
+
        receive.pop3_frame            = frame1;
        receive.rmmail_chkbtn         = rmmail_chkbtn;
        receive.getall_chkbtn         = getall_chkbtn;
        receive.recvatgetall_chkbtn   = recvatgetall_chkbtn;
        receive.filter_on_recv_chkbtn = filter_on_recv_chkbtn;
+
+       receive.imap_frame    = frame2;
+       receive.imapdir_entry = imapdir_entry;
 }
 
 static void prefs_account_send_create(void)
@@ -1147,13 +1211,36 @@ static void prefs_account_advanced_create(void)
        GtkWidget *hbox1;
        GtkWidget *checkbtn_smtpport;
        GtkWidget *entry_smtpport;
-       GtkWidget *hbox2;
+       GtkWidget *hbox_popport;
        GtkWidget *checkbtn_popport;
        GtkWidget *entry_popport;
-       GtkWidget *hbox3;
+#ifdef USE_SSL
+       GtkWidget *checkbtn_popssl;
+#endif
+       GtkWidget *hbox_imapport;
+       GtkWidget *checkbtn_imapport;
+       GtkWidget *entry_imapport;
+       GtkWidget *hbox_nntpport;
+       GtkWidget *checkbtn_nntpport;
+       GtkWidget *entry_nntpport;
        GtkWidget *checkbtn_domain;
        GtkWidget *entry_domain;
 
+#define PACK_HBOX(hbox) \
+{ \
+       hbox = gtk_hbox_new (FALSE, 8); \
+       gtk_widget_show (hbox); \
+       gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0); \
+}
+
+#define PACK_PORT_ENTRY(box, entry) \
+{ \
+       entry = gtk_entry_new_with_max_length (5); \
+       gtk_widget_show (entry); \
+       gtk_box_pack_start (GTK_BOX (box), entry, FALSE, FALSE, 0); \
+       gtk_widget_set_usize (entry, 64, -1); \
+}
+
        vbox1 = gtk_vbox_new (FALSE, VSPACING);
        gtk_widget_show (vbox1);
        gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
@@ -1163,45 +1250,58 @@ static void prefs_account_advanced_create(void)
        gtk_widget_show (vbox2);
        gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
 
-       hbox1 = gtk_hbox_new (FALSE, 8);
-       gtk_widget_show (hbox1);
-       gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, FALSE, 0);
-
+       PACK_HBOX (hbox1);
        PACK_CHECK_BUTTON (hbox1, checkbtn_smtpport, _("Specify SMTP port"));
+       PACK_PORT_ENTRY (hbox1, entry_smtpport);
+       SET_TOGGLE_SENSITIVITY (checkbtn_smtpport, entry_smtpport);
 
-       entry_smtpport = gtk_entry_new_with_max_length (5);
-       gtk_widget_show (entry_smtpport);
-       gtk_box_pack_start (GTK_BOX (hbox1), entry_smtpport, FALSE, FALSE, 0);
-       gtk_widget_set_usize (entry_smtpport, 64, -1);
-       SET_TOGGLE_SENSITIVITY(checkbtn_smtpport, entry_smtpport);
+       PACK_HBOX (hbox_popport);
+       PACK_CHECK_BUTTON (hbox_popport, checkbtn_popport,
+                          _("Specify POP3 port"));
+       PACK_PORT_ENTRY (hbox_popport, entry_popport);
+       SET_TOGGLE_SENSITIVITY (checkbtn_popport, entry_popport);
 
-       hbox2 = gtk_hbox_new (FALSE, 8);
-       gtk_widget_show (hbox2);
-       gtk_box_pack_start (GTK_BOX (vbox2), hbox2, FALSE, FALSE, 0);
-
-       PACK_CHECK_BUTTON (hbox2, checkbtn_popport, _("Specify POP3 port"));
+#ifdef USE_SSL
+       PACK_CHECK_BUTTON (vbox2, checkbtn_popssl, _("Use SSL to connect to POP server"));
+#endif
 
-       entry_popport = gtk_entry_new_with_max_length (5);
-       gtk_widget_show (entry_popport);
-       gtk_box_pack_start (GTK_BOX (hbox2), entry_popport, FALSE, FALSE, 0);
-       gtk_widget_set_usize (entry_popport, 64, -1);
-       SET_TOGGLE_SENSITIVITY(checkbtn_popport, entry_popport);
+       PACK_HBOX (hbox_imapport);
+       PACK_CHECK_BUTTON (hbox_imapport, checkbtn_imapport,
+                          _("Specify IMAP4 port"));
+       PACK_PORT_ENTRY (hbox_imapport, entry_imapport);
+       SET_TOGGLE_SENSITIVITY (checkbtn_imapport, entry_imapport);
 
-       hbox3 = gtk_hbox_new (FALSE, 8);
-       gtk_widget_show (hbox3);
-       gtk_box_pack_start (GTK_BOX (vbox2), hbox3, FALSE, FALSE, 0);
+       PACK_HBOX (hbox_nntpport);
+       PACK_CHECK_BUTTON (hbox_nntpport, checkbtn_nntpport,
+                          _("Specify NNTP port"));
+       PACK_PORT_ENTRY (hbox_nntpport, entry_nntpport);
+       SET_TOGGLE_SENSITIVITY (checkbtn_nntpport, entry_nntpport);
 
-       PACK_CHECK_BUTTON (hbox3, checkbtn_domain, _("Specify domain name"));
+       PACK_HBOX (hbox1);
+       PACK_CHECK_BUTTON (hbox1, checkbtn_domain, _("Specify domain name"));
 
        entry_domain = gtk_entry_new ();
        gtk_widget_show (entry_domain);
-       gtk_box_pack_start (GTK_BOX (hbox3), entry_domain, TRUE, TRUE, 0);
-       SET_TOGGLE_SENSITIVITY(checkbtn_domain, entry_domain);
+       gtk_box_pack_start (GTK_BOX (hbox1), entry_domain, TRUE, TRUE, 0);
+       SET_TOGGLE_SENSITIVITY (checkbtn_domain, entry_domain);
+
+#undef PACK_HBOX
+#undef PACK_PORT_ENTRY
 
        advanced.smtpport_chkbtn        = checkbtn_smtpport;
        advanced.smtpport_entry         = entry_smtpport;
+       advanced.popport_hbox           = hbox_popport;
        advanced.popport_chkbtn         = checkbtn_popport;
        advanced.popport_entry          = entry_popport;
+#ifdef USE_SSL
+       advanced.popssl_chkbtn           = checkbtn_popssl;
+#endif
+       advanced.imapport_hbox          = hbox_imapport;
+       advanced.imapport_chkbtn        = checkbtn_imapport;
+       advanced.imapport_entry         = entry_imapport;
+       advanced.nntpport_hbox          = hbox_nntpport;
+       advanced.nntpport_chkbtn        = checkbtn_nntpport;
+       advanced.nntpport_entry         = entry_nntpport;
        advanced.domain_chkbtn          = checkbtn_domain;
        advanced.domain_entry           = entry_domain;
 }
@@ -1377,6 +1477,7 @@ static void prefs_account_protocol_set_optmenu(PrefParam *pparam)
                break;
                */
        default:
+               break;
        }
 
        menu = gtk_option_menu_get_menu(optmenu);
@@ -1388,6 +1489,7 @@ static void prefs_account_protocol_activated(GtkMenuItem *menuitem)
 {
        RecvProtocol protocol;
        gboolean active;
+       gint auth;
 
        protocol = GPOINTER_TO_INT
                (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
@@ -1398,62 +1500,98 @@ static void prefs_account_protocol_activated(GtkMenuItem *menuitem)
                gtk_widget_set_sensitive(basic.inbox_entry, FALSE);
                gtk_widget_show(basic.nntpserv_label);
                gtk_widget_show(basic.nntpserv_entry);
+               gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table),
+                                          0, VSPACING_NARROW);
                gtk_widget_set_sensitive(basic.nntpauth_chkbtn, TRUE);
                gtk_widget_show(basic.nntpauth_chkbtn);
+               gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table),
+                                          1, VSPACING_NARROW);
                gtk_widget_hide(basic.recvserv_label);
                gtk_widget_hide(basic.recvserv_entry);
+               gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table),
+                                          2, 0);
                gtk_widget_show(basic.smtpserv_label);
                gtk_widget_show(basic.smtpserv_entry);
+               gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table),
+                                          4, VSPACING_NARROW);
                gtk_widget_hide(basic.localmbox_label);
                gtk_widget_hide(basic.localmbox_entry);
+               gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table),
+                                          3, 0);
                gtk_widget_hide(basic.mailcmd_label);
                gtk_widget_hide(basic.mailcmd_entry);
+               gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table),
+                                          6, 0);
                gtk_widget_hide(basic.mailcmd_chkbtn);
+               gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table),
+                                          5, 0);
                gtk_widget_show(basic.uid_label);
                gtk_widget_show(basic.pass_label);
                gtk_widget_show(basic.uid_entry);
                gtk_widget_show(basic.pass_entry);
+               gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table),
+                                          7, VSPACING_NARROW);
 
                gtk_widget_set_sensitive(basic.uid_label,  TRUE);
                gtk_widget_set_sensitive(basic.pass_label, TRUE);
                gtk_widget_set_sensitive(basic.uid_entry,  TRUE);
                gtk_widget_set_sensitive(basic.pass_entry, TRUE);
 
-/*             gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table), 3, 0); */
                /* update userid/passwd sensitive state */
                prefs_account_nntpauth_toggled
                        (GTK_TOGGLE_BUTTON(basic.nntpauth_chkbtn), NULL);
                gtk_widget_set_sensitive(receive.pop3_frame, FALSE);
+               gtk_widget_set_sensitive(receive.imap_frame, FALSE);
+               gtk_widget_hide(advanced.popport_hbox);
+               gtk_widget_hide(advanced.imapport_hbox);
+               gtk_widget_show(advanced.nntpport_hbox);
                break;
        case A_LOCAL:
                gtk_widget_set_sensitive(basic.inbox_label, TRUE);
                gtk_widget_set_sensitive(basic.inbox_entry, TRUE);
                gtk_widget_hide(basic.nntpserv_label);
                gtk_widget_hide(basic.nntpserv_entry);
+               gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table),
+                                          0, 0);
                gtk_widget_set_sensitive(basic.nntpauth_chkbtn, FALSE);
                gtk_widget_hide(basic.nntpauth_chkbtn);
-               gtk_widget_set_sensitive(basic.recvserv_label, FALSE);
-               gtk_widget_set_sensitive(basic.recvserv_entry, FALSE);
+               gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table),
+                                          1, 0);
                gtk_widget_hide(basic.recvserv_label);
                gtk_widget_hide(basic.recvserv_entry);
+               gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table),
+                                          2, 0);
                gtk_widget_show(basic.smtpserv_label);
                gtk_widget_show(basic.smtpserv_entry);
+               gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table),
+                                          4, VSPACING_NARROW);
                gtk_widget_show(basic.localmbox_label);
                gtk_widget_show(basic.localmbox_entry);
+               gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table),
+                                          3, VSPACING_NARROW);
                gtk_widget_show(basic.mailcmd_label);
                gtk_widget_show(basic.mailcmd_entry);
+               gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table),
+                                          6, VSPACING_NARROW);
                gtk_widget_show(basic.mailcmd_chkbtn);
+               gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table),
+                                          5, VSPACING_NARROW);
                gtk_widget_hide(basic.uid_label);
                gtk_widget_hide(basic.pass_label);
                gtk_widget_hide(basic.uid_entry);
                gtk_widget_hide(basic.pass_entry);
-/*             gtk_table_set_row_spacing */
-/*                     (GTK_TABLE (basic.serv_table), 3, VSPACING_NARROW); */
+               gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table),
+                                          7, 0);
+
                gtk_widget_set_sensitive(basic.uid_label,  TRUE);
                gtk_widget_set_sensitive(basic.pass_label, TRUE);
                gtk_widget_set_sensitive(basic.uid_entry,  TRUE);
                gtk_widget_set_sensitive(basic.pass_entry, TRUE);
                gtk_widget_set_sensitive(receive.pop3_frame, FALSE);
+               gtk_widget_set_sensitive(receive.imap_frame, FALSE);
+               gtk_widget_hide(advanced.popport_hbox);
+               gtk_widget_hide(advanced.imapport_hbox);
+               gtk_widget_hide(advanced.nntpport_hbox);
                prefs_account_mailcmd_toggled
                        (GTK_TOGGLE_BUTTON(basic.mailcmd_chkbtn), NULL);
                break;
@@ -1462,66 +1600,103 @@ static void prefs_account_protocol_activated(GtkMenuItem *menuitem)
                gtk_widget_set_sensitive(basic.inbox_entry, FALSE);
                gtk_widget_hide(basic.nntpserv_label);
                gtk_widget_hide(basic.nntpserv_entry);
+               gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table),
+                                          0, 0);
                gtk_widget_set_sensitive(basic.nntpauth_chkbtn, FALSE);
                gtk_widget_hide(basic.nntpauth_chkbtn);
+               gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table),
+                                          1, 0);
                gtk_widget_set_sensitive(basic.recvserv_label, TRUE);
                gtk_widget_set_sensitive(basic.recvserv_entry, TRUE);
                gtk_widget_show(basic.recvserv_label);
                gtk_widget_show(basic.recvserv_entry);
+               gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table),
+                                          2, VSPACING_NARROW);
                gtk_widget_show(basic.smtpserv_label);
                gtk_widget_show(basic.smtpserv_entry);
+               gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table),
+                                          4, VSPACING_NARROW);
                gtk_widget_hide(basic.localmbox_label);
                gtk_widget_hide(basic.localmbox_entry);
+               gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table),
+                                          3, 0);
                gtk_widget_hide(basic.mailcmd_label);
                gtk_widget_hide(basic.mailcmd_entry);
+               gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table),
+                                          6, 0);
                gtk_widget_hide(basic.mailcmd_chkbtn);
+               gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table),
+                                          5, 0);
                gtk_widget_show(basic.uid_label);
                gtk_widget_show(basic.pass_label);
                gtk_widget_show(basic.uid_entry);
                gtk_widget_show(basic.pass_entry);
-/*             gtk_table_set_row_spacing */
-/*                     (GTK_TABLE (basic.serv_table), 3, VSPACING_NARROW); */
+               gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table),
+                                          7, VSPACING_NARROW);
+
                gtk_widget_set_sensitive(basic.uid_label,  TRUE);
                gtk_widget_set_sensitive(basic.pass_label, TRUE);
                gtk_widget_set_sensitive(basic.uid_entry,  TRUE);
                gtk_widget_set_sensitive(basic.pass_entry, TRUE);
                gtk_widget_set_sensitive(receive.pop3_frame, FALSE);
+               gtk_widget_set_sensitive(receive.imap_frame, TRUE);
                gtk_widget_set_sensitive(basic.smtpserv_entry, TRUE);
                gtk_widget_set_sensitive(basic.smtpserv_label, TRUE);
+               gtk_widget_hide(advanced.popport_hbox);
+               gtk_widget_show(advanced.imapport_hbox);
+               gtk_widget_hide(advanced.nntpport_hbox);
                break;
        case A_POP3:
        default:
                gtk_widget_set_sensitive(basic.inbox_label, TRUE);
                gtk_widget_set_sensitive(basic.inbox_entry, TRUE);
-               gtk_widget_set_sensitive(basic.nntpauth_chkbtn, FALSE);
                gtk_widget_hide(basic.nntpserv_label);
                gtk_widget_hide(basic.nntpserv_entry);
+               gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table),
+                                          0, 0);
                gtk_widget_set_sensitive(basic.nntpauth_chkbtn, FALSE);
                gtk_widget_hide(basic.nntpauth_chkbtn);
+               gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table),
+                                          1, 0);
                gtk_widget_set_sensitive(basic.recvserv_label, TRUE);
                gtk_widget_set_sensitive(basic.recvserv_entry, TRUE);
                gtk_widget_show(basic.recvserv_label);
                gtk_widget_show(basic.recvserv_entry);
+               gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table),
+                                          2, VSPACING_NARROW);
                gtk_widget_show(basic.smtpserv_label);
                gtk_widget_show(basic.smtpserv_entry);
+               gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table),
+                                          4, VSPACING_NARROW);
                gtk_widget_hide(basic.localmbox_label);
                gtk_widget_hide(basic.localmbox_entry);
+               gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table),
+                                          3, 0);
                gtk_widget_hide(basic.mailcmd_label);
                gtk_widget_hide(basic.mailcmd_entry);
+               gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table),
+                                          6, 0);
                gtk_widget_hide(basic.mailcmd_chkbtn);
+               gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table),
+                                          5, 0);
                gtk_widget_show(basic.uid_label);
                gtk_widget_show(basic.pass_label);
                gtk_widget_show(basic.uid_entry);
                gtk_widget_show(basic.pass_entry);
-/*             gtk_table_set_row_spacing */
-/*                     (GTK_TABLE (basic.serv_table), 3, VSPACING_NARROW); */
+               gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table),
+                                          7, VSPACING_NARROW);
+
                gtk_widget_set_sensitive(basic.uid_label,  TRUE);
                gtk_widget_set_sensitive(basic.pass_label, TRUE);
                gtk_widget_set_sensitive(basic.uid_entry,  TRUE);
                gtk_widget_set_sensitive(basic.pass_entry, TRUE);
                gtk_widget_set_sensitive(receive.pop3_frame, TRUE);
+               gtk_widget_set_sensitive(receive.imap_frame, FALSE);
                gtk_widget_set_sensitive(basic.smtpserv_entry, TRUE);
                gtk_widget_set_sensitive(basic.smtpserv_label, TRUE);
+               gtk_widget_show(advanced.popport_hbox);
+               gtk_widget_hide(advanced.imapport_hbox);
+               gtk_widget_hide(advanced.nntpport_hbox);
                break;
        }
 
@@ -1553,8 +1728,6 @@ static void prefs_account_mailcmd_toggled(GtkToggleButton *button,
        gtk_widget_set_sensitive(basic.mailcmd_label, use_mailcmd);
        gtk_widget_set_sensitive(basic.smtpserv_entry, !use_mailcmd);
        gtk_widget_set_sensitive(basic.smtpserv_label, !use_mailcmd);
-       gtk_widget_set_sensitive(basic.uid_label,  !use_mailcmd);
-       gtk_widget_set_sensitive(basic.pass_label, !use_mailcmd);
        gtk_widget_set_sensitive(basic.uid_entry,  !use_mailcmd);
        gtk_widget_set_sensitive(basic.pass_entry, !use_mailcmd);
 }