Add filter in folder view for showing only mailboxes
authorJose Dapena Paz <jdapena@igalia.com>
Mon, 2 Mar 2009 15:41:55 +0000 (15:41 +0000)
committerJose Dapena Paz <jdapena@igalia.com>
Mon, 2 Mar 2009 15:41:55 +0000 (15:41 +0000)
pmo-trunk-r7750

src/widgets/modest-folder-view.c
src/widgets/modest-folder-view.h

index ab6e1b6..acf572f 100644 (file)
@@ -1966,6 +1966,20 @@ filter_row (GtkTreeModel *model, GtkTreeIter *iter, gpointer data)
                }
        }
 
+       if (retval && (priv->filter & MODEST_FOLDER_VIEW_FILTER_SHOW_ONLY_MAILBOXES)) {
+               /* A mailbox is a fake folder with an @ in the middle of the name */
+               if (!TNY_IS_FOLDER (instance) ||
+                   !(tny_folder_get_caps (TNY_FOLDER (instance)) & TNY_FOLDER_CAPS_NOSELECT)) {
+                       return FALSE;
+               } else {
+                       const gchar *folder_name;
+                       folder_name = tny_folder_get_name (TNY_FOLDER (instance));
+                       if (!folder_name || strchr (folder_name, '@') == NULL)
+                               return FALSE;
+               }
+               
+       }
+
        if (retval && (priv->filter & MODEST_FOLDER_VIEW_FILTER_CAN_HAVE_FOLDERS)) {
                if (TNY_IS_FOLDER (instance)) {
                        /* Check folder rules */
index 80d2c02..3d30402 100644 (file)
@@ -66,6 +66,7 @@ typedef enum _ModestFolderViewFilter {
        MODEST_FOLDER_VIEW_FILTER_HIDE_ACCOUNTS = 1 << 5,
        MODEST_FOLDER_VIEW_FILTER_HIDE_FOLDERS = 1 << 6,
        MODEST_FOLDER_VIEW_FILTER_HIDE_LOCAL_FOLDERS = 1 << 7,
+       MODEST_FOLDER_VIEW_FILTER_SHOW_ONLY_MAILBOXES = 1<< 8,
 } ModestFolderViewFilter;
 
 typedef struct _ModestFolderView      ModestFolderView;