/*
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2002 Hiroyuki Yamamoto
+ * Copyright (C) 1999-2003 Hiroyuki Yamamoto
*
* 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
#include <glib.h>
#include <time.h>
-typedef struct _Folder Folder;
-typedef struct _FolderClass FolderClass;
-typedef struct _LocalFolder LocalFolder;
-typedef struct _RemoteFolder RemoteFolder;
-#if 0
-typedef struct _MaildirFolder MaildirFolder;
-#endif
-typedef struct _FolderItem FolderItem;
+typedef struct _Folder Folder;
+typedef struct _FolderClass FolderClass;
+typedef struct _FolderItem FolderItem;
typedef struct _FolderUpdateData FolderUpdateData;
typedef struct _FolderItemUpdateData FolderItemUpdateData;
+typedef struct _PersistPrefs PersistPrefs;
#define FOLDER(obj) ((Folder *)obj)
-#define FOLDER_TYPE(obj) (FOLDER(obj)->klass->type)
-
#define FOLDER_CLASS(obj) (FOLDER(obj)->klass)
-#define LOCAL_FOLDER(obj) ((LocalFolder *)obj)
-#define REMOTE_FOLDER(obj) ((RemoteFolder *)obj)
+#define FOLDER_TYPE(obj) (FOLDER(obj)->klass->type)
#define FOLDER_IS_LOCAL(obj) (FOLDER_TYPE(obj) == F_MH || \
FOLDER_TYPE(obj) == F_MBOX || \
FOLDER_TYPE(obj) == F_MAILDIR)
-#if 0
-#define MAILDIR_FOLDER(obj) ((MaildirFolder *)obj)
-#endif
-
#define FOLDER_ITEM(obj) ((FolderItem *)obj)
#define FOLDER_UPDATE_HOOKLIST "folder_update"
typedef enum
{
FOLDER_TREE_CHANGED = 1 << 0,
-/*
- maybe enhance with:
- FOLDER_NEW_FOLDERITEM
- FOLDER_REMOVE_FOLDERITEM
-*/
+ FOLDER_NEW_FOLDERITEM = 1 << 1,
+ FOLDER_REMOVE_FOLDERITEM = 1 << 2,
} FolderUpdateFlags;
typedef enum
typedef void (*FolderItemFunc) (FolderItem *item,
gpointer data);
+
#include "folder_item_prefs.h"
-#include "prefs_account.h"
-#include "session.h"
#include "procmsg.h"
#include "msgcache.h"
+#include "xml.h"
+#include "prefs_account.h"
struct _Folder
{
Folder *(*new_folder) (const gchar *name,
const gchar *path);
void (*destroy_folder) (Folder *folder);
- void (*scan_tree) (Folder *folder);
+ gint (*scan_tree) (Folder *folder);
gint (*create_tree) (Folder *folder);
/* FolderItem functions */
FolderItem *(*item_new) (Folder *folder);
- void (*item_destroy) (Folder *folder,
+ void (*item_destroy) (Folder *folder,
+ FolderItem *item);
+ void (*item_set_xml) (Folder *folder,
+ FolderItem *item,
+ XMLTag *tag);
+ XMLTag *(*item_get_xml) (Folder *folder,
FolderItem *item);
gchar *(*item_get_path) (Folder *folder,
FolderItem *item);
FolderItem *(*create_folder) (Folder *folder,
FolderItem *parent,
const gchar *name);
- gint (*rename_folder) (Folder *folder,
+ gint (*rename_folder) (Folder *folder,
FolderItem *item,
const gchar *name);
- gint (*remove_folder) (Folder *folder,
+ gint (*remove_folder) (Folder *folder,
FolderItem *item);
- gint (*close) (Folder *folder,
+ gint (*close) (Folder *folder,
FolderItem *item);
- gint (*get_num_list) (Folder *folder,
+ gint (*get_num_list) (Folder *folder,
FolderItem *item,
GSList **list,
gboolean *old_uids_valid);
MsgPermFlags newflags);
};
-struct _LocalFolder
-{
- Folder folder;
-
- gchar *rootpath;
-};
-
-struct _RemoteFolder
-{
- Folder folder;
-
- Session *session;
-};
-
-#if 0
-struct _MaildirFolder
-{
- LocalFolder lfolder;
-};
-#endif
-
struct _FolderItem
{
SpecialFolderItemType stype;
FolderSortKey sort_key;
FolderSortType sort_type;
+ GNode *node;
+
FolderItem *parent;
Folder *folder;
FolderItemPrefs * prefs;
};
-typedef struct {
+struct _PersistPrefs
+{
FolderSortKey sort_key;
FolderSortType sort_type;
guint collapsed : 1;
guint threaded : 1;
guint hide_read_msgs : 1; /* CLAWS */
guint ret_rcpt : 1; /* CLAWS */
-} PersistPrefs;
+};
struct _FolderUpdateData
{
Folder *folder;
FolderUpdateFlags update_flags;
-/*
- FolderItem *item
-*/
+ FolderItem *item;
};
struct _FolderItemUpdateData
Folder *folder_new (FolderClass *type,
const gchar *name,
const gchar *path);
-void folder_local_folder_init (Folder *folder,
- const gchar *name,
- const gchar *path);
-void folder_remote_folder_init (Folder *folder,
- const gchar *name,
- const gchar *path);
+void folder_init (Folder *folder,
+ const gchar *name);
void folder_destroy (Folder *folder);
-void folder_local_folder_destroy (LocalFolder *lfolder);
-void folder_remote_folder_destroy(RemoteFolder *rfolder);
-
-FolderItem *folder_item_new (Folder *folder,
- const gchar *name,
- const gchar *path);
-void folder_item_append (FolderItem *parent,
- FolderItem *item);
-void folder_item_remove (FolderItem *item);
-void folder_item_destroy (FolderItem *item);
+
+XMLTag *folder_item_get_attrs (Folder *folder,
+ FolderItem *item);
+
+FolderItem *folder_item_new (Folder *folder,
+ const gchar *name,
+ const gchar *path);
+void folder_item_append (FolderItem *parent,
+ FolderItem *item);
+void folder_item_remove (FolderItem *item);
+void folder_item_remove_children (FolderItem *item);
+void folder_item_destroy (FolderItem *item);
void folder_set_ui_func (Folder *folder,
FolderUIFunc func,