aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--addressbook/ChangeLog10
-rw-r--r--addressbook/backend/pas/pas-book-factory.c30
-rw-r--r--addressbook/backend/pas/pas-book-factory.h2
3 files changed, 33 insertions, 9 deletions
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog
index b7695085c9..853d90d1c9 100644
--- a/addressbook/ChangeLog
+++ b/addressbook/ChangeLog
@@ -1,3 +1,13 @@
+2001-09-26 Chris Toshok <toshok@ximian.com>
+
+ * backend/pas/pas-book-factory.c (pas_book_factory_destroy): use
+ priv->iid instead of the hardcoded string here.
+ (pas_book_factory_activate): parameterize the factory's iid, as in
+ the calendar server, and provide a default if iid == NULL.
+
+ * backend/pas/pas-book-factory.h: add iid parameter for
+ pas_book_factory_activate.
+
2001-09-26 Jon Trowbridge <trow@ximian.com>
* backend/ebook/e-destination.c (e_destination_get_textrep): Use
diff --git a/addressbook/backend/pas/pas-book-factory.c b/addressbook/backend/pas/pas-book-factory.c
index ca4c74631f..cb7b291a9e 100644
--- a/addressbook/backend/pas/pas-book-factory.c
+++ b/addressbook/backend/pas/pas-book-factory.c
@@ -15,7 +15,7 @@
#include "addressbook.h"
#include "pas-book-factory.h"
-#define PAS_BOOK_FACTORY_OAF_ID "OAFIID:GNOME_Evolution_Wombat_ServerFactory"
+#define DEFAULT_PAS_BOOK_FACTORY_OAF_ID "OAFIID:GNOME_Evolution_Wombat_ServerFactory"
static BonoboObjectClass *pas_book_factory_parent_class;
POA_GNOME_Evolution_Addressbook_BookFactory__vepv pas_book_factory_vepv;
@@ -31,6 +31,9 @@ struct _PASBookFactoryPrivate {
GHashTable *active_server_map;
GList *queued_requests;
+ /* OAFIID of the factory */
+ char *iid;
+
/* Whether the factory has been registered with OAF yet */
guint registered : 1;
};
@@ -426,11 +429,12 @@ pas_book_factory_new (void)
* pas_book_factory_activate:
*/
gboolean
-pas_book_factory_activate (PASBookFactory *factory)
+pas_book_factory_activate (PASBookFactory *factory, const char *iid)
{
PASBookFactoryPrivate *priv;
CORBA_Object obj;
OAF_RegistrationResult result;
+ char *tmp_iid;
g_return_val_if_fail (factory != NULL, FALSE);
g_return_val_if_fail (PAS_IS_BOOK_FACTORY (factory), FALSE);
@@ -439,27 +443,35 @@ pas_book_factory_activate (PASBookFactory *factory)
g_return_val_if_fail (!priv->registered, FALSE);
- puts ("about to register addressbook");
+ /* if iid is NULL, use the default factory OAFIID */
+ if (iid)
+ tmp_iid = g_strdup (iid);
+ else
+ tmp_iid = g_strdup (DEFAULT_PAS_BOOK_FACTORY_OAF_ID);
obj = bonobo_object_corba_objref (BONOBO_OBJECT (factory));
- result = oaf_active_server_register (PAS_BOOK_FACTORY_OAF_ID, obj);
+ result = oaf_active_server_register (tmp_iid, obj);
switch (result) {
case OAF_REG_SUCCESS:
priv->registered = TRUE;
+ priv->iid = tmp_iid;
return TRUE;
case OAF_REG_NOT_LISTED:
g_message ("Error registering the PAS factory: not listed");
- return FALSE;
+ break;
case OAF_REG_ALREADY_ACTIVE:
g_message ("Error registering the PAS factory: already active");
- return FALSE;
+ break;
case OAF_REG_ERROR:
default:
g_message ("Error registering the PAS factory: generic error");
- return FALSE;
+ break;
}
+
+ g_free (tmp_iid);
+ return FALSE;
}
static void
@@ -532,9 +544,11 @@ pas_book_factory_destroy (GtkObject *object)
CORBA_Object obj;
obj = bonobo_object_corba_objref (BONOBO_OBJECT (factory));
- oaf_active_server_unregister (PAS_BOOK_FACTORY_OAF_ID, obj);
+ oaf_active_server_unregister (factory->priv->iid, obj);
factory->priv->registered = FALSE;
}
+
+ g_free (factory->priv->iid);
g_free (factory->priv);
diff --git a/addressbook/backend/pas/pas-book-factory.h b/addressbook/backend/pas/pas-book-factory.h
index fc00b7b423..22d4a87b3e 100644
--- a/addressbook/backend/pas/pas-book-factory.h
+++ b/addressbook/backend/pas/pas-book-factory.h
@@ -35,7 +35,7 @@ void pas_book_factory_register_backend (PASBookFactory
int pas_book_factory_get_n_backends (PASBookFactory *factory);
-gboolean pas_book_factory_activate (PASBookFactory *factory);
+gboolean pas_book_factory_activate (PASBookFactory *factory, const char *iid);
GtkType pas_book_factory_get_type (void);