0.8.6claws51
[claws.git] / src / folder.h
index 67961eae54619f85f6d53ba1aef1c625f86b22a5..3472aa9d8badf151ce85a92395092f927c235784 100644 (file)
 #include <glib.h>
 #include <time.h>
 
-typedef struct _Folder         Folder;
-typedef struct _LocalFolder    LocalFolder;
-typedef struct _RemoteFolder   RemoteFolder;
+typedef struct _Folder                 Folder;
+typedef struct _LocalFolder            LocalFolder;
+typedef struct _RemoteFolder           RemoteFolder;
 #if 0
-typedef struct _MaildirFolder  MaildirFolder;
+typedef struct _MaildirFolder          MaildirFolder;
 #endif
-typedef struct _FolderItem     FolderItem;
+typedef struct _FolderItem             FolderItem;
+typedef struct _FolderItemUpdateData   FolderItemUpdateData;
 
 #include "prefs_folder_item.h"
 
@@ -54,6 +55,8 @@ typedef struct _FolderItem    FolderItem;
 
 #define FOLDER_ITEM(obj)       ((FolderItem *)obj)
 
+#define FOLDER_ITEM_UPDATE_HOOKLIST "folder_item_update"
+
 typedef enum
 {
        F_MH,
@@ -96,6 +99,15 @@ typedef enum
        SORT_DESCENDING
 } FolderSortType;
 
+typedef enum
+{
+       F_MOVE_OK,
+       F_MOVE_FAILED_DEST_IS_PARENT,
+       F_MOVE_FAILED_DEST_IS_CHILD,
+       F_MOVE_FAILED_DEST_OUTSIDE_MAILBOX,
+       F_MOVE_FAILED
+} FolderMoveStatus;
+
 typedef void (*FolderUIFunc)           (Folder         *folder,
                                         FolderItem     *item,
                                         gpointer        data);
@@ -104,9 +116,6 @@ typedef void (*FolderDestroyNotify) (Folder         *folder,
                                         gpointer        data);
 typedef void (*FolderItemFunc)         (FolderItem     *item,
                                         gpointer        data);
-typedef void (*FolderItemUpdateFunc)   (FolderItem     *item,
-                                        gboolean        contentchange,
-                                        gpointer        data);
 
 struct _Folder
 {
@@ -142,10 +151,10 @@ struct _Folder
        gchar *  (*fetch_msg)           (Folder         *folder,
                                         FolderItem     *item,
                                         gint            num);
-       MsgInfo *(*fetch_msginfo)       (Folder         *folder,
+       MsgInfo * (*get_msginfo)        (Folder         *folder,
                                         FolderItem     *item,
                                         gint            num);
-       GSList  *(*fetch_msginfos)      (Folder         *folder,
+       GSList  * (*get_msginfos)       (Folder         *folder,
                                         FolderItem     *item,
                                         GSList         *msgnum_list);
        gint     (*add_msg)             (Folder         *folder,
@@ -235,6 +244,7 @@ struct _FolderItem
        gint new;
        gint unread;
        gint total;
+       gint unreadmarked;
 
        gint last_num;
 
@@ -279,6 +289,12 @@ typedef struct {
        guint           ret_rcpt        : 1; /* CLAWS */
 } PersistPrefs;
 
+struct _FolderItemUpdateData
+{
+       FolderItem      *item;
+       gboolean         content_change;
+};
+
 Folder     *folder_new                 (FolderType      type,
                                         const gchar    *name,
                                         const gchar    *path);
@@ -320,6 +336,7 @@ void   folder_func_to_all_folders   (FolderItemFunc function,
                                         gpointer data);
 void   folder_count_total_msgs (guint          *new,
                                 guint          *unread,
+                                guint          *unreadmarked,
                                 guint          *total);
 
 Folder     *folder_find_from_path              (const gchar    *path);
@@ -347,9 +364,9 @@ gint   folder_item_open                     (FolderItem     *item);
 void   folder_item_close               (FolderItem     *item);
 gint   folder_item_scan                        (FolderItem     *item);
 void   folder_item_scan_foreach                (GHashTable     *table);
-MsgInfo *folder_item_fetch_msginfo     (FolderItem     *item,
+MsgInfo *folder_item_get_msginfo       (FolderItem     *item,
                                         gint            num);
-MsgInfo *folder_item_fetch_msginfo_by_id(FolderItem    *item,
+MsgInfo *folder_item_get_msginfo_by_msgid(FolderItem   *item,
                                         const gchar    *msgid);
 GSList *folder_item_get_msg_list       (FolderItem     *item);
 gchar *folder_item_fetch_msg           (FolderItem     *item,
@@ -357,9 +374,9 @@ gchar *folder_item_fetch_msg                (FolderItem     *item,
 gint   folder_item_add_msg             (FolderItem     *dest,
                                         const gchar    *file,
                                         gboolean        remove_source);
-FolderItem   *folder_item_move_to      (FolderItem     *src,
+gint   folder_item_move_to             (FolderItem     *src,
                                         FolderItem     *dest,
-                                        char           *error);
+                                        FolderItem    **new_item);
 gint   folder_item_move_msg            (FolderItem     *dest,
                                         MsgInfo        *msginfo);
 gint   folder_item_move_msgs_with_dest (FolderItem     *dest,
@@ -396,8 +413,5 @@ void folder_update_item                     (FolderItem *item,
 void folder_update_items_when_required (gboolean contentchange);
 void folder_update_item_recursive      (FolderItem *item,
                                         gboolean update_summary);
-gint folder_item_update_callback_register(FolderItemUpdateFunc func,
-                                         gpointer data);
-void folder_item_update_callback_unregister(gint id);
 
 #endif /* __FOLDER_H__ */