aboutsummaryrefslogtreecommitdiffstats
path: root/camel
diff options
context:
space:
mode:
Diffstat (limited to 'camel')
-rw-r--r--camel/camel-folder.c45
-rw-r--r--camel/camel-folder.h2
-rw-r--r--camel/camel-service.c4
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);
}