aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/backend/ebook/e-card-list.c
diff options
context:
space:
mode:
authorChristopher James Lahey <clahey@helixcode.com>2000-04-05 03:30:28 +0800
committerChris Lahey <clahey@src.gnome.org>2000-04-05 03:30:28 +0800
commit2d75a701029288c953a84ba0a696675f5a7eb77f (patch)
treec59f2d15eb6129fec7de451b7d8ca26b164c7c71 /addressbook/backend/ebook/e-card-list.c
parent02dd5e38c87f297ebfee7468da15eac12d7c51cc (diff)
downloadgsoc2013-evolution-2d75a701029288c953a84ba0a696675f5a7eb77f.tar
gsoc2013-evolution-2d75a701029288c953a84ba0a696675f5a7eb77f.tar.gz
gsoc2013-evolution-2d75a701029288c953a84ba0a696675f5a7eb77f.tar.bz2
gsoc2013-evolution-2d75a701029288c953a84ba0a696675f5a7eb77f.tar.lz
gsoc2013-evolution-2d75a701029288c953a84ba0a696675f5a7eb77f.tar.xz
gsoc2013-evolution-2d75a701029288c953a84ba0a696675f5a7eb77f.tar.zst
gsoc2013-evolution-2d75a701029288c953a84ba0a696675f5a7eb77f.zip
Fixed an incorrect function.
2000-04-04 Christopher James Lahey <clahey@helixcode.com> * addressbook/backend/ebook/e-book-view.c: Fixed an incorrect function. * addressbook/backend/ebook/e-book-view.h, addressbook/backend/ebook/e-book.h: Fixed some incorrect function pointer declarations. * addressbook/backend/ebook/e-card-iterator.c, addressbook/backend/ebook/e-card-iterator.h, addressbook/backend/ebook/e-card-list-iterator.c, addressbook/backend/ebook/e-card-list-iterator.h, addressbook/backend/ebook/e-card-list.c, addressbook/backend/ebook/e-card-list.h, addressbook/backend/ebook/e-card.c, addressbook/backend/ebook/e-card.h, addressbook/backend/ebook/test-card.c: Built new iterator system for getting fields with multiple entries. * addressbook/backend/ebook/Makefile.am: Added new files addressbook/backend/ebook/e-card-iterator.c, addressbook/backend/ebook/e-card-iterator.h, addressbook/backend/ebook/e-card-list-iterator.c, addressbook/backend/ebook/e-card-list-iterator.h, addressbook/backend/ebook/e-card-list.c, and addressbook/backend/ebook/e-card-list.h. svn path=/trunk/; revision=2286
Diffstat (limited to 'addressbook/backend/ebook/e-card-list.c')
-rw-r--r--addressbook/backend/ebook/e-card-list.c134
1 files changed, 134 insertions, 0 deletions
diff --git a/addressbook/backend/ebook/e-card-list.c b/addressbook/backend/ebook/e-card-list.c
new file mode 100644
index 0000000000..641f5b1f0a
--- /dev/null
+++ b/addressbook/backend/ebook/e-card-list.c
@@ -0,0 +1,134 @@
+/* -*- 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-list.h>
+#include <e-card-list-iterator.h>
+
+#define ECL_CLASS(object) (E_CARD_LIST_CLASS(GTK_OBJECT((object))->klass))
+
+static void e_card_list_init (ECardList *card);
+static void e_card_list_class_init (ECardListClass *klass);
+static void e_card_list_destroy (GtkObject *object);
+
+#define PARENT_TYPE (gtk_object_get_type ())
+
+static GtkObjectClass *parent_class;
+
+/**
+ * e_card_list_get_type:
+ * @void:
+ *
+ * Registers the &ECardList class if necessary, and returns the type ID
+ * associated to it.
+ *
+ * Return value: The type ID of the &ECardList class.
+ **/
+GtkType
+e_card_list_get_type (void)
+{
+ static GtkType type = 0;
+
+ if (!type) {
+ GtkTypeInfo info = {
+ "ECardList",
+ sizeof (ECardList),
+ sizeof (ECardListClass),
+ (GtkClassInitFunc) e_card_list_class_init,
+ (GtkObjectInitFunc) e_card_list_init,
+ NULL, /* reserved_1 */
+ NULL, /* reserved_2 */
+ (GtkClassInitFunc) NULL
+ };
+
+ type = gtk_type_unique (PARENT_TYPE, &info);
+ }
+
+ return type;
+}
+
+static void
+e_card_list_class_init (ECardListClass *klass)
+{
+ GtkObjectClass *object_class;
+
+ object_class = GTK_OBJECT_CLASS(klass);
+
+ parent_class = gtk_type_class (PARENT_TYPE);
+
+ object_class->destroy = e_card_list_destroy;
+}
+
+/**
+ * e_card_list_init:
+ */
+static void
+e_card_list_init (ECardList *list)
+{
+ list->list = NULL;
+ list->iterators = NULL;
+}
+
+ECardList *
+e_card_list_new (ECardListCopyFunc copy, ECardListFreeFunc free, void *closure)
+{
+ ECardList *list = gtk_type_new(e_card_list_get_type());
+ list->copy = copy;
+ list->free = free;
+ list->closure = closure;
+ return list;
+}
+
+ECardIterator *
+e_card_list_get_iterator (ECardList *list)
+{
+ ECardIterator *iterator = e_card_list_iterator_new(list);
+ list->iterators = g_list_append(list->iterators, iterator);
+ return iterator;
+}
+
+void
+e_card_list_append (ECardList *list, void *data)
+{
+ e_card_list_invalidate_iterators(list, NULL);
+ if (list->copy)
+ list->list = g_list_append(list->list, list->copy(data, list->closure));
+ else
+ list->list = g_list_append(list->list, data);
+}
+
+void
+e_card_list_invalidate_iterators (ECardList *list, ECardIterator *skip)
+{
+ GList *iterators = list->iterators;
+ for (; iterators; iterators = iterators->next) {
+ if (iterators->data != skip) {
+ e_card_iterator_invalidate(E_CARD_ITERATOR(iterators->data));
+ }
+ }
+}
+
+void
+e_card_list_remove_iterator (ECardList *list, ECardIterator *iterator)
+{
+ list->iterators = g_list_remove(list->iterators, iterator);
+}
+
+/*
+ * Virtual functions
+ */
+static void
+e_card_list_destroy (GtkObject *object)
+{
+ ECardList *list = E_CARD_LIST(object);
+ g_list_foreach(list->list, (GFunc) list->free, list->closure);
+ g_list_free(list->list);
+}