make folder properties persistent so they are properly restored after rescanning...
[claws.git] / src / folder.h
index 41aa76a69ccfeb99946f1f67a02863e009a8acc7..aaee65bab383dd23f75e0559b7b74ddc3638c9ae 100644 (file)
@@ -33,10 +33,11 @@ typedef struct _IMAPFolder  IMAPFolder;
 typedef struct _NewsFolder     NewsFolder;
 typedef struct _FolderItem     FolderItem;
 
+#include "prefs_folder_item.h"
+
 #include "prefs_account.h"
 #include "session.h"
 #include "procmsg.h"
-#include "prefs_folder_item.h"
 
 #define FOLDER(obj)            ((Folder *)obj)
 #define FOLDER_TYPE(obj)       (FOLDER(obj)->type)
@@ -216,11 +217,12 @@ struct _FolderItem
        gint last_num;
 
        /* 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       */
+       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 hide_read_msgs : 1; /* hide read messages   */
+       guint ret_rcpt       : 1; /* return receipt       */
 
        gint op_count;
 
@@ -233,6 +235,14 @@ struct _FolderItem
        PrefsFolderItem * prefs;
 };
 
+typedef struct {
+       guint   collapsed       : 1;
+       guint   threaded        : 1;
+       guint   hide_read_msgs  : 1; /* CLAWS */
+       guint   ret_rcpt        : 1; /* CLAWS */
+} PersistPrefs;
+
+
 Folder     *folder_new         (FolderType      type,
                                 const gchar    *name,
                                 const gchar    *path);
@@ -265,7 +275,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_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);
@@ -275,6 +288,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);
@@ -294,6 +308,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);
@@ -302,4 +318,11 @@ gchar *folder_item_get_mark_file   (FolderItem     *item);
 gchar * folder_item_get_identifier(FolderItem * item);
 FolderItem * folder_find_item_from_identifier(const gchar *identifier);
 
+GHashTable *folder_persist_prefs_new   (Folder *folder);
+void folder_persist_prefs_free         (GHashTable *pptable);
+const PersistPrefs *folder_get_persist_prefs
+                                       (GHashTable *pptable, const char *name);
+
+void folder_item_restore_persist_prefs (FolderItem *item, GHashTable *pptable);
+
 #endif /* __FOLDER_H__ */