more revision of filtering system
[claws.git] / src / folder.h
index 306d33ed5da184d9a2afdd5fafb5ac49f68e656e..899bddef201ef8b9507fe981b1a2d3a492bad3df 100644 (file)
@@ -44,6 +44,10 @@ typedef struct _FolderItem   FolderItem;
 #define LOCAL_FOLDER(obj)      ((LocalFolder *)obj)
 #define REMOTE_FOLDER(obj)     ((RemoteFolder *)obj)
 
+#define FOLDER_IS_LOCAL(obj)   (FOLDER_TYPE(obj) == F_MH      || \
+                                FOLDER_TYPE(obj) == F_MBOX    || \
+                                FOLDER_TYPE(obj) == F_MAILDIR)
+
 #define MH_FOLDER(obj)         ((MHFolder *)obj)
 #define MBOX_FOLDER(obj)       ((MboxFolder *)obj)
 #define MAILDIR_FOLDER(obj)    ((MaildirFolder *)obj)
@@ -211,8 +215,14 @@ struct _FolderItem
 
        gint last_num;
 
-       gboolean no_sub;
-       gboolean no_select;
+       /* special flags */
+       guint no_sub    : 1; /* no child allowed?    */
+       guint no_select : 1; /* not selectable?      */
+       guint collapsed : 1; /* collapsed item       */
+       guint threaded  : 1; /* threaded folder view */
+       guint ret_rcpt  : 1; /* return receipt       */
+
+       gint op_count;
 
        FolderItem *parent;
 
@@ -255,6 +265,10 @@ void   folder_add          (Folder         *folder);
 GList *folder_get_list         (void);
 gint   folder_read_list                (void);
 void   folder_write_list       (void);
+void   folder_update_op_count          (void);
+void   folder_count_total_msgs (guint          *new,
+                                guint          *unread,
+                                guint          *total);
 
 Folder     *folder_find_from_path      (const gchar    *path);
 FolderItem *folder_find_item_from_path (const gchar    *path);
@@ -264,6 +278,7 @@ FolderItem *folder_get_default_outbox       (void);
 FolderItem *folder_get_default_draft   (void);
 FolderItem *folder_get_default_queue   (void);
 FolderItem *folder_get_default_trash   (void);
+FolderItem *folder_get_default_processing (void);
 
 gchar *folder_item_get_path            (FolderItem     *item);
 void   folder_item_scan                        (FolderItem     *item);
@@ -283,6 +298,8 @@ gint   folder_item_copy_msgs_with_dest      (FolderItem     *dest,
                                         GSList         *msglist);
 gint   folder_item_remove_msg          (FolderItem     *item,
                                         gint            num);
+gint   folder_item_remove_msgs         (FolderItem     *item,
+                                        GSList         *msglist);
 gint   folder_item_remove_all_msg      (FolderItem     *item);
 gboolean folder_item_is_msg_changed    (FolderItem     *item,
                                         MsgInfo        *msginfo);