aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/backend/pas/pas-card-cursor.c
diff options
context:
space:
mode:
authorChristopher James Lahey <clahey@helixcode.com>2000-03-28 11:52:46 +0800
committerChris Lahey <clahey@src.gnome.org>2000-03-28 11:52:46 +0800
commit21e60e238477edd1ad157bd17024d5ea6395e048 (patch)
tree4f251e318f085aecc387c49f052a14f7874c1a1a /addressbook/backend/pas/pas-card-cursor.c
parentbd46ea2926e3f244d6d875195363d261f53a4e07 (diff)
downloadgsoc2013-evolution-21e60e238477edd1ad157bd17024d5ea6395e048.tar
gsoc2013-evolution-21e60e238477edd1ad157bd17024d5ea6395e048.tar.gz
gsoc2013-evolution-21e60e238477edd1ad157bd17024d5ea6395e048.tar.bz2
gsoc2013-evolution-21e60e238477edd1ad157bd17024d5ea6395e048.tar.lz
gsoc2013-evolution-21e60e238477edd1ad157bd17024d5ea6395e048.tar.xz
gsoc2013-evolution-21e60e238477edd1ad157bd17024d5ea6395e048.tar.zst
gsoc2013-evolution-21e60e238477edd1ad157bd17024d5ea6395e048.zip
Fixed some warnings.
2000-03-27 Christopher James Lahey <clahey@helixcode.com> * addressbook/backend/ebook/test-card.c: Fixed some warnings. * addressbook/backend/ebook/test-client.c: Added a section to test cursors and returning an id when adding. * addressbook/backend/ebook/e-card-pairs.h: Removed the address pairs since they were added to e-card.c. * addressbook/backend/ebook/e-card.c, addressbook/backend/ebook/e-card.h: Made the set_id function take a const char *. * addressbook/backend/ebook/e-book-listener.c, addressbook/backend/ebook/e-book-listener.h, addressbook/backend/ebook/e-book.c, addressbook/backend/ebook/e-book.h, addressbook/backend/idl/addressbook.idl, addressbook/backend/pas/pas-backend-file.c, addressbook/backend/pas/pas-book.c, addressbook/backend/pas/pas-book.h: Added a get_all_cards function and made the response to the create_card function include the card id. * addressbook/backend/ebook/Makefile.am: Added e-card-cursor.c and e-card-cursor.h. * addressbook/backend/ebook/e-card-cursor.c, addressbook/backend/ebook/e-card-cursor.h: New class for proxying to an Evolution_CardCursor. * addressbook/backend/pas/Makefile.am: Added pas-card-cursor.c and pas-card-cursor.h. * addressbook/backend/pas/pas-card-cursor.c, addressbook/backend/pas/pas-card-cursor.h: New bonobo class for making an Evolution_CardCursor server. svn path=/trunk/; revision=2205
Diffstat (limited to 'addressbook/backend/pas/pas-card-cursor.c')
-rw-r--r--addressbook/backend/pas/pas-card-cursor.c224
1 files changed, 224 insertions, 0 deletions
diff --git a/addressbook/backend/pas/pas-card-cursor.c b/addressbook/backend/pas/pas-card-cursor.c
new file mode 100644
index 0000000000..b6ef91f41c
--- /dev/null
+++ b/addressbook/backend/pas/pas-card-cursor.c
@@ -0,0 +1,224 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * pas-card-cursor.c: Implements card cursors.
+ *
+ * Author:
+ * Christopher James Lahey <clahey@helixcode.com.
+ */
+
+#include <config.h>
+#include <bonobo.h>
+#include "addressbook.h"
+#include "pas-card-cursor.h"
+
+struct _PASCardCursorPrivate {
+ long (*get_length) (PASCardCursor *cursor, gpointer data);
+ char * (*get_nth) (PASCardCursor *cursor, long n, gpointer data);
+ gpointer data;
+};
+
+/*
+ * A pointer to our parent object class
+ */
+static BonoboObjectClass *parent_class;
+
+/*
+ * The VEPV for the CardCursor object
+ */
+static POA_Evolution_CardCursor__vepv cursor_vepv;
+
+/*
+ * Implemented GtkObject::destroy
+ */
+static void
+pas_card_cursor_destroy (GtkObject *object)
+{
+ PASCardCursor *cursor = PAS_CARD_CURSOR (object);
+
+ if ( cursor->priv )
+ g_free ( cursor->priv );
+
+ GTK_OBJECT_CLASS (parent_class)->destroy (object);
+}
+
+/*
+ * CORBA Demo::Echo::echo method implementation
+ */
+static CORBA_long
+impl_pas_card_cursor_get_length (PortableServer_Servant servant,
+ CORBA_Environment *ev)
+{
+ PASCardCursor *cursor = PAS_CARD_CURSOR (bonobo_object_from_servant (servant));
+ if ( cursor->priv->get_length )
+ return cursor->priv->get_length( cursor, cursor->priv->data );
+ else
+ return 0;
+}
+
+/*
+ * CORBA Demo::Echo::echo method implementation
+ */
+static char *
+impl_pas_card_cursor_get_nth (PortableServer_Servant servant,
+ const CORBA_long n,
+ CORBA_Environment *ev)
+{
+ PASCardCursor *cursor = PAS_CARD_CURSOR (bonobo_object_from_servant (servant));
+ if ( cursor->priv->get_nth )
+ return cursor->priv->get_nth( cursor, n, cursor->priv->data );
+ else
+ return "";
+}
+
+/*
+ * If you want users to derive classes from your implementation
+ * you need to support this method.
+ */
+POA_Evolution_CardCursor__epv *
+pas_card_cursor_get_epv (void)
+{
+ POA_Evolution_CardCursor__epv *epv;
+
+ epv = g_new0 (POA_Evolution_CardCursor__epv, 1);
+
+ /*
+ * This is the method invoked by CORBA
+ */
+ epv->get_length = impl_pas_card_cursor_get_length;
+ epv->get_nth = impl_pas_card_cursor_get_nth;
+
+ return epv;
+}
+
+static void
+init_pas_card_cursor_corba_class (void)
+{
+ cursor_vepv.Bonobo_Unknown_epv = bonobo_object_get_epv ();
+ cursor_vepv.Evolution_CardCursor_epv = pas_card_cursor_get_epv ();
+}
+
+static void
+pas_card_cursor_class_init (PASCardCursorClass *klass)
+{
+ GtkObjectClass *object_class = (GtkObjectClass *) klass;
+
+ parent_class = gtk_type_class (bonobo_object_get_type ());
+
+ object_class->destroy = pas_card_cursor_destroy;
+
+ init_pas_card_cursor_corba_class ();
+}
+
+static void
+pas_card_cursor_init (PASCardCursor *cursor)
+{
+ cursor->priv = g_new(PASCardCursorPrivate, 1);
+ cursor->priv->get_length = NULL;
+ cursor->priv->get_nth = NULL;
+ cursor->priv->data = NULL;
+}
+
+GtkType
+pas_card_cursor_get_type (void)
+{
+ static GtkType type = 0;
+
+ if (!type){
+ GtkTypeInfo info = {
+ "PASCardCursor",
+ sizeof (PASCardCursor),
+ sizeof (PASCardCursorClass),
+ (GtkClassInitFunc) pas_card_cursor_class_init,
+ (GtkObjectInitFunc) pas_card_cursor_init,
+ NULL, /* reserved 1 */
+ NULL, /* reserved 2 */
+ (GtkClassInitFunc) NULL
+ };
+
+ type = gtk_type_unique (bonobo_object_get_type (), &info);
+ }
+
+ return type;
+}
+
+PASCardCursor *
+pas_card_cursor_construct (PASCardCursor *cursor,
+ Evolution_CardCursor corba_cursor,
+ PASCardCursorLengthFunc get_length,
+ PASCardCursorNthFunc get_nth,
+ gpointer data)
+{
+ g_return_val_if_fail (cursor != NULL, NULL);
+ g_return_val_if_fail (PAS_IS_CARD_CURSOR (cursor), NULL);
+ g_return_val_if_fail (corba_cursor != CORBA_OBJECT_NIL, NULL);
+
+ /*
+ * Call parent constructor
+ */
+ if (!bonobo_object_construct (BONOBO_OBJECT (cursor), (CORBA_Object) corba_cursor))
+ return NULL;
+
+ /*
+ * Initialize cursor
+ */
+ cursor->priv->get_length = get_length;
+ cursor->priv->get_nth = get_nth;
+ cursor->priv->data = data;
+
+ /*
+ * Success: return the GtkType we were given
+ */
+ return cursor;
+}
+
+/*
+ * This routine creates the ORBit CORBA server and initializes the
+ * CORBA side of things
+ */
+static Evolution_CardCursor
+create_cursor (BonoboObject *cursor)
+{
+ POA_Evolution_CardCursor *servant;
+ CORBA_Environment ev;
+
+ servant = (POA_Evolution_CardCursor *) g_new (BonoboObjectServant, 1);
+ servant->vepv = &cursor_vepv;
+
+ CORBA_exception_init (&ev);
+ POA_Evolution_CardCursor__init ((PortableServer_Servant) servant, &ev);
+ if (ev._major != CORBA_NO_EXCEPTION){
+ g_free (servant);
+ CORBA_exception_free (&ev);
+ return CORBA_OBJECT_NIL;
+ }
+
+ CORBA_exception_free (&ev);
+
+ /*
+ * Activates the CORBA object.
+ */
+ return (Evolution_CardCursor) bonobo_object_activate_servant (cursor, servant);
+}
+
+PASCardCursor *
+pas_card_cursor_new (PASCardCursorLengthFunc get_length,
+ PASCardCursorNthFunc get_nth,
+ gpointer data)
+{
+ PASCardCursor *cursor;
+ Evolution_CardCursor corba_cursor;
+
+ cursor = gtk_type_new (pas_card_cursor_get_type ());
+ corba_cursor = create_cursor (BONOBO_OBJECT (cursor));
+
+ if (corba_cursor == CORBA_OBJECT_NIL){
+ gtk_object_destroy (GTK_OBJECT (cursor));
+ return NULL;
+ }
+
+ return pas_card_cursor_construct (cursor,
+ corba_cursor,
+ get_length,
+ get_nth,
+ data);
+}