[evolution-kolab/ek-wip-porting] CamelIMAPXExtdStore: use virtual functions



commit c998803bd5146da5165ef2a7200152c726100f2d
Author: Christian Hilberg <hilberg kernelconcepts de>
Date:   Wed Jan 11 17:22:10 2012 +0100

    CamelIMAPXExtdStore: use virtual functions
    
    * changed to implement the parent class' API functions
      via GObject virtual functions
    * CamelIMAPXExtdStore is now subclassable
      for Kolab use

 src/camel/providers/imapx/camel-imapx-extd-store.c |  424 ++++++++++++++++----
 src/camel/providers/imapx/camel-imapx-extd-store.h |    9 +
 2 files changed, 344 insertions(+), 89 deletions(-)
---
diff --git a/src/camel/providers/imapx/camel-imapx-extd-store.c b/src/camel/providers/imapx/camel-imapx-extd-store.c
index f135352..4a0e803 100644
--- a/src/camel/providers/imapx/camel-imapx-extd-store.c
+++ b/src/camel/providers/imapx/camel-imapx-extd-store.c
@@ -33,6 +33,7 @@
 
 #include "camel-imapx-settings.h"
 #include "camel-imapx-extd-conn-manager.h"
+#include "camel-imapx-extd-folder.h"
 #include "camel-imapx-extd-store.h"
 
 /*----------------------------------------------------------------------------*/
@@ -41,29 +42,28 @@ static GInitableIface *parent_initable_iface = NULL;
 static CamelNetworkServiceInterface *parent_service_iface = NULL;
 static CamelSubscribableInterface *parent_subscribable_iface = NULL;
 
+static CamelServiceClass *parent_service_class = NULL;
+static CamelStoreClass *parent_store_class = NULL;
+
 /*----------------------------------------------------------------------------*/
 
 /* forward declarations */
-static void camel_imapx_extd_store_initable_init (GInitableIface *interface);
-static void camel_imapx_extd_store_network_service_init (CamelNetworkServiceInterface *interface);
-static void camel_imapx_extd_store_subscribable_init (CamelSubscribableInterface *interface);
+static void imapx_extd_store_initable_init (GInitableIface *interface);
+static void imapx_extd_store_network_service_init (CamelNetworkServiceInterface *interface);
+static void imapx_extd_store_subscribable_init (CamelSubscribableInterface *interface);
 
-G_DEFINE_TYPE_WITH_CODE (
-                         CamelIMAPXExtdStore,
+G_DEFINE_TYPE_WITH_CODE (CamelIMAPXExtdStore,
                          camel_imapx_extd_store,
                          CAMEL_TYPE_IMAPX_STORE,
-                         G_IMPLEMENT_INTERFACE (
-                                                G_TYPE_INITABLE,
-                                                camel_imapx_extd_store_initable_init)
-                         G_IMPLEMENT_INTERFACE (
-                                                CAMEL_TYPE_NETWORK_SERVICE,
-                                                camel_imapx_extd_store_network_service_init)
-                         G_IMPLEMENT_INTERFACE (
-                                                CAMEL_TYPE_SUBSCRIBABLE,
-                                                camel_imapx_extd_store_subscribable_init))
+                         G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE,
+                                                imapx_extd_store_initable_init)
+                         G_IMPLEMENT_INTERFACE (CAMEL_TYPE_NETWORK_SERVICE,
+                                                imapx_extd_store_network_service_init)
+                         G_IMPLEMENT_INTERFACE (CAMEL_TYPE_SUBSCRIBABLE,
+                                                imapx_extd_store_subscribable_init))
 
 /*----------------------------------------------------------------------------*/
-/* object/class init */
+/* object init */
 
 static void
 camel_imapx_extd_store_init (CamelIMAPXExtdStore *self)
@@ -73,14 +73,13 @@ camel_imapx_extd_store_init (CamelIMAPXExtdStore *self)
 
 	g_assert (CAMEL_IS_IMAPX_EXTD_STORE (self));
 
-	istore = CAMEL_IMAPX_STORE (self);
-
 	/* replace existing connection manager with
 	 * our own extended version. in case we need
 	 * to explicitly reference the *extended*
 	 * version of the connection manager, we will need
 	 * to override the respective parent class functions
 	 */
