Harmonise GUI maximum value with libspamc's one
[claws.git] / src / plugins / spamassassin / spamassassin_gtk.c
index d0439a6daf38e4896d1cc4c9ec2fba76eb8d6005..ad7ad2ca1f4f333acc9514140aefa97477f91c9a 100644 (file)
@@ -41,6 +41,9 @@
 #include "menu.h"
 #include "addressbook.h"
 #include "combobox.h"
+#include "libspamc.h"
+
+#define SA_MAX_SIZE_KB (SPAMC_MAX_MESSAGE_LEN / 1024)
 
 struct SpamAssassinPage
 {
@@ -60,6 +63,7 @@ struct SpamAssassinPage
        GtkWidget *save_folder_select;
        GtkWidget *max_size;
        GtkWidget *timeout;
+       GtkWidget *compress;
        GtkWidget *mark_as_read;
        GtkWidget *whitelist_ab;
        GtkWidget *whitelist_ab_folder_combo;
@@ -86,11 +90,11 @@ enum {
 };
 
 struct Transport transports[] = {
-       /*{ N_("Disabled"),     SPAMASSASSIN_DISABLED,                  PAGE_DISABLED, 0 },*/
-       { N_("Localhost"),      SPAMASSASSIN_TRANSPORT_LOCALHOST,       PAGE_NETWORK, 0 },
-       { N_("TCP"),            SPAMASSASSIN_TRANSPORT_TCP,             PAGE_NETWORK, NETWORK_HOSTNAME },
+       /*{ N_("Disabled"),             SPAMASSASSIN_DISABLED,                          PAGE_DISABLED,  0 },*/
+       { N_("Localhost"),              SPAMASSASSIN_TRANSPORT_LOCALHOST,       PAGE_NETWORK,   0 },
+       { N_("TCP"),                    SPAMASSASSIN_TRANSPORT_TCP,                     PAGE_NETWORK,   NETWORK_HOSTNAME },
 #ifndef G_OS_WIN32
-       { N_("Unix Socket"),    SPAMASSASSIN_TRANSPORT_UNIX,            PAGE_UNIX,    0 },
+       { N_("Unix Socket"),    SPAMASSASSIN_TRANSPORT_UNIX,            PAGE_UNIX,              0 },
 #endif
 };
 
@@ -216,8 +220,8 @@ static void spamassassin_create_widget_func(PrefsPage * _page,
 
        GtkWidget *vbox1, *vbox2;
        GtkWidget *frame_transport, *table_transport, *vbox_transport;
-       GtkWidget *hbox_spamd, *hbox_max_size, *hbox_timeout;
-       GtkWidget *hbox_process_emails, *hbox_save_spam;
+       GtkWidget *hbox_spamd, *hbox_compress, *hbox_max_size;
+       GtkWidget *hbox_timeout, *hbox_process_emails, *hbox_save_spam;
        GtkWidget *hbox_mark_as_read, *hbox_whitelist;
        GtkWidget *whitelist_ab_checkbtn;
        GtkWidget *whitelist_ab_folder_combo;
@@ -238,6 +242,8 @@ static void spamassassin_create_widget_func(PrefsPage * _page,
        GtkWidget *spamd_port_spinbtn;
        GtkWidget *spamd_socket_entry;
 
+       GtkWidget *compress_checkbtn;
+
        GtkWidget *max_size_label;
        GtkAdjustment *max_size_spinbtn_adj;
        GtkWidget *max_size_spinbtn;
@@ -353,6 +359,17 @@ static void spamassassin_create_widget_func(PrefsPage * _page,
        gtk_box_pack_start(GTK_BOX(hbox_spamd), spamd_socket_entry, TRUE, TRUE, 0);
        CLAWS_SET_TIP(spamd_socket_entry, _("Path of Unix socket"));
 
+       hbox_compress = gtk_hbox_new(FALSE, 8);
+       gtk_widget_show(hbox_compress);
+       gtk_box_pack_start (GTK_BOX (vbox2), hbox_compress, TRUE, TRUE, 0);
+
+       compress_checkbtn = gtk_check_button_new_with_label(
+                       _("Use compression"));
+       gtk_widget_show(compress_checkbtn);
+       gtk_box_pack_start(GTK_BOX(hbox_compress), compress_checkbtn, TRUE, TRUE, 0);
+       CLAWS_SET_TIP(compress_checkbtn,
+                       _("Enable compression if spamd uses it, otherwise disable it."));
+
        hbox_max_size = gtk_hbox_new(FALSE, 8);
        gtk_widget_show(hbox_max_size);
        gtk_box_pack_start (GTK_BOX (vbox2), hbox_max_size, TRUE, TRUE, 0);
@@ -361,7 +378,7 @@ static void spamassassin_create_widget_func(PrefsPage * _page,
        gtk_widget_show(max_size_label);
        gtk_box_pack_start(GTK_BOX(hbox_max_size), max_size_label, FALSE, FALSE, 0);
 
-       max_size_spinbtn_adj = GTK_ADJUSTMENT(gtk_adjustment_new(250, 0, 10000, 10, 10, 0));
+       max_size_spinbtn_adj = GTK_ADJUSTMENT(gtk_adjustment_new(250, 0, SA_MAX_SIZE_KB, 10, 10, 0));
        max_size_spinbtn = gtk_spin_button_new(GTK_ADJUSTMENT(max_size_spinbtn_adj), 1, 0);
        gtk_widget_show(max_size_spinbtn);
        gtk_box_pack_start(GTK_BOX(hbox_max_size), max_size_spinbtn, FALSE, FALSE, 0);
@@ -453,13 +470,15 @@ static void spamassassin_create_widget_func(PrefsPage * _page,
                        _("Click this button to select a book or folder in the address book"));
 
        SET_TOGGLE_SENSITIVITY(enable_sa_checkbtn, frame_transport);
+       SET_TOGGLE_SENSITIVITY(enable_sa_checkbtn, hbox_compress);
        SET_TOGGLE_SENSITIVITY(enable_sa_checkbtn, hbox_max_size);
        SET_TOGGLE_SENSITIVITY(enable_sa_checkbtn, hbox_timeout);
        SET_TOGGLE_SENSITIVITY(enable_sa_checkbtn, hbox_save_spam);
        SET_TOGGLE_SENSITIVITY(save_spam_checkbtn, save_spam_folder_entry);
        SET_TOGGLE_SENSITIVITY(save_spam_checkbtn, save_spam_folder_select);
        SET_TOGGLE_SENSITIVITY(enable_sa_checkbtn, hbox_process_emails);
-       SET_TOGGLE_SENSITIVITY(save_spam_checkbtn, mark_as_read_checkbtn);
+       SET_TOGGLE_SENSITIVITY(enable_sa_checkbtn, mark_as_read_checkbtn);
+       SET_TOGGLE_SENSITIVITY(enable_sa_checkbtn, hbox_whitelist);
        SET_TOGGLE_SENSITIVITY(whitelist_ab_checkbtn, whitelist_ab_folder_combo);
 #ifndef USE_ALT_ADDRBOOK
        SET_TOGGLE_SENSITIVITY(whitelist_ab_checkbtn, whitelist_ab_select_btn);
@@ -497,6 +516,7 @@ static void spamassassin_create_widget_func(PrefsPage * _page,
                                        config->whitelist_ab_folder);
        }
        gtk_spin_button_set_value(GTK_SPIN_BUTTON(spamd_port_spinbtn), (float) config->port);
+       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(compress_checkbtn), config->compress);
        gtk_spin_button_set_value(GTK_SPIN_BUTTON(max_size_spinbtn), (float) config->max_size);
        gtk_spin_button_set_value(GTK_SPIN_BUTTON(timeout_spinbtn), (float) config->timeout);
        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(process_emails_checkbtn), config->process_emails);
@@ -514,6 +534,7 @@ static void spamassassin_create_widget_func(PrefsPage * _page,
        page->colon = spamd_colon_label;
        page->port = spamd_port_spinbtn;
        page->socket = spamd_socket_entry;
+       page->compress = compress_checkbtn;
        page->max_size = max_size_spinbtn;
        page->timeout = timeout_spinbtn;
        page->process_emails = process_emails_checkbtn;
@@ -524,11 +545,6 @@ static void spamassassin_create_widget_func(PrefsPage * _page,
        page->whitelist_ab = whitelist_ab_checkbtn;
        page->whitelist_ab_folder_combo = whitelist_ab_folder_combo;
 
-#ifdef G_OS_WIN32
-       /* no Unix socket in Windows, and in case our config comes from Unix, switch to TCP */
-       if (config->transport == SPAMASSASSIN_TRANSPORT_UNIX)
-               config->transport = SPAMASSASSIN_TRANSPORT_TCP;
-#endif
        active = 0;
        for (i = 0; i < (sizeof(transports) / sizeof(struct Transport)); i++) {
                
@@ -607,6 +623,9 @@ static void spamassassin_save_func(PrefsPage *_page)
        /* timeout */
        config->timeout = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(page->timeout));
 
+       /* compress */
+       config->compress = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->compress));
+
        /* mark_as_read */
        config->mark_as_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->mark_as_read));