/*
* 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_ICON = 1 << 5
+ F_ITEM_UPDATE_NAME = 1 << 4
} FolderItemUpdateFlags;
typedef void (*FolderUIFunc) (Folder *folder,
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)
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
*
FolderItem *item,
MsgInfoList *msglist,
GRelation *msgflags);
+
+ 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;
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 */
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,
/* 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,
(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);
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);
+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__ */