diff options
author | Srinivasa Ragavan <sragavan@src.gnome.org> | 2007-04-03 17:12:29 +0800 |
---|---|---|
committer | Srinivasa Ragavan <sragavan@src.gnome.org> | 2007-04-03 17:12:29 +0800 |
commit | 8a5e6ecc960889f624419b0e88dbb231a4b667cc (patch) | |
tree | 7f653be6e7e6fa6d0dafee82183bca147f3f6741 | |
parent | 8de35f87c2ba48047d8677f4035c9415a500f6d8 (diff) | |
download | gsoc2013-evolution-8a5e6ecc960889f624419b0e88dbb231a4b667cc.tar.gz gsoc2013-evolution-8a5e6ecc960889f624419b0e88dbb231a4b667cc.tar.zst gsoc2013-evolution-8a5e6ecc960889f624419b0e88dbb231a4b667cc.zip |
Committing reworked SA with options in the plugin.
svn path=/trunk/; revision=33366
-rw-r--r-- | plugins/sa-junk-plugin/ChangeLog | 9 | ||||
-rw-r--r-- | plugins/sa-junk-plugin/em-junk-filter.c | 45 | ||||
-rw-r--r-- | plugins/sa-junk-plugin/org-gnome-sa-junk-plugin.eplug.xml | 14 |
3 files changed, 65 insertions, 3 deletions
diff --git a/plugins/sa-junk-plugin/ChangeLog b/plugins/sa-junk-plugin/ChangeLog index 24278d53b3..e55b01c320 100644 --- a/plugins/sa-junk-plugin/ChangeLog +++ b/plugins/sa-junk-plugin/ChangeLog @@ -1,3 +1,12 @@ +2007-04-03 Srinivasa Ragavan <sragavan@novell.com> + + Added few more plugin callbacks and moved the UI options from core + mail to plugin. + + * em-junk-filter.c: (em_junk_sa_validate_binary), + (use_remote_tests_cb), (org_gnome_sa_use_remote_tests): + * org-gnome-sa-junk-plugin.eplug.xml: + 2007-04-03 Matthew Barnes <mbarnes@redhat.com> * em-junk-filter.c (em_junk_sa_get_name): diff --git a/plugins/sa-junk-plugin/em-junk-filter.c b/plugins/sa-junk-plugin/em-junk-filter.c index 68ab67472b..ad5cd3c334 100644 --- a/plugins/sa-junk-plugin/em-junk-filter.c +++ b/plugins/sa-junk-plugin/em-junk-filter.c @@ -47,6 +47,9 @@ #include <mail/em-utils.h> #include <e-util/e-mktemp.h> +#include <gtk/gtk.h> +#include "mail/em-config.h" + #include <gconf/gconf-client.h> #define d(x) (camel_debug("junk")?(x):0) @@ -62,6 +65,8 @@ gboolean em_junk_sa_check_junk (EPlugin *ep, EMJunkHookTarget *target); void em_junk_sa_report_junk (EPlugin *ep, EMJunkHookTarget *target); void em_junk_sa_report_non_junk (EPlugin *ep, EMJunkHookTarget *target); void em_junk_sa_commit_reports (EPlugin *ep, EMJunkHookTarget *target); +gboolean em_junk_sa_validate_binary (EPlugin *ep, EMJunkHookTarget *target); + static void em_junk_sa_init (void); static void em_junk_sa_finalize (void); static void em_junk_sa_kill_spamd (void); @@ -709,6 +714,12 @@ em_junk_sa_commit_reports (EPlugin *ep, EMJunkHookTarget *target) } } +gboolean +em_junk_sa_validate_binary (EPlugin *ep, EMJunkHookTarget *target) +{ + return em_junk_sa_is_available (); +} + static void em_junk_sa_setting_notify(GConfClient *gconf, guint cnxn_id, GConfEntry *entry, void *data) { @@ -815,3 +826,37 @@ em_junk_sa_finalize (void) g_object_unref(em_junk_sa_gconf); em_junk_sa_kill_spamd (); } + +static void +use_remote_tests_cb (GtkWidget *widget, gpointer data) +{ + gboolean active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)); + gconf_client_set_bool (em_junk_sa_gconf, data, active, NULL); +} + +GtkWidget * +org_gnome_sa_use_remote_tests (struct _EPlugin *epl, struct _EConfigHookItemFactoryData *data) +{ + GtkWidget *check, *vbox, *label; + char *text = g_strdup_printf (" <small>%s</small>", _("This will make Spamassasin more reliable, but slower")); + guint i = ((GtkTable *)data->parent)->nrows; + + if (data->old) + return data->old; + + check = gtk_check_button_new_with_mnemonic (_("I_nclude remote tests")); + label = gtk_label_new (NULL); + gtk_label_set_markup (label, text); + g_free (text); + vbox = gtk_vbox_new (FALSE, 2); + gtk_box_pack_start (vbox, check, FALSE, FALSE, 0); + gtk_box_pack_start (vbox, label, FALSE, FALSE, 0); + + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check), em_junk_sa_local_only); + g_signal_connect (GTK_TOGGLE_BUTTON (check), "toggled", G_CALLBACK (use_remote_tests_cb), "/apps/evolution/mail/junk/sa/local_only"); + gtk_table_attach((GtkTable *)data->parent, vbox, 0, 1, i, i+1, 0, 0, 0, 0); + gtk_widget_show_all (vbox); + return (GtkWidget *)vbox; +} + + diff --git a/plugins/sa-junk-plugin/org-gnome-sa-junk-plugin.eplug.xml b/plugins/sa-junk-plugin/org-gnome-sa-junk-plugin.eplug.xml index a0688f7fd9..6b2489744c 100644 --- a/plugins/sa-junk-plugin/org-gnome-sa-junk-plugin.eplug.xml +++ b/plugins/sa-junk-plugin/org-gnome-sa-junk-plugin.eplug.xml @@ -6,13 +6,21 @@ <_description>Filters junk messages using SpamAssassin. This plugin requires SpamAssassin to be installed.</_description> <author name="Vivek Jain" email="jvivek@novell.com"/> <hook class="org.gnome.evolution.mail.junk:1.0"> - <group id="EMJunk"> - <item + <group id="EMJunk" > + <item name="Spamassasin" check_junk="em_junk_sa_check_junk" report_junk="em_junk_sa_report_junk" report_non_junk="em_junk_sa_report_non_junk" - commit_reports="em_junk_sa_commit_reports"/> + commit_reports="em_junk_sa_commit_reports" + validate_binary="em_junk_sa_validate_binary"/> </group> </hook> + <!-- hook into the 'mail properties' menu --> + <hook class="org.gnome.evolution.mail.config:1.0"> + <group target="prefs" id="org.gnome.evolution.mail.prefs"> + <item type="section_table" path="40.junk/10.options" label="Spamassassin Options"/> + <item type="item_table" path="40.junk/20.options" factory="org_gnome_sa_use_remote_tests"/> + </group> + </hook> </e-plugin> </e-plugin-list> |