Harmonise GUI maximum value with libspamc's one
[claws.git] / src / plugins / spamassassin / spamassassin_gtk.c
index 88133a0fef11a2515b691b9560963c9972dec7aa..ad7ad2ca1f4f333acc9514140aefa97477f91c9a 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2012 the Claws Mail Team
+ * Copyright (C) 1999-2015 the Claws Mail Team
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  *
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * 
  */
 
 #ifdef HAVE_CONFIG_H
 #  include "config.h"
+#include "claws-features.h"
 #endif
 
 #include "defs.h"
@@ -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,13 +90,15 @@ 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_("Unix Socket"),    SPAMASSASSIN_TRANSPORT_UNIX,            PAGE_UNIX,    0 },
+       /*{ 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 },
+#endif
 };
 
-#ifndef USE_NEW_ADDRBOOK
+#ifndef USE_ALT_ADDRBOOK
 static void spamassassin_whitelist_ab_select_cb(GtkWidget *widget, gpointer data)
 {
        struct SpamAssassinPage *page = (struct SpamAssassinPage *) data;
@@ -115,7 +121,8 @@ static void foldersel_cb(GtkWidget *widget, gpointer data)
        gchar *item_id;
        gint newpos = 0;
        
-       item = foldersel_folder_sel(NULL, FOLDER_SEL_MOVE, NULL, FALSE);
+       item = foldersel_folder_sel(NULL, FOLDER_SEL_MOVE, NULL, FALSE,
+                       _("Select folder to save spam to"));
        if (item && (item_id = folder_item_get_identifier(item)) != NULL) {
                gtk_editable_delete_text(GTK_EDITABLE(page->save_folder), 0, -1);
                gtk_editable_insert_text(GTK_EDITABLE(page->save_folder), item_id, strlen(item_id), &newpos);
@@ -213,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;
@@ -235,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;
@@ -337,7 +346,7 @@ static void spamassassin_create_widget_func(PrefsPage * _page,
        gtk_widget_show(spamd_colon_label);
        gtk_box_pack_start(GTK_BOX(hbox_spamd), spamd_colon_label, FALSE, FALSE, 0);
 
-       spamd_port_spinbtn_adj = gtk_adjustment_new(783, 1, 65535, 1, 10, 0);
+       spamd_port_spinbtn_adj = GTK_ADJUSTMENT(gtk_adjustment_new(783, 1, 65535, 1, 10, 0));
        spamd_port_spinbtn = gtk_spin_button_new(GTK_ADJUSTMENT(spamd_port_spinbtn_adj), 1, 0);
        gtk_widget_show(spamd_port_spinbtn);
        gtk_box_pack_start(GTK_BOX(hbox_spamd), spamd_port_spinbtn, FALSE, FALSE, 0);
@@ -350,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);
@@ -358,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_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);
@@ -378,7 +398,7 @@ static void spamassassin_create_widget_func(PrefsPage * _page,
        gtk_widget_show(timeout_label);
        gtk_box_pack_start(GTK_BOX(hbox_timeout), timeout_label, FALSE, FALSE, 0);
 
-       timeout_spinbtn_adj = gtk_adjustment_new(60, 0, 10000, 10, 10, 0);
+       timeout_spinbtn_adj = GTK_ADJUSTMENT(gtk_adjustment_new(60, 0, 10000, 10, 10, 0));
        timeout_spinbtn = gtk_spin_button_new(GTK_ADJUSTMENT(timeout_spinbtn_adj), 1, 0);
        gtk_widget_show(timeout_spinbtn);
        gtk_box_pack_start(GTK_BOX(hbox_timeout), timeout_spinbtn, FALSE, FALSE, 0);
@@ -443,29 +463,31 @@ static void spamassassin_create_widget_func(PrefsPage * _page,
        gtk_widget_set_size_request(whitelist_ab_folder_combo, 100, -1);
        gtk_box_pack_start (GTK_BOX (hbox_whitelist), whitelist_ab_folder_combo, TRUE, TRUE, 0);
 
-       whitelist_ab_select_btn = gtk_button_new_with_label(_("Select ..."));
+       whitelist_ab_select_btn = gtk_button_new_with_label(_("Select..."));
        gtk_widget_show (whitelist_ab_select_btn);
        gtk_box_pack_start (GTK_BOX (hbox_whitelist), whitelist_ab_select_btn, FALSE, FALSE, 0);
        CLAWS_SET_TIP(whitelist_ab_select_btn,
                        _("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_NEW_ADDRBOOK
+#ifndef USE_ALT_ADDRBOOK
        SET_TOGGLE_SENSITIVITY(whitelist_ab_checkbtn, whitelist_ab_select_btn);
 #endif
        config = spamassassin_get_config();
 
        g_signal_connect(G_OBJECT(save_spam_folder_select), "clicked",
                        G_CALLBACK(foldersel_cb), page);
-#ifndef USE_NEW_ADDRBOOK
+#ifndef USE_ALT_ADDRBOOK
        g_signal_connect(G_OBJECT (whitelist_ab_select_btn), "clicked",
                         G_CALLBACK(spamassassin_whitelist_ab_select_cb), page);
 #else
@@ -494,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);
@@ -511,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;
@@ -528,7 +552,6 @@ static void spamassassin_create_widget_func(PrefsPage * _page,
                gtk_list_store_set(store, &iter,
                                   0, gettext(transports[i].name),
                                   1, &transports[i], -1);
-
                if (config->transport == transports[i].transport) {
                        show_transport(page, &transports[i]);
                        active = i;
@@ -600,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));