/*
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2003 Hiroyuki Yamamoto
+ * Copyright (C) 1999-2006 Hiroyuki Yamamoto and the Sylpheed-Claws 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
*
* 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__
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
FOLDER_TREE_CHANGED = 1 << 2,
FOLDER_ADD_FOLDERITEM = 1 << 3,
FOLDER_REMOVE_FOLDERITEM = 1 << 4,
+ FOLDER_RENAME_FOLDERITEM = 1 << 5
} FolderUpdateFlags;
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,
void (*set_batch) (Folder *folder,
FolderItem *item,
gboolean batch);
+ void (*synchronise) (FolderItem *item);
+ gboolean (*subscribe) (Folder *folder,
+ const gchar *uri);
+ void (*get_sort_type) (Folder *folder,
+ FolderSortKey *sort_key,
+ FolderSortType *sort_type);
};
struct _FolderItem
gint unread_msgs;
gint total_msgs;
gint unreadmarked_msgs;
+ gint marked_msgs;
gint last_num;
gpointer data;
FolderItemPrefs * prefs;
+
+ /* for faster search of special parents */
+ SpecialFolderItemType parent_stype;
+ gboolean processing_pending;
+ gboolean scanning;
};
struct _PersistPrefs
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);
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);
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,
(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 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);
+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__ */