aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/backend/ebook/e-card-iterator.c
diff options
context:
space:
mode:
Diffstat (limited to 'addressbook/backend/ebook/e-card-iterator.c')
-rw-r--r--addressbook/backend/ebook/e-card-iterator.c169
1 files changed, 169 insertions, 0 deletions
diff --git a/addressbook/backend/ebook/e-card-iterator.c b/addressbook/backend/ebook/e-card-iterator.c
new file mode 100644
index 0000000000..df4cb5a4a4
--- /dev/null
+++ b/addressbook/backend/ebook/e-card-iterator.c
@@ -0,0 +1,169 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Authors:
+ * Christopher James Lahey <clahey@umich.edu>
+ *
+ * Copyright (C) 2000 Helix Code, Inc.
+ * Copyright (C) 1999 The Free Software Foundation
+ */
+
+#include <config.h>
+#include <gtk/gtk.h>
+
+#include <e-card-iterator.h>
+
+#define ECI_CLASS(object) (E_CARD_ITERATOR_CLASS(GTK_OBJECT((object))->klass))
+
+static void e_card_iterator_init (ECardIterator *card);
+static void e_card_iterator_class_init (ECardIteratorClass *klass);
+
+#define PARENT_TYPE (gtk_object_get_type ())
+
+static GtkObjectClass *parent_class;
+
+enum {
+ INVALIDATE,
+ LAST_SIGNAL
+};
+
+static guint e_card_iterator_signals [LAST_SIGNAL] = { 0, };
+
+/**
+ * e_card_iterator_get_type:
+ * @void:
+ *
+ * Registers the &ECardIterator class if necessary, and returns the type ID
+ * associated to it.
+ *
+ * Return value: The type ID of the &ECardIterator class.
+ **/
+GtkType
+e_card_iterator_get_type (void)
+{
+ static GtkType type = 0;
+
+ if (!type) {
+ GtkTypeInfo info = {
+ "ECardIterator",
+ sizeof (ECardIterator),
+ sizeof (ECardIteratorClass),
+ (GtkClassInitFunc) e_card_iterator_class_init,
+ (GtkObjectInitFunc) e_card_iterator_init,
+ NULL, /* reserved_1 */
+ NULL, /* reserved_2 */
+ (GtkClassInitFunc) NULL
+ };
+
+ type = gtk_type_unique (PARENT_TYPE, &info);
+ }
+
+ return type;
+}
+
+static void
+e_card_iterator_class_init (ECardIteratorClass *klass)
+{
+ GtkObjectClass *object_class;
+
+ object_class = GTK_OBJECT_CLASS(klass);
+
+ parent_class = gtk_type_class (PARENT_TYPE);
+
+ e_card_iterator_signals [INVALIDATE] =
+ gtk_signal_new ("invalidate",
+ GTK_RUN_LAST,
+ object_class->type,
+ GTK_SIGNAL_OFFSET (ECardIteratorClass, invalidate),
+ gtk_marshal_NONE__NONE,
+ GTK_TYPE_NONE, 0);
+
+ gtk_object_class_add_signals (object_class, e_card_iterator_signals, LAST_SIGNAL);
+
+ klass->invalidate = NULL;
+ klass->get = NULL;
+ klass->reset = NULL;
+ klass->next = NULL;
+ klass->prev = NULL;
+ klass->delete = NULL;
+ klass->set = NULL;
+ klass->is_valid = NULL;
+}
+
+/**
+ * e_card_iterator_init:
+ */
+static void
+e_card_iterator_init (ECardIterator *card)
+{
+}
+
+/*
+ * Virtual functions:
+ */
+void *
+e_card_iterator_get (ECardIterator *iterator)
+{
+ if (ECI_CLASS(iterator)->get)
+ return ECI_CLASS(iterator)->get(iterator);
+ else
+ return NULL;
+}
+
+void
+e_card_iterator_reset (ECardIterator *iterator)
+{
+ if (ECI_CLASS(iterator)->reset)
+ ECI_CLASS(iterator)->reset(iterator);
+}
+
+gboolean
+e_card_iterator_next (ECardIterator *iterator)
+{
+ if (ECI_CLASS(iterator)->next)
+ return ECI_CLASS(iterator)->next(iterator);
+ else
+ return FALSE;
+}
+
+gboolean
+e_card_iterator_prev (ECardIterator *iterator)
+{
+ if (ECI_CLASS(iterator)->prev)
+ return ECI_CLASS(iterator)->prev(iterator);
+ else
+ return FALSE;
+}
+
+void
+e_card_iterator_delete (ECardIterator *iterator)
+{
+ if (ECI_CLASS(iterator)->delete)
+ ECI_CLASS(iterator)->delete(iterator);
+}
+
+void
+e_card_iterator_set (ECardIterator *iterator,
+ void *object)
+{
+ if (ECI_CLASS(iterator)->set)
+ ECI_CLASS(iterator)->set(iterator, object);
+}
+
+gboolean
+e_card_iterator_is_valid (ECardIterator *iterator)
+{
+ if (ECI_CLASS(iterator)->is_valid)
+ return ECI_CLASS(iterator)->is_valid(iterator);
+ else
+ return FALSE;
+}
+
+void
+e_card_iterator_invalidate (ECardIterator *iterator)
+{
+ g_return_if_fail (iterator != NULL);
+ g_return_if_fail (E_IS_CARD_ITERATOR (iterator));
+
+ gtk_signal_emit (GTK_OBJECT (iterator),
+ e_card_iterator_signals [INVALIDATE]);
+}