2005-10-08 [colin] 1.9.15cvs21
[claws.git] / src / folder.h
index 5534b46bea89e51ec80f356685e5ef2294ee88d8..834320ecca7db140a9a0568852dc017b51b30ba8 100644 (file)
@@ -16,7 +16,7 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  */
 
 #ifndef __FOLDER_H__
@@ -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,
@@ -572,6 +572,7 @@ struct _FolderClass
        void            (*set_batch)            (Folder         *folder,
                                                 FolderItem     *item,
                                                 gboolean        batch);
+       void            (*synchronise)          (FolderItem     *item);
 };
 
 struct _FolderItem
@@ -623,6 +624,10 @@ struct _FolderItem
        gpointer data;
 
        FolderItemPrefs * prefs;
+       
+       /* for faster search of special parents */
+       SpecialFolderItemType parent_stype;
+       gboolean processing_pending;
 };
 
 struct _PersistPrefs
@@ -696,7 +701,7 @@ void   folder_remove                (Folder         *folder);
 GList *folder_get_list         (void);
 gint   folder_read_list                (void);
 void   folder_write_list       (void);
-void   folder_scan_tree                (Folder *folder);
+void   folder_scan_tree                (Folder *folder, gboolean rebuild);
 FolderItem *folder_create_folder(FolderItem    *parent, const gchar *name);
 gint   folder_item_rename      (FolderItem *item, gchar *newname);
 void   folder_update_op_count          (void);
@@ -805,4 +810,10 @@ 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);
+void folder_item_process_open          (FolderItem *item,
+                                        void (*before_proc_func)(gpointer data),
+                                        void (*after_proc_func)(gpointer data),
+                                        gpointer data);
 #endif /* __FOLDER_H__ */