* Removed some comments
authorSergio Villar Senin <svillar@igalia.com>
Thu, 12 Jul 2007 11:16:36 +0000 (11:16 +0000)
committerSergio Villar Senin <svillar@igalia.com>
Thu, 12 Jul 2007 11:16:36 +0000 (11:16 +0000)
* Fixes NB#63055
* Added query capabilities to the get_folders method of our local account store
* Added the name Outbox for the local merged folder with the same name

pmo-trunk-r2723

src/modest-local-folder-info.c
src/modest-mail-operation.c
src/modest-tny-local-folders-account.c
src/modest-ui-dimming-rules.c
src/widgets/modest-folder-view.c

index 9c646a7..60bf668 100644 (file)
@@ -41,7 +41,8 @@ typedef struct {
 const ModestLocalFolder ModestLocalFolderMap[] = {
        { TNY_FOLDER_TYPE_UNKNOWN,  "<unknown>",  N_("<Unknown>")},
        { TNY_FOLDER_TYPE_NORMAL,   "<normal>",   N_("<Normal>")},
-       { TNY_FOLDER_TYPE_INBOX,    "inbox",      N_("mcen_me_folder_inbox")},
+       /* There is no special Inbox folder for local accounts */
+/*     { TNY_FOLDER_TYPE_INBOX,    "inbox",      N_("mcen_me_folder_inbox")}, */
        { TNY_FOLDER_TYPE_OUTBOX,   "outbox",     N_("mcen_me_folder_outbox")},
        { TNY_FOLDER_TYPE_TRASH,    "trash",      N_("Trash")},
        { TNY_FOLDER_TYPE_JUNK,     "junk",       N_("Junk")},
index de2b313..8e94e38 100644 (file)
@@ -1641,8 +1641,6 @@ transfer_folder_cb (TnyFolder *folder,
        /* Free */
        g_object_unref (helper->mail_op);
        g_slice_free   (XFerMsgAsyncHelper, helper);
-       g_object_unref (folder);
-       g_object_unref (into);
 }
 
 void
@@ -1693,10 +1691,6 @@ modest_mail_operation_xfer_folder (ModestMailOperation *self,
                /* Notify the queue */
                modest_mail_operation_notify_end (self);
        } else {
-               /* Pick references for async calls */
-               g_object_ref (folder);
-               g_object_ref (parent);
-
                /* Create the helper */
                helper = g_slice_new0 (XFerMsgAsyncHelper);
                helper->mail_op = g_object_ref(self);
index 400391b..2f176f7 100644 (file)
@@ -145,6 +145,52 @@ modest_tny_local_folders_account_add_extra_folder (ModestTnyLocalFoldersAccount
        g_object_ref (folder);
 }
 
+static gboolean 
+modest_tny_local_folders_account_query_passes (TnyFolderStoreQuery *query, TnyFolder *folder)
+{
+       gboolean retval = FALSE;
+
+       if (query && (tny_list_get_length (tny_folder_store_query_get_items (query)) > 0))
+       {
+               TnyList *items = tny_folder_store_query_get_items (query);
+               TnyIterator *iterator;
+               iterator = tny_list_create_iterator (items);
+
+               while (!tny_iterator_is_done (iterator))
+               {
+                       TnyFolderStoreQueryItem *item = (TnyFolderStoreQueryItem*) tny_iterator_get_current (iterator);
+                       TnyFolderStoreQueryOption options = tny_folder_store_query_item_get_options (item);
+                       regex_t *regex = tny_folder_store_query_item_get_regex (item);
+
+                       if ((options & TNY_FOLDER_STORE_QUERY_OPTION_SUBSCRIBED) &&
+                           tny_folder_is_subscribed (folder))
+                               retval = TRUE;
+
+                       if ((options & TNY_FOLDER_STORE_QUERY_OPTION_UNSUBSCRIBED) &&
+                           !(tny_folder_is_subscribed (folder)))
+                               retval = TRUE;
+
+                       if (regex && options & TNY_FOLDER_STORE_QUERY_OPTION_MATCH_ON_NAME)
+                           if (regexec (regex, tny_folder_get_name (folder), 0, NULL, 0) == 0)
+                               retval = TRUE;
+
+                       if (regex && options & TNY_FOLDER_STORE_QUERY_OPTION_MATCH_ON_ID)
+                           if (regexec (regex, tny_folder_get_id (folder), 0, NULL, 0) == 0)
+                               retval = TRUE;
+
+                       g_object_unref (G_OBJECT (item));
+                       tny_iterator_next (iterator);
+               }
+                
+               g_object_unref (G_OBJECT (iterator));    
+               g_object_unref (G_OBJECT (items));
+       } else
+               retval = TRUE;
+
+       return retval;
+}
+
+
 static void
 get_folders (TnyFolderStore *self, TnyList *list, TnyFolderStoreQuery *query, GError **err)
 {
@@ -156,14 +202,13 @@ get_folders (TnyFolderStore *self, TnyList *list, TnyFolderStoreQuery *query, GE
                MODEST_TNY_LOCAL_FOLDERS_ACCOUNT_GET_CLASS (self));
        parent_class->get_folders_func (self, list, query, err);
        
-       /* Add our extra folders: */
+       /* Add our extra folders only if it passes the query */
        GSList *iter = priv->list_extra_folders;
-       while (iter)
-       {
+       while (iter) {
                TnyFolder *folder = TNY_FOLDER (iter->data);
 
-               if (folder)
-                       tny_list_append (list, G_OBJECT (folder));
+               if (folder && modest_tny_local_folders_account_query_passes (query, folder))
+                       tny_list_prepend (list, G_OBJECT (folder));
                        
                iter = g_slist_next (iter);
        }
@@ -225,7 +270,7 @@ void modest_tny_local_folders_account_add_merged_outbox_folders (ModestTnyLocalF
        
        /* All per-account outbox folders are merged into one folders
         * so that they appear as one outbox to the user: */
-       TnyMergeFolder *merged_outbox = TNY_MERGE_FOLDER (tny_merge_folder_new());
+       TnyMergeFolder *merged_outbox = TNY_MERGE_FOLDER (tny_merge_folder_new(_("mcen_me_folder_outbox")));
        
        /* Set type to outbox (NB#61580) */
        tny_merge_folder_set_folder_type (merged_outbox, TNY_FOLDER_TYPE_OUTBOX);
index adfd3a7..fac5d9d 100644 (file)
@@ -1346,10 +1346,7 @@ _folder_is_any_of_type (TnyFolder *folder,
        g_return_val_if_fail (TNY_IS_FOLDER(folder), FALSE);
 
        /* Get folder type */
-       if (modest_tny_folder_is_local_folder (folder))
-               folder_type = modest_tny_folder_get_local_folder_type (folder);         
-       else 
-               folder_type = modest_tny_folder_guess_folder_type (folder);             
+       folder_type = modest_tny_folder_guess_folder_type (folder);
        
        /* Check foler type */
        for (i=0; i < ntypes; i++) {
index 5a22557..237f5de 100644 (file)
@@ -130,7 +130,9 @@ static gboolean     _clipboard_set_selected_data (ModestFolderView *folder_view,
 
 static void         _clear_hidding_filter (ModestFolderView *folder_view);
 
-static void          on_row_changed_maybe_select_folder (GtkTreeModel *tree_model, GtkTreePath  *path, GtkTreeIter  *iter,
+static void          on_row_changed_maybe_select_folder (GtkTreeModel     *tree_model, 
+                                                        GtkTreePath      *path, 
+                                                        GtkTreeIter      *iter,
                                                         ModestFolderView *self);
 
 enum {
@@ -937,7 +939,7 @@ filter_row (GtkTreeModel *model,
        guint i;
        gboolean found = FALSE;
        gboolean cleared = FALSE;
-       
+
        g_return_val_if_fail (MODEST_IS_FOLDER_VIEW (data), FALSE);
        priv = MODEST_FOLDER_VIEW_GET_PRIVATE (data);
 
@@ -975,8 +977,6 @@ filter_row (GtkTreeModel *model,
                                retval = FALSE;
                }
        }
-       
-       /* The virtual local-folders folder store is also shown by default. */
 
        /* Check hiding (if necessary) */
        cleared = modest_email_clipboard_cleared (priv->clipboard);            
@@ -1070,7 +1070,7 @@ modest_folder_view_update_model (ModestFolderView *self,
                                              GTK_SORT_ASCENDING);
        gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (sortable),
                                         TNY_GTK_FOLDER_STORE_TREE_MODEL_NAME_COLUMN,
-                                cmp_rows, NULL, NULL);
+                                        cmp_rows, NULL, NULL);
 
        /* Create filter model */
        filter_model = gtk_tree_model_filter_new (sortable, NULL);
@@ -1078,13 +1078,6 @@ modest_folder_view_update_model (ModestFolderView *self,
                                                filter_row,
                                                self,
                                                NULL);
-/*     if (priv->style == MODEST_FOLDER_VIEW_STYLE_SHOW_ONE) { */
-/*             filter_model = gtk_tree_model_filter_new (sortable, NULL); */
-/*             gtk_tree_model_filter_set_visible_func (GTK_TREE_MODEL_FILTER (filter_model), */
-/*                                                     filter_row, */
-/*                                                     self, */
-/*                                                     NULL); */
-/*     } */
 
        /* Set new model */
        gtk_tree_view_set_model (GTK_TREE_VIEW(self), filter_model);
@@ -1093,16 +1086,9 @@ modest_folder_view_update_model (ModestFolderView *self,
        g_signal_connect (G_OBJECT(filter_model), "row-inserted",
                          (GCallback)on_row_changed_maybe_select_folder, self);
 
-       
-
-/*     gtk_tree_view_set_model (GTK_TREE_VIEW(self),  */
-/*                              (filter_model) ? filter_model : sortable); */
 
        g_object_unref (model);
-       g_object_unref (filter_model);
-/*     if (filter_model) */
-/*             g_object_unref (filter_model); */
-                       
+       g_object_unref (filter_model);          
        g_object_unref (sortable);
 
        /* Force a reselection of the INBOX next time the widget is shown */
@@ -1560,12 +1546,13 @@ drag_and_drop_from_folder_view (GtkTreeModel     *source_model,
                                           helper->delete_source,
                                           NULL,
                                           NULL);
+
+               g_object_unref (G_OBJECT (mail_op));    
        }
        
        /* Frees */
        g_object_unref (G_OBJECT (parent_folder));
        g_object_unref (G_OBJECT (folder));
-       g_object_unref (G_OBJECT (mail_op));
 }
 
 /*
@@ -2125,10 +2112,8 @@ on_row_changed_maybe_select_folder (GtkTreeModel *tree_model, GtkTreePath  *path
        if (!MODEST_IS_FOLDER_VIEW(self))
                return;
        
-       g_return_if_fail (MODEST_IS_FOLDER_VIEW (self));
        priv = MODEST_FOLDER_VIEW_GET_PRIVATE (self);
        
-       
        if (priv->folder_to_select) {
                
                if (!modest_folder_view_select_folder (self, priv->folder_to_select,
@@ -2144,10 +2129,10 @@ on_row_changed_maybe_select_folder (GtkTreeModel *tree_model, GtkTreePath  *path
 
                        gtk_tree_path_free (path);
                
-               } 
+               }
                g_object_unref (priv->folder_to_select);
                priv->folder_to_select = NULL;
-       } 
+       }
 }