2005-09-14 [paul] 1.9.14cvs26
[claws.git] / src / folder.h
index 49d33f23842168d21a05b7b5d1e7301b7e92f612..dcd7bfcf78101d468358381fd93e30eca1603ba6 100644 (file)
@@ -95,7 +95,7 @@ typedef enum
        F_MOVE_FAILED_DEST_IS_PARENT = -1,
        F_MOVE_FAILED_DEST_IS_CHILD = -2,
        F_MOVE_FAILED_DEST_OUTSIDE_MAILBOX = -3,
-       F_MOVE_FAILED = -4,
+       F_MOVE_FAILED = -4
 } FolderItemMoveResult;
 
 typedef enum
@@ -104,7 +104,7 @@ typedef enum
        FOLDER_REMOVE_FOLDER            = 1 << 1,
        FOLDER_TREE_CHANGED             = 1 << 2,
        FOLDER_ADD_FOLDERITEM           = 1 << 3,
-       FOLDER_REMOVE_FOLDERITEM        = 1 << 4,
+       FOLDER_REMOVE_FOLDERITEM        = 1 << 4
 } FolderUpdateFlags;
 
 typedef enum
@@ -113,7 +113,7 @@ typedef enum
        F_ITEM_UPDATE_CONTENT = 1 << 1,
        F_ITEM_UPDATE_ADDMSG = 1 << 2,
        F_ITEM_UPDATE_REMOVEMSG = 1 << 3,
-       F_ITEM_UPDATE_NAME = 1 << 4,
+       F_ITEM_UPDATE_NAME = 1 << 4
 } FolderItemUpdateFlags;
 
 typedef void (*FolderUIFunc)           (Folder         *folder,
@@ -430,6 +430,11 @@ struct _FolderClass
        gchar           *(*fetch_msg)           (Folder         *folder,
                                                 FolderItem     *item,
                                                 gint            num);
+       gchar           *(*fetch_msg_full)      (Folder         *folder,
+                                                FolderItem     *item,
+                                                gint            num,
+                                                gboolean        headers,
+                                                gboolean        body);
        /**
         * Add a single message file to a folder with the given flags (if
         * flag handling is supported by the folder)
@@ -503,6 +508,10 @@ struct _FolderClass
        gint            (*remove_msg)           (Folder         *folder,
                                                 FolderItem     *item,
                                                 gint            num);
+       gint            (*remove_msgs)          (Folder         *folder,
+                                                FolderItem     *item,
+                                                MsgInfoList    *msglist,
+                                                GRelation      *relation);
        /**
         * Remove all messages in a \ c FolderItem
         *
@@ -559,6 +568,11 @@ struct _FolderClass
                                                 FolderItem     *item,
                                                 MsgInfoList    *msglist,
                                                 GRelation      *msgflags);
+       
+       void            (*set_batch)            (Folder         *folder,
+                                                FolderItem     *item,
+                                                gboolean        batch);
+       void            (*synchronise)          (FolderItem     *item);
 };
 
 struct _FolderItem
@@ -574,6 +588,7 @@ struct _FolderItem
        gint unread_msgs;
        gint total_msgs;
        gint unreadmarked_msgs;
+       gint marked_msgs;
 
        gint last_num;
 
@@ -587,6 +602,7 @@ struct _FolderItem
        guint threaded       : 1; /* threaded folder view */
        guint hide_read_msgs : 1; /* hide read messages   */
        guint ret_rcpt       : 1; /* return receipt       */
+       guint search_match   : 1;
 
        gint op_count;
        guint opened         : 1; /* opened by summary view */
@@ -608,6 +624,9 @@ struct _FolderItem
        gpointer data;
 
        FolderItemPrefs * prefs;
+       
+       /* for faster search of special parents */
+       SpecialFolderItemType parent_stype;
 };
 
 struct _PersistPrefs
@@ -687,10 +706,9 @@ gint   folder_item_rename  (FolderItem *item, gchar *newname);
 void   folder_update_op_count          (void);
 void   folder_func_to_all_folders      (FolderItemFunc function,
                                         gpointer data);
-void   folder_count_total_msgs (guint          *new_msgs,
-                                guint          *unread_msgs,
-                                guint          *unreadmarked_msgs,
-                                guint          *total_msgs);
+void folder_count_total_msgs(guint *new_msgs, guint *unread_msgs, 
+                            guint *unreadmarked_msgs, guint *marked_msgs,
+                            guint *total_msgs);
 gchar *folder_get_status       (GPtrArray      *folders,
                                 gboolean        full);
 
@@ -698,7 +716,6 @@ Folder     *folder_find_from_path           (const gchar    *path);
 Folder     *folder_find_from_name              (const gchar    *name,
                                                 FolderClass    *klass);
 FolderItem *folder_find_item_from_path         (const gchar    *path);
-FolderItem *folder_find_item_from_phys_path    (const gchar    *path);
 FolderClass *folder_get_class_from_string      (const gchar    *str);
 FolderItem *folder_find_child_item_by_name     (FolderItem     *item,
                                                 const gchar    *name);
@@ -733,6 +750,10 @@ GSList *folder_item_get_msg_list   (FolderItem     *item);
 /* return value is locale charset */
 gchar *folder_item_fetch_msg           (FolderItem     *item,
                                         gint            num);
+gchar *folder_item_fetch_msg_full      (FolderItem     *item,
+                                        gint            num, 
+                                        gboolean        get_headers,
+                                        gboolean        get_body);
 gint   folder_item_fetch_all_msg       (FolderItem     *item);
 gint   folder_item_add_msg             (FolderItem     *dest,
                                         const gchar    *file,
@@ -774,6 +795,7 @@ const PersistPrefs *folder_get_persist_prefs
 
 void folder_item_restore_persist_prefs (FolderItem *item, GHashTable *pptable);
 void folder_clean_cache_memory         (void);
+void folder_clean_cache_memory_force   (void);
 void folder_item_write_cache           (FolderItem *item);
 void folder_item_set_default_flags     (FolderItem *dest, MsgFlags *flags);
 
@@ -785,5 +807,9 @@ void folder_item_update_recursive   (FolderItem *item,
                                         FolderItemUpdateFlags update_flags);
 void folder_item_update_freeze         (void);
 void folder_item_update_thaw           (void);
+void folder_item_set_batch             (FolderItem *item, gboolean batch);
+gboolean folder_has_parent_of_type     (FolderItem *item, SpecialFolderItemType type);
+void folder_synchronise                        (Folder *folder);
+gboolean folder_want_synchronise       (Folder *folder);
 
 #endif /* __FOLDER_H__ */