diff options
Diffstat (limited to 'camel')
-rw-r--r-- | camel/camel-folder.c | 45 | ||||
-rw-r--r-- | camel/camel-folder.h | 2 | ||||
-rw-r--r-- | camel/camel-service.c | 4 |
3 files changed, 45 insertions, 6 deletions
diff --git a/camel/camel-folder.c b/camel/camel-folder.c index 5e3bd1265c..8f5e46b9a8 100644 --- a/camel/camel-folder.c +++ b/camel/camel-folder.c @@ -47,6 +47,7 @@ static gboolean __camel_folder_delete_messages(CamelFolder *folder); static CamelFolder *__camel_folder_get_parent_folder (CamelFolder *folder); static CamelStore *__camel_folder_get_parent_store (CamelFolder *folder); static CamelFolderOpenMode __camel_folder_get_mode(CamelFolder *folder); +static GList *__camel_folder_list_subfolders(CamelFolder *folder); static void camel_folder_class_init (CamelFolderClass *camel_folder_class) @@ -70,6 +71,7 @@ camel_folder_class_init (CamelFolderClass *camel_folder_class) camel_folder_class->get_parent_folder = __camel_folder_get_parent_folder; camel_folder_class->get_parent_store = __camel_folder_get_parent_store; camel_folder_class->get_mode = __camel_folder_get_mode; + camel_folder_class->list_subfolders = __camel_folder_list_subfolders; /* virtual method overload */ } @@ -313,6 +315,25 @@ __camel_folder_get_folder(CamelFolder *folder, GString *folder_name) return NULL; } +/** + * camel_folder_get_folder: return the (sub)folder object that + * is specified. + * + * This method returns a folder objects. This folder + * is necessarily a subfolder of the current folder. + * It is an error to ask a folder begining with the + * folder separator character. + * + * @folder : the folder + * @folderName: subfolder path. NULL if the subfolder object + * could not be created + **/ +CamelFolder * +camel_folder_get_folder(CamelFolder *folder, GString *folder_name) +{ + return (CF_CLASS(folder)->get_folder(folder,folder_name)); +} + @@ -421,9 +442,8 @@ __camel_folder_delete (CamelFolder *folder, gboolean recurse) /* delete all messages in the folder */ CF_CLASS(folder)->delete_messages(folder); -#warning implement list_subfolders - /* subfolders = CF_CLASS(folder)->list_subfolders(folder); */ - + + subfolders = CF_CLASS(folder)->list_subfolders(folder); if (recurse) { /* delete subfolders */ if (subfolders) { sf = subfolders; @@ -580,8 +600,25 @@ __camel_folder_get_mode(CamelFolder *folder) * * Return value: open mode of the folder **/ -static CamelFolderOpenMode +CamelFolderOpenMode camel_folder_get_mode(CamelFolder *folder) { return CF_CLASS(folder)->get_mode(folder); } + + + + +static GList * +__camel_folder_list_subfolders(CamelFolder *folder) +{ + return NULL; +} + + +GList * +camel_folder_list_subfolders(CamelFolder *folder) +{ + return CF_CLASS(folder)->list_subfolders(folder); +} + diff --git a/camel/camel-folder.h b/camel/camel-folder.h index b6ca20074d..7a12bc0c9f 100644 --- a/camel/camel-folder.h +++ b/camel/camel-folder.h @@ -96,6 +96,7 @@ typedef struct { CamelFolder * (*get_parent_folder) (CamelFolder *folder); CamelStore * (*get_parent_store) (CamelFolder *folder); CamelFolderOpenMode (*get_mode) (CamelFolder *folder); + GList * (*list_subfolders) (CamelFolder *folder); } CamelFolderClass; @@ -106,6 +107,7 @@ GtkType camel_folder_get_type (void); /* public methods */ +CamelFolder *camel_folder_get_folder(CamelFolder *folder, GString *folder_name); gboolean camel_folder_create(CamelFolder *folder); gboolean camel_folder_delete (CamelFolder *folder, gboolean recurse); gboolean camel_folder_delete_messages (CamelFolder *folder); diff --git a/camel/camel-service.c b/camel/camel-service.c index 6b3f89f5b5..970957e4b1 100644 --- a/camel/camel-service.c +++ b/camel/camel-service.c @@ -129,7 +129,7 @@ camel_service_connect(CamelService *service) static void __camel_service_connect_to_with_login_passwd(CamelService *service, GString *host, GString *login, GString *passwd) { - camel_service_set_connected(service, TRUE); + __camel_service_set_connected(service, TRUE); } @@ -149,7 +149,7 @@ __camel_service_connect_to_with_login_passwd(CamelService *service, GString *hos static void __camel_service_connect_to_with_login_passwd_port(CamelService *service, GString *host, GString *login, GString *passwd, guint port) { - camel_service_set_connected(service, TRUE); + __camel_service_set_connected(service, TRUE); } |