diff options
author | nobody <nobody@localhost> | 2003-04-02 01:15:53 +0800 |
---|---|---|
committer | nobody <nobody@localhost> | 2003-04-02 01:15:53 +0800 |
commit | 2e5b2bbb530b642dda56b332cfd93810ac415098 (patch) | |
tree | e2b63c11a404a5dd99d407c989c8846fd0d5379d /shell/e-corba-storage-registry.c | |
parent | 5cda225087bfdc66e19edb703689e8af655e171c (diff) | |
download | gsoc2013-evolution-EVOLUTION_1_2_4.tar gsoc2013-evolution-EVOLUTION_1_2_4.tar.gz gsoc2013-evolution-EVOLUTION_1_2_4.tar.bz2 gsoc2013-evolution-EVOLUTION_1_2_4.tar.lz gsoc2013-evolution-EVOLUTION_1_2_4.tar.xz gsoc2013-evolution-EVOLUTION_1_2_4.tar.zst gsoc2013-evolution-EVOLUTION_1_2_4.zip |
This commit was manufactured by cvs2svn to create tagEVOLUTION_1_2_4
'EVOLUTION_1_2_4'.
svn path=/tags/EVOLUTION_1_2_4/; revision=20614
Diffstat (limited to 'shell/e-corba-storage-registry.c')
-rw-r--r-- | shell/e-corba-storage-registry.c | 117 |
1 files changed, 78 insertions, 39 deletions
diff --git a/shell/e-corba-storage-registry.c b/shell/e-corba-storage-registry.c index bfffdb6981..a0dafc239c 100644 --- a/shell/e-corba-storage-registry.c +++ b/shell/e-corba-storage-registry.c @@ -34,8 +34,6 @@ #include <bonobo/bonobo-exception.h> #include <gal/util/e-util.h> -#include <string.h> - #define PARENT_TYPE BONOBO_OBJECT_TYPE static BonoboObjectClass *parent_class = NULL; @@ -49,6 +47,31 @@ struct _ECorbaStorageRegistryPrivate { /* CORBA interface implementation. */ +static POA_GNOME_Evolution_StorageRegistry__vepv storage_registry_vepv; + +static POA_GNOME_Evolution_StorageRegistry * +create_servant (void) +{ + POA_GNOME_Evolution_StorageRegistry *servant; + CORBA_Environment ev; + + servant = (POA_GNOME_Evolution_StorageRegistry *) g_new0 (BonoboObjectServant, 1); + servant->vepv = &storage_registry_vepv; + + CORBA_exception_init (&ev); + + POA_GNOME_Evolution_StorageRegistry__init ((PortableServer_Servant) servant, &ev); + if (ev._major != CORBA_NO_EXCEPTION) { + g_free (servant); + CORBA_exception_free (&ev); + return NULL; + } + + CORBA_exception_free (&ev); + + return servant; +} + static void listener_notify (Bonobo_Listener listener, GNOME_Evolution_StorageRegistry_MessageType type, @@ -73,6 +96,8 @@ listener_notify (Bonobo_Listener listener, CORBA_exception_id (&ev)); } + CORBA_free (nr.name); + CORBA_exception_free (&ev); } @@ -103,7 +128,7 @@ impl_StorageRegistry_addStorage (PortableServer_Servant servant, return CORBA_OBJECT_NIL; } - g_object_unref (storage); + gtk_object_unref (GTK_OBJECT (storage)); /* FIXME: if we remove a listener while looping through the list we can @@ -239,7 +264,7 @@ storage_set_foreach (EStorageSet *set, name = e_storage_get_name (E_STORAGE (p->data)); listener_notify (listener, GNOME_Evolution_StorageRegistry_STORAGE_CREATED, name); - g_object_unref (p->data); + gtk_object_unref (GTK_OBJECT (p->data)); } g_list_free (storage_list); @@ -387,27 +412,10 @@ impl_StorageRegistry_getFolderByUri (PortableServer_Servant servant, } -/* GObject methods. */ +/* GtkObject methods. */ static void -impl_dispose (GObject *object) -{ - ECorbaStorageRegistry *corba_storage_registry; - ECorbaStorageRegistryPrivate *priv; - - corba_storage_registry = E_CORBA_STORAGE_REGISTRY (object); - priv = corba_storage_registry->priv; - - if (priv->storage_set != NULL) { - g_object_unref (priv->storage_set); - priv->storage_set = NULL; - } - - (* G_OBJECT_CLASS (parent_class)->dispose) (object); -} - -static void -impl_finalize (GObject *object) +destroy (GtkObject *object) { ECorbaStorageRegistry *corba_storage_registry; ECorbaStorageRegistryPrivate *priv; @@ -415,25 +423,29 @@ impl_finalize (GObject *object) corba_storage_registry = E_CORBA_STORAGE_REGISTRY (object); priv = corba_storage_registry->priv; + if (priv->storage_set != NULL) + gtk_object_unref (GTK_OBJECT (priv->storage_set)); g_free (priv); - (* G_OBJECT_CLASS (parent_class)->finalize) (object); + (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); } /* Initialization. */ static void -e_corba_storage_registry_class_init (ECorbaStorageRegistryClass *klass) +corba_class_init (void) { - GObjectClass *object_class; + POA_GNOME_Evolution_StorageRegistry__vepv *vepv; POA_GNOME_Evolution_StorageRegistry__epv *epv; + PortableServer_ServantBase__epv *base_epv; - object_class = G_OBJECT_CLASS (klass); - object_class->dispose = impl_dispose; - object_class->finalize = impl_finalize; + base_epv = g_new0 (PortableServer_ServantBase__epv, 1); + base_epv->_private = NULL; + base_epv->finalize = NULL; + base_epv->default_POA = NULL; - epv = & klass->epv; + epv = g_new0 (POA_GNOME_Evolution_StorageRegistry__epv, 1); epv->addStorage = impl_StorageRegistry_addStorage; epv->getStorageList = impl_StorageRegistry_getStorageList; epv->getStorageByName = impl_StorageRegistry_getStorageByName; @@ -442,11 +454,27 @@ e_corba_storage_registry_class_init (ECorbaStorageRegistryClass *klass) epv->removeListener = impl_StorageRegistry_removeListener; epv->getFolderByUri = impl_StorageRegistry_getFolderByUri; - parent_class = g_type_class_ref(PARENT_TYPE); + vepv = &storage_registry_vepv; + vepv->_base_epv = base_epv; + vepv->Bonobo_Unknown_epv = bonobo_object_get_epv (); + vepv->GNOME_Evolution_StorageRegistry_epv = epv; +} + +static void +class_init (ECorbaStorageRegistryClass *klass) +{ + GtkObjectClass *object_class; + + object_class = GTK_OBJECT_CLASS (klass); + object_class->destroy = destroy; + + parent_class = gtk_type_class (PARENT_TYPE); + + corba_class_init (); } static void -e_corba_storage_registry_init (ECorbaStorageRegistry *corba_storage_registry) +init (ECorbaStorageRegistry *corba_storage_registry) { ECorbaStorageRegistryPrivate *priv; @@ -460,15 +488,20 @@ e_corba_storage_registry_init (ECorbaStorageRegistry *corba_storage_registry) void e_corba_storage_registry_construct (ECorbaStorageRegistry *corba_storage_registry, + GNOME_Evolution_StorageRegistry corba_object, EStorageSet *storage_set) { ECorbaStorageRegistryPrivate *priv; + g_return_if_fail (corba_storage_registry != NULL); g_return_if_fail (E_IS_CORBA_STORAGE_REGISTRY (corba_storage_registry)); + g_return_if_fail (corba_object != CORBA_OBJECT_NIL); + + bonobo_object_construct (BONOBO_OBJECT (corba_storage_registry), corba_object); priv = corba_storage_registry->priv; - g_object_ref (storage_set); + gtk_object_ref (GTK_OBJECT (storage_set)); priv->storage_set = storage_set; } @@ -476,19 +509,25 @@ ECorbaStorageRegistry * e_corba_storage_registry_new (EStorageSet *storage_set) { ECorbaStorageRegistry *corba_storage_registry; + POA_GNOME_Evolution_StorageRegistry *servant; + GNOME_Evolution_StorageRegistry corba_object; g_return_val_if_fail (storage_set != NULL, NULL); g_return_val_if_fail (E_IS_STORAGE_SET (storage_set), NULL); - corba_storage_registry = g_object_new (e_corba_storage_registry_get_type (), NULL); + servant = create_servant (); + if (servant == NULL) + return NULL; + + corba_storage_registry = gtk_type_new (e_corba_storage_registry_get_type ()); + + corba_object = bonobo_object_activate_servant (BONOBO_OBJECT (corba_storage_registry), + servant); - e_corba_storage_registry_construct (corba_storage_registry, storage_set); + e_corba_storage_registry_construct (corba_storage_registry, corba_object, storage_set); return corba_storage_registry; } -BONOBO_TYPE_FUNC_FULL (ECorbaStorageRegistry, - GNOME_Evolution_StorageRegistry, - PARENT_TYPE, - e_corba_storage_registry) +E_MAKE_TYPE (e_corba_storage_registry, "ECorbaStorageRegistry", ECorbaStorageRegistry, class_init, init, PARENT_TYPE) |