/*
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2006 Hiroyuki Yamamoto and the Sylpheed-Claws team
+ * Copyright (C) 1999-2007 Hiroyuki Yamamoto and the Claws Mail team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
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,
+ FOLDER_RENAME_FOLDERITEM = 1 << 5
} FolderUpdateFlags;
typedef enum
MsgInfoList *msglist,
GRelation *msgflags);
+ /* Sets batch mode for a FolderItem. It means that numerous flags updates
+ * could follow, and the FolderClass implementation can cache them in order
+ * to process them later when set_false will be called again with the
+ * batch parameter set to FALSE.
+ */
void (*set_batch) (Folder *folder,
FolderItem *item,
gboolean batch);
+ /* Called when switching offline or asking for synchronisation. the imple
+ * mentation should do what's necessary to be able to read mails present
+ * in the FolderItem at this time with no network connectivity.
+ */
void (*synchronise) (FolderItem *item);
+
+ /* Passed from claws-mail --subscribe scheme://uri. Implementations
+ * should check if they handle this type of URI, and return TRUE in this
+ * case after having subscribed it.
+ */
gboolean (*subscribe) (Folder *folder,
const gchar *uri);
+
+ /* Gets the preferred sort key and type for a folderclass. */
+ void (*get_sort_type) (Folder *folder,
+ FolderSortKey *sort_key,
+ FolderSortType *sort_type);
+
+ /* Copies internal FolderItem data from one folderItem to another. Used
+ * when moving folders (this move is in reality a folder creation, content
+ * move, folder delettion).
+ */
+ void (*copy_private_data) (Folder *folder,
+ FolderItem *src,
+ FolderItem *dest);
};
struct _FolderItem
/* for faster search of special parents */
SpecialFolderItemType parent_stype;
gboolean processing_pending;
+ gboolean scanning;
};
struct _PersistPrefs
gint folder_read_list (void);
void folder_write_list (void);
void folder_scan_tree (Folder *folder, gboolean rebuild);
+void folder_fast_scan_tree (Folder *folder);
FolderItem *folder_create_folder(FolderItem *parent, const gchar *name);
gint folder_item_rename (FolderItem *item, gchar *newname);
void folder_update_op_count (void);
gint folder_item_open (FolderItem *item);
gint folder_item_close (FolderItem *item);
gint folder_item_scan (FolderItem *item);
+gint folder_item_scan_full (FolderItem *item,
+ gboolean filtering);
gint folder_item_syncronize_flags (FolderItem *item);
void folder_item_scan_foreach (GHashTable *table);
MsgInfo *folder_item_get_msginfo (FolderItem *item,
gboolean remove_source);
gint folder_item_move_to (FolderItem *src,
FolderItem *dest,
- FolderItem **new_item);
+ FolderItem **new_item,
+ gboolean copy);
gint folder_item_move_msg (FolderItem *dest,
MsgInfo *msginfo);
gint folder_item_move_msgs (FolderItem *dest,
(GHashTable *pptable, const char *name);
void folder_item_restore_persist_prefs (FolderItem *item, GHashTable *pptable);
-void folder_clean_cache_memory (void);
+void folder_clean_cache_memory (FolderItem *protected_item);
void folder_clean_cache_memory_force (void);
void folder_item_write_cache (FolderItem *item);
void folder_item_set_default_flags (FolderItem *dest, MsgFlags *flags);
void (*after_proc_func)(gpointer data),
gpointer data);
gboolean folder_subscribe (const gchar *uri);
+gboolean folder_have_mailbox (void);
+gboolean folder_item_free_cache (FolderItem *item, gboolean force);
+void folder_item_change_type (FolderItem *item,
+ SpecialFolderItemType newtype);
+gboolean folder_get_sort_type (Folder *folder,
+ FolderSortKey *sort_key,
+ FolderSortType *sort_type);
+
#endif /* __FOLDER_H__ */