summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
633f0ac)
* src/imap.[ch]
use virtual functions for folder item new and destroy
functions
+2002-10-14 [christoph] 0.8.5claws36
+
+ * src/folder.[ch]
+ * src/imap.[ch]
+ use virtual functions for folder item new and destroy
+ functions
+
2002-10-14 [melvin] 0.8.5claws35
* src/compose.c
2002-10-14 [melvin] 0.8.5claws35
* src/compose.c
MICRO_VERSION=5
INTERFACE_AGE=0
BINARY_AGE=0
MICRO_VERSION=5
INTERFACE_AGE=0
BINARY_AGE=0
VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION
dnl set $target
VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION
dnl set $target
Folder *folder_new(FolderType type, const gchar *name, const gchar *path)
{
Folder *folder = NULL;
Folder *folder_new(FolderType type, const gchar *name, const gchar *path)
{
Folder *folder = NULL;
name = name ? name : path;
switch (type) {
name = name ? name : path;
switch (type) {
+ /* Create root folder item */
+ item = folder_item_new(folder, name, NULL);
+ item->folder = folder;
+ folder->node = g_node_new(item);
+ folder->data = NULL;
+
return folder;
}
static void folder_init(Folder *folder, const gchar *name)
{
return folder;
}
static void folder_init(Folder *folder, const gchar *name)
{
g_return_if_fail(folder != NULL);
folder_set_name(folder, name);
g_return_if_fail(folder != NULL);
folder_set_name(folder, name);
folder->trash = NULL;
/* Init Folder functions */
folder->trash = NULL;
/* Init Folder functions */
+ folder->item_new = NULL;
+ folder->item_destroy = NULL;
folder->fetch_msg = NULL;
folder->fetch_msginfo = NULL;
folder->fetch_msginfos = NULL;
folder->fetch_msg = NULL;
folder->fetch_msginfo = NULL;
folder->fetch_msginfos = NULL;
folder->ui_func = NULL;
folder->ui_func_data = NULL;
folder->check_msgnum_validity = NULL;
folder->ui_func = NULL;
folder->ui_func_data = NULL;
folder->check_msgnum_validity = NULL;
-
- /* Create root folder item */
- item = folder_item_new(folder, name, NULL);
- item->folder = folder;
- folder->node = g_node_new(item);
- folder->data = NULL;
}
void folder_local_folder_init(Folder *folder, const gchar *name,
}
void folder_local_folder_init(Folder *folder, const gchar *name,
{
FolderItem *item = NULL;
{
FolderItem *item = NULL;
- switch (folder->type) {
- case F_IMAP:
- item = imap_folder_item_new();
- break;
- case F_MH:
- case F_NEWS:
- case F_MBOX:
+ if (folder->item_new) {
+ item = folder->item_new(folder);
+ } else {
item = g_new0(FolderItem, 1);
item = g_new0(FolderItem, 1);
- break;
- default:
- return NULL;
}
g_return_val_if_fail(item != NULL, NULL);
}
g_return_val_if_fail(item != NULL, NULL);
debug_print("Destroying folder item %s\n", item->path);
debug_print("Destroying folder item %s\n", item->path);
- if (item->folder != NULL) {
- switch (item->folder->type) {
- case F_IMAP:
- imap_folder_item_destroy(item);
- break;
- default:
- break;
- }
- }
-
if (item->cache)
folder_item_free_cache(item);
g_free(item->name);
g_free(item->path);
if (item->cache)
folder_item_free_cache(item);
g_free(item->name);
g_free(item->path);
+
+ if (item->folder != NULL) {
+ if(item->folder->item_destroy) {
+ item->folder->item_destroy(item->folder, item);
+ } else {
+ g_free(item);
+ }
+ }
}
void folder_set_ui_func(Folder *folder, FolderUIFunc func, gpointer data)
}
void folder_set_ui_func(Folder *folder, FolderUIFunc func, gpointer data)
FolderItem *item,
gboolean use_cache);
*/
FolderItem *item,
gboolean use_cache);
*/
+ FolderItem *(*item_new) (Folder *folder);
+ void (*item_destroy) (Folder *folder,
+ FolderItem *item);
gchar * (*fetch_msg) (Folder *folder,
FolderItem *item,
gint num);
gchar * (*fetch_msg) (Folder *folder,
FolderItem *item,
gint num);
+struct _IMAPFolderItem
+{
+ FolderItem item;
+
+ guint lastuid;
+ GSList *uid_list;
+};
+
static GList *session_list = NULL;
static gint imap_cmd_count = 0;
static GList *session_list = NULL;
static gint imap_cmd_count = 0;
const gchar *name,
const gchar *path);
const gchar *name,
const gchar *path);
+static FolderItem *imap_folder_item_new (Folder *folder);
+static void imap_folder_item_destroy (Folder *folder,
+ FolderItem *item);
+
static IMAPSession *imap_session_get (Folder *folder);
static gint imap_scan_tree_recursive (IMAPSession *session,
static IMAPSession *imap_session_get (Folder *folder);
static gint imap_scan_tree_recursive (IMAPSession *session,
/*
folder->get_msg_list = imap_get_msg_list;
*/
/*
folder->get_msg_list = imap_get_msg_list;
*/
+ folder->item_new = imap_folder_item_new;
+ folder->item_destroy = imap_folder_item_destroy;
folder->fetch_msg = imap_fetch_msg;
folder->add_msg = imap_add_msg;
folder->move_msg = imap_move_msg;
folder->fetch_msg = imap_fetch_msg;
folder->add_msg = imap_add_msg;
folder->move_msg = imap_move_msg;
((IMAPFolder *)folder)->selected_folder = NULL;
}
((IMAPFolder *)folder)->selected_folder = NULL;
}
-FolderItem *imap_folder_item_new()
+static FolderItem *imap_folder_item_new(Folder *folder)
return (FolderItem *)item;
}
return (FolderItem *)item;
}
-void imap_folder_item_destroy(FolderItem *_item)
+static void imap_folder_item_destroy(Folder *folder, FolderItem *_item)
{
IMAPFolderItem *item = (IMAPFolderItem *)_item;
g_return_if_fail(item != NULL);
g_slist_free(item->uid_list);
{
IMAPFolderItem *item = (IMAPFolderItem *)_item;
g_return_if_fail(item != NULL);
g_slist_free(item->uid_list);
}
static gboolean imap_reset_uid_lists_func(GNode *node, gpointer data)
}
static gboolean imap_reset_uid_lists_func(GNode *node, gpointer data)
-struct _IMAPFolderItem
-{
- FolderItem item;
-
- guint lastuid;
- GSList *uid_list;
-};
-
#define IMAP_SUCCESS 0
#define IMAP_SOCKET 2
#define IMAP_AUTHFAIL 3
#define IMAP_SUCCESS 0
#define IMAP_SOCKET 2
#define IMAP_AUTHFAIL 3
const gchar *path);
void imap_folder_destroy (Folder *folder);
const gchar *path);
void imap_folder_destroy (Folder *folder);
-FolderItem *imap_folder_item_new ();
-void imap_folder_item_destroy (FolderItem *item);
-
Session *imap_session_new (const PrefsAccount *account);
void imap_session_destroy (Session *session);
void imap_session_destroy_all (void);
Session *imap_session_new (const PrefsAccount *account);
void imap_session_destroy (Session *session);
void imap_session_destroy_all (void);