+	istore = CAMEL_IMAPX_STORE (self);
 	if (istore->con_man != NULL)
 		g_object_unref (istore->con_man);
 	cm = camel_imapx_extd_conn_manager_new (self);
@@ -97,8 +96,9 @@ camel_imapx_extd_store_dispose (GObject *object)
 	 * see imapx_store_dispose() in camel-imapx-store.c
 	 */
 	if (istore->con_man != NULL) {
-		camel_service_disconnect_sync (
-			CAMEL_SERVICE (self), TRUE, NULL);
+		camel_service_disconnect_sync (CAMEL_SERVICE (self),
+		                               TRUE,
+		                               NULL);
 		g_object_unref (istore->con_man);
 		istore->con_man = NULL;
 		/* this part will now be skipped
@@ -120,14 +120,275 @@ camel_imapx_extd_store_finalize (GObject *object)
 /*----------------------------------------------------------------------------*/
 /* class functions */
 
+static gboolean
+imapx_extd_store_can_refresh_folder (CamelStore *store,
+                                     CamelFolderInfo *info,
+                                     GError **err)
+{
+	gboolean can = FALSE;
+
+	g_assert (CAMEL_IS_IMAPX_EXTD_STORE (store));
+	g_return_val_if_fail (err == NULL || *err == NULL, FALSE);
+
+	can = parent_store_class->can_refresh_folder (store,
+	                                              info,
+	                                              err);
+	return can;
+}
+
+static void
+imapx_extd_store_free_folder_info (CamelStore *store,
+                                   CamelFolderInfo *fi)
+{
+	g_assert (CAMEL_IS_IMAPX_EXTD_STORE (store));
+	parent_store_class->free_folder_info (store, fi);
+}
+
+static CamelFolder*
+imapx_extd_store_get_folder_sync (CamelStore *store,
+                                  const gchar *foldername,
+                                  CamelStoreGetFolderFlags flags,
+                                  GCancellable *cancellable,
+                                  GError **err)
+{
+	CamelFolder *folder = NULL;
+
+	g_assert (CAMEL_IS_IMAPX_EXTD_STORE (store));
+	/* cancellable may be NULL */
+	g_return_val_if_fail (err == NULL || *err == NULL, NULL);
+
+	folder = parent_store_class->get_folder_sync (store,
+	                                              foldername,
+	                                              flags,
+	                                              cancellable,
+	                                              err);
+	if (folder != NULL)
+		g_assert (CAMEL_IS_IMAPX_EXTD_FOLDER (folder));
+
+	return folder;
+}
+
+static CamelFolderInfo*
+imapx_extd_store_get_folder_info_sync (CamelStore *store,
+                                       const gchar *top,
+                                       CamelStoreGetFolderInfoFlags flags,
+                                       GCancellable *cancellable,
+                                       GError **err)
+{
+	CamelFolderInfo *fi = NULL;
+
+	g_assert (CAMEL_IS_IMAPX_EXTD_STORE (store));
+	/* top may be NULL */
+	/* cancellable may be NULL */
+	g_return_val_if_fail (err == NULL || *err == NULL, NULL);
+
+	fi = parent_store_class->get_folder_info_sync (store,
+	                                               top,
+	                                               flags,
+	                                               cancellable,
+	                                               err);
+	return fi;
+}
+
+static CamelFolder*
+imapx_extd_store_get_junk_folder_sync (CamelStore *store,
+                                       GCancellable *cancellable,
+                                       GError **err)
+{
+	CamelFolder *folder = NULL;
+
+	g_assert (CAMEL_IS_IMAPX_EXTD_STORE (store));
+	/* cancellable may be NULL */
+	g_return_val_if_fail (err == NULL || *err == NULL, NULL);
+
+	folder = parent_store_class->get_junk_folder_sync (store,
+	                                                   cancellable,
+	                                                   err);
+	if (folder != NULL)
+		g_assert (CAMEL_IS_IMAPX_EXTD_FOLDER (folder));
+
+	return folder;
+}
+
+static CamelFolder*
+imapx_extd_store_get_trash_folder_sync (CamelStore *store,
+                                        GCancellable *cancellable,
+                                        GError **err)
+{
+	CamelFolder *folder = NULL;
+
+	g_assert (CAMEL_IS_IMAPX_EXTD_STORE (store));
+	/* cancellable may be NULL */
+	g_return_val_if_fail (err == NULL || *err == NULL, NULL);
+
+	folder = parent_store_class->get_trash_folder_sync (store,
+	                                                    cancellable,
+	                                                    err);
+	if (folder != NULL)
+		g_assert (CAMEL_IS_IMAPX_EXTD_FOLDER (folder));
+
+	return folder;
+}
+
+static CamelFolderInfo*
+imapx_extd_store_create_folder_sync (CamelStore *store,
+                                     const gchar *parentname,
+                                     const gchar *foldername,
+                                     GCancellable *cancellable,
+                                     GError **err)
+{
+	CamelFolderInfo *fi = NULL;
+
+	g_assert (CAMEL_IS_IMAPX_EXTD_STORE (store));
+	/* parentname may be NULL */
+	g_assert (foldername != NULL);
+	/* cancellable may be NULL */
+	g_return_val_if_fail (err == NULL || *err == NULL, NULL);
+
+	fi = parent_store_class->create_folder_sync (store,
+	                                             parentname,
+	                                             foldername,
+	                                             cancellable,
+	                                             err);
+	return fi;
+}
+
+static gboolean
+imapx_extd_store_delete_folder_sync (CamelStore *store,
+                                     const gchar *foldername,
+                                     GCancellable *cancellable,
+                                     GError **err)
+{
+	gboolean ok = FALSE;
+
+	g_assert (CAMEL_IS_IMAPX_EXTD_STORE (store));
+	g_assert (foldername != NULL);
+	/* cancellable may be NULL */
+	g_return_val_if_fail (err == NULL || *err == NULL, FALSE);
+
+	ok = parent_store_class->delete_folder_sync (store,
+	                                             foldername,
+	                                             cancellable,
+	                                             err);
+	return ok;
+}
+
+static gboolean
+imapx_extd_store_rename_folder_sync (CamelStore *store,
+                                     const gchar *oldname,
+                                     const gchar *newname,
+                                     GCancellable *cancellable,
+                                     GError **err)
+{
+	gboolean ok = FALSE;
+
+	g_assert (CAMEL_IS_IMAPX_EXTD_STORE (store));
+	g_assert (oldname != NULL);
+	g_assert (newname != NULL);
+	/* cancellable may be NULL */
+	g_return_val_if_fail (err == NULL || *err == NULL, FALSE);
+
+	ok = parent_store_class->rename_folder_sync (store,
+	                                             oldname,
+	                                             newname,
+	                                             cancellable,
+	                                             err);
+	return ok;
+}
+
+static gboolean
+imapx_extd_store_synchronize_sync (CamelStore *store,
+                                   gboolean expunge,
+                                   GCancellable *cancellable,
+                                   GError **err)
+{
+	gboolean ok = FALSE;
+
+	g_assert (CAMEL_IS_IMAPX_EXTD_STORE (store));
+	/* cancellable may be NULL */
+	g_return_val_if_fail (err == NULL || *err == NULL, FALSE);
+
+	ok = parent_store_class->synchronize_sync (store,
+	                                           expunge,
+	                                           cancellable,
+	                                           err);
+	return ok;
+}
+
+static gboolean
+imapx_extd_store_noop_sync (CamelStore *store,
+                            GCancellable *cancellable,
+                            GError **err)
+{
+	gboolean ok = FALSE;
+
+	g_assert (CAMEL_IS_IMAPX_EXTD_STORE (store));
+	/* cancellable may be NULL */
+	g_return_val_if_fail (err == NULL || *err == NULL, FALSE);
+
+	ok = parent_store_class->noop_sync (store,
+	                                    cancellable,
+	                                    err);
+	return ok;
+}
+
+static CamelIMAPXExtdServer*
+imapx_extd_store_get_server (CamelIMAPXExtdStore *self,
+                             const gchar *foldername,
+                             GCancellable *cancellable,
+                             GError **err)
+{
+	CamelIMAPXServer *is = NULL;
+	CamelIMAPXExtdServer *es = NULL;
+	CamelIMAPXStore *istore = NULL;
+	GError *tmp_err = NULL;
+
+	g_assert (CAMEL_IS_IMAPX_EXTD_STORE (self));
+	/* foldername may be NULL */
+	/* cancellable may be NULL */
+	g_return_val_if_fail (err == NULL || *err == NULL, NULL);
+
+	istore = CAMEL_IMAPX_STORE (self);
+	is = camel_imapx_store_get_server (istore,
+	                                   foldername,
+	                                   cancellable,
+	                                   &tmp_err);
+	if (is == NULL) {
+		g_propagate_error (err, tmp_err);
+		return NULL;
+	}
+
+	es = CAMEL_IMAPX_EXTD_SERVER (is);
+	return es;
+}
+
+static void
+imapx_extd_store_op_done (CamelIMAPXExtdStore *self,
+                          CamelIMAPXExtdServer *server,
+                          const gchar *foldername)
+{
+	CamelIMAPXServer *is = NULL;
+	CamelIMAPXStore *istore = NULL;
+
+	g_assert (CAMEL_IS_IMAPX_EXTD_STORE (self));
+	g_assert (CAMEL_IS_IMAPX_EXTD_SERVER (server));
+	g_assert (foldername != NULL);
+
+	istore = CAMEL_IMAPX_STORE (self);
+	is = CAMEL_IMAPX_SERVER (server);
+
+	camel_imapx_store_op_done (istore,
+	                           is,
+	                           foldername);
+}
 
 /*----------------------------------------------------------------------------*/
 /* interface functions */
 
 static gboolean
-camel_imapx_extd_store_initable_initialize (GInitable *initable,
-                                            GCancellable *cancellable,
-                                            GError **err)
+imapx_extd_store_initable_initialize (GInitable *initable,
+                                      GCancellable *cancellable,
+                                      GError **err)
 {
 	gboolean ok = FALSE;
 
@@ -143,8 +404,8 @@ camel_imapx_extd_store_initable_initialize (GInitable *initable,
 }
 
 static const gchar*
-camel_imapx_extd_store_get_service_name (CamelNetworkService *service,
-                                         CamelNetworkSecurityMethod method)
+imapx_extd_store_get_service_name (CamelNetworkService *service,
+                                   CamelNetworkSecurityMethod method)
 {
 	const gchar *sn = NULL;
 
@@ -158,8 +419,8 @@ camel_imapx_extd_store_get_service_name (CamelNetworkService *service,
 }
 
 static guint16
-camel_imapx_extd_store_get_default_port (CamelNetworkService *service,
-                                         CamelNetworkSecurityMethod method)
+imapx_extd_store_get_default_port (CamelNetworkService *service,
+                                   CamelNetworkSecurityMethod method)
 {
 	guint16 port = 0;
 
@@ -173,8 +434,8 @@ camel_imapx_extd_store_get_default_port (CamelNetworkService *service,
 }
 
 static gboolean
-camel_imapx_extd_store_folder_is_subscribed (CamelSubscribable *subscribable,
-                                             const gchar *foldername)
+imapx_extd_store_folder_is_subscribed (CamelSubscribable *subscribable,
+                                       const gchar *foldername)
 {
 	gboolean subscribed = FALSE;
 
@@ -189,10 +450,10 @@ camel_imapx_extd_store_folder_is_subscribed (CamelSubscribable *subscribable,
 }
 
 static gboolean
-camel_imapx_extd_store_subscribe_folder_sync (CamelSubscribable *subscribable,
-                                              const gchar *foldername,
-                                              GCancellable *cancellable,
-                                              GError **err)
+imapx_extd_store_subscribe_folder_sync (CamelSubscribable *subscribable,
+                                        const gchar *foldername,
+                                        GCancellable *cancellable,
+                                        GError **err)
 {
 	gboolean ok = FALSE;
 
@@ -210,10 +471,10 @@ camel_imapx_extd_store_subscribe_folder_sync (CamelSubscribable *subscribable,
 }
 
 static gboolean
-camel_imapx_extd_store_unsubscribe_folder_sync (CamelSubscribable *subscribable,
-                                                const gchar *foldername,
-                                                GCancellable *cancellable,
-                                                GError **err)
+imapx_extd_store_unsubscribe_folder_sync (CamelSubscribable *subscribable,
+                                          const gchar *foldername,
+                                          GCancellable *cancellable,
+                                          GError **err)
 {
 	gboolean ok = FALSE;
 
@@ -231,35 +492,35 @@ camel_imapx_extd_store_unsubscribe_folder_sync (CamelSubscribable *subscribable,
 }
 
 static void
-camel_imapx_extd_store_initable_init (GInitableIface *interface)
+imapx_extd_store_initable_init (GInitableIface *interface)
 {
 	parent_initable_iface = g_type_interface_peek_parent (interface);
-	interface->init = camel_imapx_extd_store_initable_initialize;
+	interface->init = imapx_extd_store_initable_initialize;
 }
 
 static void
-camel_imapx_extd_store_network_service_init (CamelNetworkServiceInterface *interface)
+imapx_extd_store_network_service_init (CamelNetworkServiceInterface *interface)
 {
 	g_assert (CAMEL_IS_NETWORK_SERVICE_INTERFACE (interface));
 
 	parent_service_iface = g_type_interface_peek_parent (interface);
-	interface->get_service_name = camel_imapx_extd_store_get_service_name;
-	interface->get_default_port = camel_imapx_extd_store_get_default_port;
+	interface->get_service_name = imapx_extd_store_get_service_name;
+	interface->get_default_port = imapx_extd_store_get_default_port;
 }
 
 static void
-camel_imapx_extd_store_subscribable_init (CamelSubscribableInterface *interface)
+imapx_extd_store_subscribable_init (CamelSubscribableInterface *interface)
 {
 	g_assert (CAMEL_IS_SUBSCRIBABLE_INTERFACE (interface));
 
 	parent_subscribable_iface = g_type_interface_peek_parent (interface);
-	interface->folder_is_subscribed = camel_imapx_extd_store_folder_is_subscribed;
-	interface->subscribe_folder_sync = camel_imapx_extd_store_subscribe_folder_sync;
-	interface->unsubscribe_folder_sync = camel_imapx_extd_store_unsubscribe_folder_sync;
+	interface->folder_is_subscribed = imapx_extd_store_folder_is_subscribed;
+	interface->subscribe_folder_sync = imapx_extd_store_subscribe_folder_sync;
+	interface->unsubscribe_folder_sync = imapx_extd_store_unsubscribe_folder_sync;
 }
 
 /*----------------------------------------------------------------------------*/
-/* class initialization */
+/* class init */
 
 static void
 camel_imapx_extd_store_class_init (CamelIMAPXExtdStoreClass *klass)
@@ -267,10 +528,9 @@ camel_imapx_extd_store_class_init (CamelIMAPXExtdStoreClass *klass)
 	GObjectClass *object_class = G_OBJECT_CLASS (klass);
 	CamelServiceClass *service_class = CAMEL_SERVICE_CLASS (klass);
 	CamelStoreClass *store_class = CAMEL_STORE_CLASS (klass);
-	CamelServiceClass *parent_service_class = \
-		CAMEL_SERVICE_CLASS (camel_imapx_extd_store_parent_class);
-	CamelStoreClass *parent_store_class = \
-		CAMEL_STORE_CLASS (camel_imapx_extd_store_parent_class);
+
+	parent_service_class = CAMEL_SERVICE_CLASS (camel_imapx_extd_store_parent_class);
+	parent_store_class = CAMEL_STORE_CLASS (camel_imapx_extd_store_parent_class);
 
 	/* g_type_class_add_private (klass, sizeof (CamelIMAPXExtdStorePrivate)); */
 
@@ -286,16 +546,20 @@ camel_imapx_extd_store_class_init (CamelIMAPXExtdStoreClass *klass)
 
 	store_class->hash_folder_name = parent_store_class->hash_folder_name;
 	store_class->compare_folder_name = parent_store_class->compare_folder_name;
-	store_class->can_refresh_folder = parent_store_class->can_refresh_folder;
-	store_class->free_folder_info = parent_store_class->free_folder_info;
-	store_class->get_folder_sync = parent_store_class->get_folder_sync;
-	store_class->get_folder_info_sync = parent_store_class->get_folder_info_sync;
-	store_class->get_junk_folder_sync = parent_store_class->get_junk_folder_sync;
-	store_class->get_trash_folder_sync = parent_store_class->get_trash_folder_sync;
-	store_class->create_folder_sync = parent_store_class->create_folder_sync;
-	store_class->delete_folder_sync = parent_store_class->delete_folder_sync;
-	store_class->rename_folder_sync = parent_store_class->rename_folder_sync;
-	store_class->noop_sync = parent_store_class->noop_sync;
+	store_class->can_refresh_folder = imapx_extd_store_can_refresh_folder;
+	store_class->free_folder_info = imapx_extd_store_free_folder_info;
+	store_class->get_folder_sync = imapx_extd_store_get_folder_sync;
+	store_class->get_folder_info_sync = imapx_extd_store_get_folder_info_sync;
+	store_class->get_junk_folder_sync = imapx_extd_store_get_junk_folder_sync;
+	store_class->get_trash_folder_sync = imapx_extd_store_get_trash_folder_sync;
+	store_class->create_folder_sync = imapx_extd_store_create_folder_sync;
+	store_class->delete_folder_sync = imapx_extd_store_delete_folder_sync;
+	store_class->rename_folder_sync = imapx_extd_store_rename_folder_sync;
+	store_class->synchronize_sync = imapx_extd_store_synchronize_sync;
+	store_class->noop_sync = imapx_extd_store_noop_sync;
+
+	klass->get_server = imapx_extd_store_get_server;
+	klass->op_done = imapx_extd_store_op_done;
 }
 
 /*----------------------------------------------------------------------------*/
@@ -307,27 +571,16 @@ camel_imapx_extd_store_get_server (CamelIMAPXExtdStore *self,
                                    GCancellable *cancellable,
                                    GError **err)
 {
-	CamelIMAPXServer *is = NULL;
 	CamelIMAPXExtdServer *es = NULL;
-	CamelIMAPXStore *istore = NULL;
-	GError *tmp_err = NULL;
-
-	g_assert (CAMEL_IS_IMAPX_EXTD_STORE (self));
-	/* foldername may be NULL */
-	/* cancellable may be NULL */
-	g_return_val_if_fail (err == NULL || *err == NULL, NULL);
+	CamelIMAPXExtdStoreClass *klass = NULL;
 
-	istore = CAMEL_IMAPX_STORE (self);
-	is = camel_imapx_store_get_server (istore,
-	                                   foldername,
-	                                   cancellable,
-	                                   &tmp_err);
-	if (is == NULL) {
-		g_propagate_error (err, tmp_err);
-		return NULL;
-	}
+	g_return_val_if_fail (CAMEL_IS_IMAPX_EXTD_STORE (self), NULL);
 
-	es = CAMEL_IMAPX_EXTD_SERVER (is);
+	klass = CAMEL_IMAPX_EXTD_STORE_GET_CLASS (self);
+	es = klass->get_server (self,
+	                        foldername,
+	                        cancellable,
+	                        err);
 	return es;
 }
 
@@ -336,19 +589,12 @@ camel_imapx_extd_store_op_done (CamelIMAPXExtdStore *self,
                                 CamelIMAPXExtdServer *server,
                                 const gchar *foldername)
 {
-	CamelIMAPXServer *is = NULL;
-	CamelIMAPXStore *istore = NULL;
-
-	g_assert (CAMEL_IS_IMAPX_EXTD_STORE (self));
-	g_assert (CAMEL_IS_IMAPX_EXTD_SERVER (server));
-	g_assert (foldername != NULL);
+	CamelIMAPXExtdStoreClass *klass = NULL;
 
-	istore = CAMEL_IMAPX_STORE (self);
-	is = CAMEL_IMAPX_SERVER (server);
+	g_return_if_fail (CAMEL_IS_IMAPX_EXTD_STORE (self));
 
-	camel_imapx_store_op_done (istore,
-	                           is,
-	                           foldername);
+	klass = CAMEL_IMAPX_EXTD_STORE_GET_CLASS (self);
+	klass->op_done (self, server, foldername);
 }
 
 /*----------------------------------------------------------------------------*/
diff --git a/src/camel/providers/imapx/camel-imapx-extd-store.h b/src/camel/providers/imapx/camel-imapx-extd-store.h
index 0289b4a..4031fb5 100644
--- a/src/camel/providers/imapx/camel-imapx-extd-store.h
+++ b/src/camel/providers/imapx/camel-imapx-extd-store.h
@@ -69,6 +69,15 @@ struct _CamelIMAPXExtdStore {
 
 struct _CamelIMAPXExtdStoreClass {
 	CamelIMAPXStoreClass parent_class;
+
+	CamelIMAPXExtdServer* (*get_server) (CamelIMAPXExtdStore *self,
+	                                     const gchar *foldername,
+	                                     GCancellable *cancellable,
+	                                     GError **err);
+
+	void (*op_done) (CamelIMAPXExtdStore *self,
+	                 CamelIMAPXExtdServer *server,
+	                 const gchar *foldername);
 };
 
 GType



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]