balsa r7864 - in trunk: . src
- From: PeterB svn gnome org
- To: svn-commits-list gnome org
- Subject: balsa r7864 - in trunk: . src
- Date: Fri, 22 Feb 2008 20:26:15 +0000 (GMT)
Author: PeterB
Date: Fri Feb 22 20:26:15 2008
New Revision: 7864
URL: http://svn.gnome.org/viewvc/balsa?rev=7864&view=rev
Log:
filters and views
Modified:
trunk/ChangeLog
trunk/src/filter-edit-callbacks.c
trunk/src/mailbox-conf.c
trunk/src/save-restore.c
trunk/src/save-restore.h
Modified: trunk/src/filter-edit-callbacks.c
==============================================================================
--- trunk/src/filter-edit-callbacks.c (original)
+++ trunk/src/filter-edit-callbacks.c Fri Feb 22 20:26:15 2008
@@ -48,10 +48,12 @@
extern option_list fe_search_type[4];
extern GList * fe_user_headers_list;
+#if REGULAR_EXPRESSION_FILTERING_IS_IMPLEMENTED
static void fe_add_pressed(GtkWidget * widget, gpointer throwaway);
static void fe_remove_pressed(GtkWidget * widget, gpointer throwaway);
static void fe_regexs_selection_changed(GtkTreeSelection * selection,
gpointer user_data);
+#endif /* REGULAR_EXPRESSION_FILTERING_IS_IMPLEMENTED */
static void fe_free_associated_filters(void);
static void fe_free_associated_conditions(void);
static GtkWidget *fe_date_sample(void);
@@ -242,6 +244,7 @@
/**************** Conditions *************************/
+#if REGULAR_EXPRESSION_FILTERING_IS_IMPLEMENTED
/* Callback function to fill the regex entry with the selected regex */
static void
@@ -262,6 +265,7 @@
else gtk_entry_set_text(GTK_ENTRY(fe_type_regex_entry),"");
gtk_widget_set_sensitive(fe_regex_remove_button, selected);
}
+#endif /* REGULAR_EXPRESSION_FILTERING_IS_IMPLEMENTED */
/* Helper. */
static gint
@@ -293,11 +297,16 @@
switch (type) {
case CONDITION_STRING:
+#if REGULAR_EXPRESSION_FILTERING_IS_IMPLEMENTED
case CONDITION_REGEX:
+#endif /* REGULAR_EXPRESSION_FILTERING_IS_IMPLEMENTED */
gtk_widget_show(field_frame);
break;
case CONDITION_DATE:
case CONDITION_FLAG:
+#if !REGULAR_EXPRESSION_FILTERING_IS_IMPLEMENTED
+ case CONDITION_REGEX:
+#endif /* REGULAR_EXPRESSION_FILTERING_IS_IMPLEMENTED */
gtk_widget_hide(field_frame);
default:
break;
@@ -480,9 +489,11 @@
const gchar *c_str;
gint row, col;
struct tm date;
+#if REGULAR_EXPRESSION_FILTERING_IS_IMPLEMENTED
GtkTreeModel *model =
gtk_tree_view_get_model(fe_type_regex_list);
GtkTreeIter iter;
+#endif /* REGULAR_EXPRESSION_FILTERING_IS_IMPLEMENTED */
/* Sanity checks, prevent "empty" condition */
@@ -535,12 +546,14 @@
}
break;
case CONDITION_REGEX:
+#if REGULAR_EXPRESSION_FILTERING_IS_IMPLEMENTED
if (!gtk_tree_model_get_iter_first(model, &iter)) {
balsa_information(LIBBALSA_INFORMATION_ERROR,
_("You must provide at least one "
"regular expression"));
return FALSE;
}
+#endif /* REGULAR_EXPRESSION_FILTERING_IS_IMPLEMENTED */
break;
case CONDITION_DATE:
c_str = gtk_entry_get_text(GTK_ENTRY(fe_type_date_low_entry));
@@ -629,12 +642,16 @@
static void
clear_condition_widgets()
{
+#if REGULAR_EXPRESSION_FILTERING_IS_IMPLEMENTED
GtkTreeModel *model =
gtk_tree_view_get_model(fe_type_regex_list);
+#endif /* REGULAR_EXPRESSION_FILTERING_IS_IMPLEMENTED */
gtk_entry_set_text(GTK_ENTRY(fe_type_simple_entry),"");
+#if REGULAR_EXPRESSION_FILTERING_IS_IMPLEMENTED
gtk_entry_set_text(GTK_ENTRY(fe_type_regex_entry),"");
gtk_list_store_clear(GTK_LIST_STORE(model));
+#endif /* REGULAR_EXPRESSION_FILTERING_IS_IMPLEMENTED */
gtk_entry_set_text(GTK_ENTRY(fe_type_date_low_entry),"");
gtk_entry_set_text(GTK_ENTRY(fe_type_date_high_entry),"");
}
@@ -682,8 +699,10 @@
static void
fill_condition_widgets(LibBalsaCondition* cnd)
{
+#if REGULAR_EXPRESSION_FILTERING_IS_IMPLEMENTED
GtkTreeModel *model =
gtk_tree_view_get_model(fe_type_regex_list);
+#endif /* REGULAR_EXPRESSION_FILTERING_IS_IMPLEMENTED */
gchar str[20];
struct tm date;
gint row,col;
@@ -698,7 +717,9 @@
if (cnd->type!=CONDITION_REGEX)
gtk_entry_set_text(GTK_ENTRY(fe_type_regex_entry),"");
+#if REGULAR_EXPRESSION_FILTERING_IS_IMPLEMENTED
gtk_list_store_clear(GTK_LIST_STORE(model));
+#endif /* REGULAR_EXPRESSION_FILTERING_IS_IMPLEMENTED */
gtk_notebook_set_current_page(GTK_NOTEBOOK(fe_type_notebook),
cnd->type - 1);
@@ -938,7 +959,11 @@
build_type_notebook()
{
GtkWidget *page,*frame;
+#if REGULAR_EXPRESSION_FILTERING_IS_IMPLEMENTED
GtkWidget *scroll;
+#else /* REGULAR_EXPRESSION_FILTERING_IS_IMPLEMENTED */
+ const gchar *msg;
+#endif /* REGULAR_EXPRESSION_FILTERING_IS_IMPLEMENTED */
GtkWidget *box;
GtkWidget *button, *table;
gint row,col;
@@ -986,11 +1011,12 @@
/* The regex page of the type notebook */
box = gtk_vbox_new(FALSE, 5);
+ gtk_notebook_append_page(GTK_NOTEBOOK(fe_type_notebook), box, NULL);
+
+#if REGULAR_EXPRESSION_FILTERING_IS_IMPLEMENTED
page = gtk_table_new(5, 6, FALSE);
gtk_box_pack_start_defaults(GTK_BOX(box), page);
- gtk_notebook_append_page(GTK_NOTEBOOK(fe_type_notebook), box, NULL);
-
fe_type_regex_label =
gtk_label_new_with_mnemonic(_("_One of the regular expressions matches"));
gtk_table_attach(GTK_TABLE(page),
@@ -1037,6 +1063,10 @@
fe_type_regex_entry,
0, 5, 5, 6,
GTK_FILL | GTK_SHRINK | GTK_EXPAND, GTK_SHRINK, 2, 2);
+#else /* REGULAR_EXPRESSION_FILTERING_IS_IMPLEMENTED */
+ msg = _("Filtering using regular expressions is not yet implemented.");
+ gtk_box_pack_start_defaults(GTK_BOX(box), gtk_label_new(msg));
+#endif /* REGULAR_EXPRESSION_FILTERING_IS_IMPLEMENTED */
/* The date page of the notebook */
@@ -1506,6 +1536,7 @@
set_button_sensitivities(TRUE);
}
+#if REGULAR_EXPRESSION_FILTERING_IS_IMPLEMENTED
/*
* fe_add_pressed()
*
@@ -1559,6 +1590,7 @@
gtk_tree_path_free(path);
condition_has_changed=TRUE;
} /* end fe_remove_pressed() */
+#endif /* REGULAR_EXPRESSION_FILTERING_IS_IMPLEMENTED */
/************************************************************/
/******** Functions handling filters ************************/
Modified: trunk/src/mailbox-conf.c
==============================================================================
--- trunk/src/mailbox-conf.c (original)
+++ trunk/src/mailbox-conf.c Fri Feb 22 20:26:15 2008
@@ -53,6 +53,8 @@
#include "libbalsa.h"
#include "imap-server.h"
+#include "mailbox-filter.h"
+#include "libbalsa-conf.h"
#include <glib/gi18n.h>
struct _BalsaMailboxConfView {
@@ -371,6 +373,7 @@
gint button;
GtkWidget *ask;
LibBalsaMailbox* mailbox = mbnode->mailbox;
+ gchar *url, *group;
if(BALSA_IS_MAILBOX_SPECIAL(mailbox)) {
balsa_information(
@@ -449,6 +452,9 @@
if ( button < 0)
return;
+ /* Save the mailbox URL */
+ url = g_strdup(mailbox->url ? mailbox->url : mailbox->name);
+
/* Delete it from the config file and internal nodes */
config_mailbox_delete(mailbox);
@@ -492,6 +498,18 @@
} else
balsa_mblist_mailbox_node_remove(mbnode);
update_mail_servers();
+
+ /* Clean up filters */
+ group = mailbox_filters_section_lookup(url);
+ if (group) {
+ libbalsa_conf_remove_group(group);
+ g_free(group);
+ }
+
+ /* Remove view */
+ config_view_remove(url);
+
+ g_free(url);
}
#define MCW_RESPONSE 1
Modified: trunk/src/save-restore.c
==============================================================================
--- trunk/src/save-restore.c (original)
+++ trunk/src/save-restore.c Fri Feb 22 20:26:15 2008
@@ -1830,22 +1830,33 @@
GINT_TO_POINTER(FALSE));
}
+/* Get viewByUrl prefix */
+static gchar *
+view_by_url_prefix(const gchar * url)
+{
+ gchar *url_enc;
+ gchar *prefix;
+
+ url_enc = libbalsa_urlencode(url);
+ prefix = g_strconcat(VIEW_BY_URL_SECTION_PREFIX, url_enc, NULL);
+ g_free(url_enc);
+
+ return prefix;
+}
+
/* config_views_save:
iterates over all mailbox views.
*/
static void
save_view(const gchar * url, LibBalsaMailboxView * view)
{
- gchar *url_enc;
gchar *prefix;
if (!view || (view->in_sync && view->used))
return;
view->in_sync = TRUE;
- url_enc = libbalsa_urlencode(url);
- prefix = g_strconcat(VIEW_BY_URL_SECTION_PREFIX, url_enc, NULL);
- g_free(url_enc);
+ prefix = view_by_url_prefix(url);
/* Remove the view--it will be recreated if any member needs to be
* saved. */
@@ -1911,6 +1922,15 @@
NULL);
}
+void
+config_view_remove(const gchar * url)
+{
+ gchar *prefix = view_by_url_prefix(url);
+ libbalsa_conf_remove_group(prefix);
+ g_free(prefix);
+ g_hash_table_remove(libbalsa_mailbox_view_table, url);
+}
+
static void
save_color(gchar * key, GdkColor * color)
{
Modified: trunk/src/save-restore.h
==============================================================================
--- trunk/src/save-restore.h (original)
+++ trunk/src/save-restore.h Fri Feb 22 20:26:15 2008
@@ -57,6 +57,7 @@
void config_identities_save(void);
void config_views_load(void);
void config_views_save(void);
+void config_view_remove(const gchar * url);
void config_filters_save(void);
void config_mailbox_filters_save(LibBalsaMailbox * mbox);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]