[evolution-kolab/ek-wip-porting] CamelKolabIMAPXStore: subclassing of interfaces
- From: Christian Hilberg <chilberg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-kolab/ek-wip-porting] CamelKolabIMAPXStore: subclassing of interfaces
- Date: Mon, 9 Jan 2012 19:05:21 +0000 (UTC)
commit d891350507c93548d2048c85a3ff043828e542be
Author: Christian Hilberg <hilberg kernelconcepts de>
Date: Mon Jan 9 20:04:30 2012 +0100
CamelKolabIMAPXStore: subclassing of interfaces
* initial implementation of the parent class'
interfaces (GInitable, CamelNetworkService, CamelSubscribable)
src/camel/camel-kolab-imapx-store.c | 105 ++++++++++++++++++++++-------------
1 files changed, 66 insertions(+), 39 deletions(-)
---
diff --git a/src/camel/camel-kolab-imapx-store.c b/src/camel/camel-kolab-imapx-store.c
index 036e5e1..ff01d2f 100644
--- a/src/camel/camel-kolab-imapx-store.c
+++ b/src/camel/camel-kolab-imapx-store.c
@@ -45,17 +45,17 @@
/*----------------------------------------------------------------------------*/
-static GInitableIface *parent_initable_interface = NULL;
+static GInitableIface *parent_initable_iface = NULL;
+static CamelNetworkServiceInterface *parent_service_iface = NULL;
+static CamelSubscribableInterface *parent_subscribable_iface = NULL;
/*----------------------------------------------------------------------------*/
-/* forward declarations */
+/* forward declarations */
static void camel_kolab_imapx_store_initable_init (GInitableIface *interface);
static void camel_kolab_imapx_store_network_service_init (CamelNetworkServiceInterface *interface);
static void camel_kolab_imapx_store_subscribable_init (CamelSubscribableInterface *interface);
-/*----------------------------------------------------------------------------*/
-
typedef struct _CamelKolabIMAPXStorePrivate CamelKolabIMAPXStorePrivate;
struct _CamelKolabIMAPXStorePrivate {
CamelKolabIMAPXServer *server;
@@ -88,7 +88,7 @@ G_DEFINE_TYPE_WITH_CODE (CamelKolabIMAPXStore,
camel_kolab_imapx_store_subscribable_init))
/*----------------------------------------------------------------------------*/
-/* class functions */
+/* object/class init */
static void
camel_kolab_imapx_store_init (CamelKolabIMAPXStore *self)
@@ -182,6 +182,9 @@ camel_kolab_imapx_store_finalize (GObject *object)
G_OBJECT_CLASS (camel_kolab_imapx_store_parent_class)->finalize (object);
}
+/*----------------------------------------------------------------------------*/
+/* class functions */
+
static gchar*
camel_kolab_imapx_store_get_name (CamelService *service,
gboolean brief)
@@ -465,53 +468,63 @@ camel_kolab_imapx_store_initable_initialize (GInitable *initable,
GCancellable *cancellable,
GError **err)
{
- g_assert (CAMEL_IS_KOLAB_IMAPX_STORE (initable));
- g_assert (G_IS_CANCELLABLE (cancellable));
- g_return_val_if_fail (err == NULL || *err == NULL, FALSE);
+ gboolean ok = FALSE;
- /* FIXME implement me */
- g_error ("%s: FIXME implement me", __func__);
+ g_assert (G_IS_INITABLE (initable));
+ /* cancellable may be NULL */
+ g_return_val_if_fail (err == NULL || *err == NULL, FALSE);
- return FALSE;
+ /* chain up to parent interface's init() method. */
+ ok = parent_initable_iface->init (initable,
+ cancellable,
+ err);
+ return ok;
}
static const gchar*
camel_kolab_imapx_store_get_service_name (CamelNetworkService *service,
CamelNetworkSecurityMethod method)
{
+ const gchar *sn = NULL;
+
g_assert (CAMEL_IS_NETWORK_SERVICE (service));
- (void)method; /* FIXME */
- /* FIXME implement me */
- g_error ("%s: FIXME implement me", __func__);
+ /* use parent function for now */
+ sn = parent_service_iface->get_service_name (service,
+ method);
- return NULL;
+ return sn;
}
static guint16
camel_kolab_imapx_store_get_default_port (CamelNetworkService *service,
CamelNetworkSecurityMethod method)
{
+ guint16 port = 0;
+
g_assert (CAMEL_IS_NETWORK_SERVICE (service));
- (void)method; /* FIXME */
- /* FIXME implement me */
- g_error ("%s: FIXME implement me", __func__);
+ /* use parent function for now */
+ port = parent_service_iface->get_default_port (service,
+ method);
- return 0;
+ return port;
}
static gboolean
camel_kolab_imapx_store_folder_is_subscribed (CamelSubscribable *subscribable,
const gchar *foldername)
{
- g_assert (CAMEL_IS_KOLAB_IMAPX_STORE (subscribable));
- (void)foldername; /* FIXME */
+ gboolean subscribed = FALSE;
- /* FIXME implement me */
- g_error ("%s: FIXME implement me", __func__);
+ g_assert (CAMEL_IS_SUBSCRIBABLE (subscribable));
+ g_assert (foldername != NULL);
- return FALSE;
+ /* use parent function for now */
+ subscribed = parent_subscribable_iface->folder_is_subscribed (subscribable,
+ foldername);
+
+ return subscribed;
}
static gboolean
@@ -520,15 +533,19 @@ camel_kolab_imapx_store_subscribe_folder_sync (CamelSubscribable *subscribable,
GCancellable *cancellable,
GError **err)
{
- g_assert (CAMEL_IS_KOLAB_IMAPX_STORE (subscribable));
- (void)foldername; /* FIXME */
- g_assert (G_IS_CANCELLABLE (cancellable));
- g_return_val_if_fail (err == NULL || *err == NULL, FALSE);
+ gboolean ok = FALSE;
- /* FIXME implement me */
- g_error ("%s: FIXME implement me", __func__);
+ g_assert (CAMEL_IS_SUBSCRIBABLE (subscribable));
+ g_assert (foldername != NULL);
+ /* cancellable may be NULL */
+ g_return_val_if_fail (err == NULL || *err == NULL, FALSE);
- return FALSE;
+ /* use parent function for now */
+ ok = parent_subscribable_iface->subscribe_folder_sync (subscribable,
+ foldername,
+ cancellable,
+ err);
+ return ok;
}
static gboolean
@@ -537,27 +554,34 @@ camel_kolab_imapx_store_unsubscribe_folder_sync (CamelSubscribable *subscribable
GCancellable *cancellable,
GError **err)
{
- g_assert (CAMEL_IS_KOLAB_IMAPX_STORE (subscribable));
- (void)foldername; /* FIXME */
- g_assert (G_IS_CANCELLABLE (cancellable));
- g_return_val_if_fail (err == NULL || *err == NULL, FALSE);
+ gboolean ok = FALSE;
- /* FIXME implement me */
- g_error ("%s: FIXME implement me", __func__);
+ g_assert (CAMEL_IS_SUBSCRIBABLE (subscribable));
+ g_assert (foldername != NULL);
+ /* cancellable may be NULL */
+ g_return_val_if_fail (err == NULL || *err == NULL, FALSE);
- return FALSE;
+ /* use parent function for now */
+ ok = parent_subscribable_iface->unsubscribe_folder_sync (subscribable,
+ foldername,
+ cancellable,
+ err);
+ return ok;
}
static void
camel_kolab_imapx_store_initable_init (GInitableIface *interface)
{
- parent_initable_interface = g_type_interface_peek_parent (interface);
+ parent_initable_iface = g_type_interface_peek_parent (interface);
interface->init = camel_kolab_imapx_store_initable_initialize;
}
static void
camel_kolab_imapx_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_kolab_imapx_store_get_service_name;
interface->get_default_port = camel_kolab_imapx_store_get_default_port;
}
@@ -565,6 +589,9 @@ camel_kolab_imapx_store_network_service_init (CamelNetworkServiceInterface *inte
static void
camel_kolab_imapx_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_kolab_imapx_store_folder_is_subscribed;
interface->subscribe_folder_sync = camel_kolab_imapx_store_subscribe_folder_sync;
interface->unsubscribe_folder_sync = camel_kolab_imapx_store_unsubscribe_folder_sync;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]