balsa r7864 - in trunk: . src



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]