aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--addressbook/ChangeLog15
-rw-r--r--addressbook/gui/component/select-names/Evolution-Addressbook-SelectNames.idl73
-rw-r--r--addressbook/gui/component/select-names/Makefile.am4
-rw-r--r--addressbook/gui/component/select-names/e-select-names-bonobo.c36
-rw-r--r--addressbook/gui/component/select-names/e-simple-card-bonobo.c269
-rw-r--r--addressbook/gui/component/select-names/e-simple-card-bonobo.h70
6 files changed, 455 insertions, 12 deletions
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog
index ade3e3d532..214b87c0df 100644
--- a/addressbook/ChangeLog
+++ b/addressbook/ChangeLog
@@ -1,3 +1,18 @@
+2002-05-10 Christopher James Lahey <clahey@ximian.com>
+
+ * gui/component/select-names/Evolution-Addressbook-SelectNames.idl:
+ Added SimpleCard interface.
+
+ * gui/component/select-names/Makefile.am: Added
+ e-simple-card-bonobo.c and e-simple-card-bonobo.h.
+
+ * gui/component/select-names/e-select-names-bonobo.c
+ (entry_get_property_fn): Added SIMPLE_CARD_LIST arg.
+
+ * gui/component/select-names/e-simple-card-bonobo.c,
+ gui/component/select-names/e-simple-card-bonobo.h: New class to
+ represent an ECardSimple across Bonobo.
+
2002-05-09 Christopher James Lahey <clahey@ximian.com>
* gui/component/select-names/e-select-names-bonobo.c
diff --git a/addressbook/gui/component/select-names/Evolution-Addressbook-SelectNames.idl b/addressbook/gui/component/select-names/Evolution-Addressbook-SelectNames.idl
index 244799deb2..f25279bb38 100644
--- a/addressbook/gui/component/select-names/Evolution-Addressbook-SelectNames.idl
+++ b/addressbook/gui/component/select-names/Evolution-Addressbook-SelectNames.idl
@@ -1,4 +1,4 @@
-/* -*- Mode: IDL; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
/*
* CORBA interface for the SelectNames dialog.
*
@@ -14,6 +14,77 @@ module GNOME {
module Evolution {
module Addressbook {
+ interface SimpleCard : Bonobo::Unknown {
+ struct Arbitrary {
+ string key;
+ string type;
+ string value;
+ };
+
+ enum Field {
+ FileAs,
+ FullName,
+ Email,
+ PhonePrimary,
+ PhoneAssistant,
+ PhoneBusiness,
+ PhoneCallback,
+ PhoneCompany,
+ PhoneHome,
+ Org,
+ AddressBusiness,
+ AddressHome,
+ PhoneMobile,
+ PhoneCar,
+ PhoneBusinessFax,
+ PhoneHomeFax,
+ PhoneBusiness2,
+ PhoneHome2,
+ PhoneIsdn,
+ PhoneOther,
+ PhoneOtherFax,
+ PhonePager,
+ PhoneRadio,
+ PhoneTelex,
+ PhoneTtytdd,
+ AddressOther,
+ Email2,
+ Email3,
+ Url,
+ OrgUnit,
+ Office,
+ Title,
+ Role,
+ Manager,
+ Assistant,
+ Nickname,
+ Spouse,
+ Note,
+ Caluri,
+ Fburl,
+ Anniversary,
+ BirthDate,
+ Mailer,
+ NameOrOrg,
+ Categories,
+ FamilyName,
+ GivenName,
+ AdditionalName,
+ NameSuffix,
+ WantsHtml,
+ IsList,
+ Last
+ };
+
+ Arbitrary getArbitrary (in string key);
+ void setArbitrary (in string key, in string type, in string value);
+
+ string get (in Field field);
+ void set (in Field field, in string value);
+ };
+
+ typedef sequence<SimpleCard> SimpleCardList;
+
interface SelectNames : Bonobo::Unknown {
struct Section {
string id;
diff --git a/addressbook/gui/component/select-names/Makefile.am b/addressbook/gui/component/select-names/Makefile.am
index 0f6789dd11..347af45f74 100644
--- a/addressbook/gui/component/select-names/Makefile.am
+++ b/addressbook/gui/component/select-names/Makefile.am
@@ -63,7 +63,9 @@ libeselectnames_la_SOURCES = \
e-select-names-text-model.c \
e-select-names-text-model.h \
e-select-names.c \
- e-select-names.h
+ e-select-names.h \
+ e-simple-card-bonobo.c \
+ e-simple-card-bonobo.h
gladedir = $(datadir)/evolution/glade
glade_DATA = select-names.glade
diff --git a/addressbook/gui/component/select-names/e-select-names-bonobo.c b/addressbook/gui/component/select-names/e-select-names-bonobo.c
index 0a763899c6..a8d0975771 100644
--- a/addressbook/gui/component/select-names/e-select-names-bonobo.c
+++ b/addressbook/gui/component/select-names/e-select-names-bonobo.c
@@ -25,6 +25,7 @@
#endif
#include "e-select-names-bonobo.h"
+#include "e-simple-card-bonobo.h"
#include <bonobo/bonobo-property-bag.h>
#include <bonobo/bonobo-control.h>
@@ -53,7 +54,7 @@ struct _ESelectNamesBonoboPrivate {
enum _EntryPropertyID {
ENTRY_PROPERTY_ID_TEXT,
ENTRY_PROPERTY_ID_DESTINATIONS,
- ENTRY_PROPERTY_ID_FIRST_EMAIL,
+ ENTRY_PROPERTY_ID_SIMPLE_CARD_LIST,
ENTRY_PROPERTY_ID_ALLOW_CONTACT_LISTS,
ENTRY_PROPERTY_ID_ENTRY_CHANGED
};
@@ -98,20 +99,35 @@ entry_get_property_fn (BonoboPropertyBag *bag,
}
break;
- case ENTRY_PROPERTY_ID_FIRST_EMAIL:
+ case ENTRY_PROPERTY_ID_SIMPLE_CARD_LIST:
{
ESelectNamesModel *model;
+ int count;
+ int i;
+ GNOME_Evolution_Addressbook_SimpleCardList *card_list;
model = E_SELECT_NAMES_MODEL (gtk_object_get_data (GTK_OBJECT (w), "select_names_model"));
g_assert (model != NULL);
- if (e_select_names_model_count (model) > 0) {
- const EDestination *destination = e_select_names_model_get_destination (model, 0);
- const char *text = e_destination_get_email (destination);
- BONOBO_ARG_SET_STRING (arg, text);
- } else {
- BONOBO_ARG_SET_STRING (arg, "");
+ count = e_select_names_model_count (model);
+
+ card_list = GNOME_Evolution_Addressbook_SimpleCardList__alloc ();
+ card_list->_buffer = CORBA_sequence_GNOME_Evolution_Addressbook_SimpleCard_allocbuf (count);
+ card_list->_maximum = count;
+ card_list->_length = count;
+
+ for (i = 0; i < count; i++) {
+ const EDestination *destination = e_select_names_model_get_destination (model, i);
+ const ECard *card = e_destination_get_card (destination);
+ ECardSimple *simple = e_card_simple_new ((ECard *) card);
+ ESimpleCardBonobo *simple_card = e_simple_card_bonobo_new (simple);
+ gtk_object_unref (GTK_OBJECT (simple));
+
+ card_list->_buffer[i] = bonobo_object_corba_objref (BONOBO_OBJECT (simple_card));
}
+
+ CORBA_free (arg->_value);
+ BONOBO_ARG_SET_GENERAL (arg, card_list, TC_GNOME_Evolution_Addressbook_SimpleCardList, GNOME_Evolution_Addressbook_SimpleCardList *, NULL);
}
break;
@@ -333,8 +349,8 @@ impl_SelectNames_get_entry_for_section (PortableServer_Servant servant,
bonobo_property_bag_add (property_bag, "destinations", ENTRY_PROPERTY_ID_DESTINATIONS,
BONOBO_ARG_STRING, NULL, NULL,
BONOBO_PROPERTY_READABLE | BONOBO_PROPERTY_WRITEABLE);
- bonobo_property_bag_add (property_bag, "first_email", ENTRY_PROPERTY_ID_FIRST_EMAIL,
- BONOBO_ARG_STRING, NULL, NULL,
+ bonobo_property_bag_add (property_bag, "simple_card_list", ENTRY_PROPERTY_ID_SIMPLE_CARD_LIST,
+ TC_GNOME_Evolution_Addressbook_SimpleCardList, NULL, NULL,
BONOBO_PROPERTY_READABLE);
bonobo_property_bag_add (property_bag, "allow_contact_lists", ENTRY_PROPERTY_ID_ALLOW_CONTACT_LISTS,
BONOBO_ARG_BOOLEAN, NULL, NULL,
diff --git a/addressbook/gui/component/select-names/e-simple-card-bonobo.c b/addressbook/gui/component/select-names/e-simple-card-bonobo.c
new file mode 100644
index 0000000000..9834eddd83
--- /dev/null
+++ b/addressbook/gui/component/select-names/e-simple-card-bonobo.c
@@ -0,0 +1,269 @@
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
+/* e-simple-card-bonobo.c
+ *
+ * Copyright (C) 2000 Ximian, Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Authors:
+ * Ettore Perazzoli <ettore@ximian.com>
+ * Chris Lahey <clahey@ximian.com>
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "e-simple-card-bonobo.h"
+
+#include <gal/util/e-util.h>
+
+#include "Evolution-Addressbook-SelectNames.h"
+
+
+#define PARENT_TYPE bonobo_object_get_type ()
+static BonoboObjectClass *parent_class = NULL;
+
+struct _ESimpleCardBonoboPrivate {
+ ECardSimple *card_simple;
+};
+
+
+/* CORBA interface implementation. */
+
+static POA_GNOME_Evolution_Addressbook_SimpleCard__vepv SimpleCard_vepv;
+
+static POA_GNOME_Evolution_Addressbook_SimpleCard *
+create_servant (void)
+{
+ POA_GNOME_Evolution_Addressbook_SimpleCard *servant;
+ CORBA_Environment ev;
+
+ servant = (POA_GNOME_Evolution_Addressbook_SimpleCard *) g_new0 (BonoboObjectServant, 1);
+ servant->vepv = &SimpleCard_vepv;
+
+ CORBA_exception_init (&ev);
+
+ POA_GNOME_Evolution_Addressbook_SimpleCard__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 GNOME_Evolution_Addressbook_SimpleCard_Arbitrary *
+impl_SimpleCard_get_arbitrary (PortableServer_Servant servant,
+ const CORBA_char *key,
+ CORBA_Environment *ev)
+{
+ BonoboObject *bonobo_object;
+ ESimpleCardBonobo *simple_card;
+ ESimpleCardBonoboPrivate *priv;
+ GNOME_Evolution_Addressbook_SimpleCard_Arbitrary *ret_val = GNOME_Evolution_Addressbook_SimpleCard_Arbitrary__alloc ();
+
+ bonobo_object = bonobo_object_from_servant (servant);
+ simple_card = E_SIMPLE_CARD_BONOBO (bonobo_object);
+ priv = simple_card->priv;
+
+ if (priv->card_simple) {
+ const ECardArbitrary *arbitrary = e_card_simple_get_arbitrary (priv->card_simple, key);
+ ret_val->key = CORBA_string_dup (arbitrary->key);
+ ret_val->value = CORBA_string_dup (arbitrary->value);
+ ret_val->type = CORBA_string_dup (arbitrary->type);
+ } else {
+ ret_val->key = CORBA_string_dup ("");
+ ret_val->value = CORBA_string_dup ("");
+ ret_val->type = CORBA_string_dup ("");
+ }
+
+ return ret_val;
+}
+
+static void
+impl_SimpleCard_set_arbitrary (PortableServer_Servant servant,
+ const CORBA_char *key,
+ const CORBA_char *type,
+ const CORBA_char *value,
+ CORBA_Environment *ev)
+{
+ BonoboObject *bonobo_object;
+ ESimpleCardBonobo *simple_card;
+ ESimpleCardBonoboPrivate *priv;
+
+ bonobo_object = bonobo_object_from_servant (servant);
+ simple_card = E_SIMPLE_CARD_BONOBO (bonobo_object);
+ priv = simple_card->priv;
+
+ if (priv->card_simple) {
+ e_card_simple_set_arbitrary (priv->card_simple, key, type, value);
+ }
+}
+
+static CORBA_char *
+impl_SimpleCard_get (PortableServer_Servant servant,
+ GNOME_Evolution_Addressbook_SimpleCard_Field field,
+ CORBA_Environment *ev)
+{
+ BonoboObject *bonobo_object;
+ ESimpleCardBonobo *simple_card;
+ ESimpleCardBonoboPrivate *priv;
+
+ bonobo_object = bonobo_object_from_servant (servant);
+ simple_card = E_SIMPLE_CARD_BONOBO (bonobo_object);
+ priv = simple_card->priv;
+
+ if (priv->card_simple) {
+ char *value = e_card_simple_get (priv->card_simple,
+ field);
+ char *ret_val = CORBA_string_dup (value);
+ g_free (value);
+ return ret_val;
+ } else {
+ return CORBA_string_dup ("");
+ }
+}
+
+static void
+impl_SimpleCard_set (PortableServer_Servant servant,
+ GNOME_Evolution_Addressbook_SimpleCard_Field field,
+ const CORBA_char *value,
+ CORBA_Environment *ev)
+{
+ BonoboObject *bonobo_object;
+ ESimpleCardBonobo *simple_card;
+ ESimpleCardBonoboPrivate *priv;
+
+ bonobo_object = bonobo_object_from_servant (servant);
+ simple_card = E_SIMPLE_CARD_BONOBO (bonobo_object);
+ priv = simple_card->priv;
+
+ if (priv->card_simple) {
+ e_card_simple_set (priv->card_simple,
+ field,
+ value);
+ }
+}
+
+
+/* GtkObject methods. */
+
+static void
+impl_destroy (GtkObject *object)
+{
+ ESimpleCardBonobo *simple_card;
+ ESimpleCardBonoboPrivate *priv;
+
+ simple_card = E_SIMPLE_CARD_BONOBO (object);
+ priv = simple_card->priv;
+
+ if (priv->card_simple) {
+ gtk_object_unref (GTK_OBJECT (priv->card_simple));
+ }
+
+ g_free (priv);
+
+ simple_card->priv = NULL;
+}
+
+
+static void
+corba_class_init ()
+{
+ POA_GNOME_Evolution_Addressbook_SimpleCard__vepv *vepv;
+ POA_GNOME_Evolution_Addressbook_SimpleCard__epv *epv;
+ PortableServer_ServantBase__epv *base_epv;
+
+ base_epv = g_new0 (PortableServer_ServantBase__epv, 1);
+ base_epv->_private = NULL;
+ base_epv->finalize = NULL;
+ base_epv->default_POA = NULL;
+
+ epv = g_new0 (POA_GNOME_Evolution_Addressbook_SimpleCard__epv, 1);
+ epv->getArbitrary = impl_SimpleCard_get_arbitrary;
+ epv->setArbitrary = impl_SimpleCard_set_arbitrary;
+ epv->get = impl_SimpleCard_get;
+ epv->set = impl_SimpleCard_set;
+
+ vepv = &SimpleCard_vepv;
+ vepv->Bonobo_Unknown_epv = bonobo_object_get_epv ();
+ vepv->GNOME_Evolution_Addressbook_SimpleCard_epv = epv;
+}
+
+static void
+class_init (ESimpleCardBonoboClass *klass)
+{
+ GtkObjectClass *object_class;
+
+ object_class = GTK_OBJECT_CLASS (klass);
+ parent_class = gtk_type_class (bonobo_object_get_type ());
+
+ object_class->destroy = impl_destroy;
+
+ corba_class_init ();
+}
+
+static void
+init (ESimpleCardBonobo *simple_card)
+{
+ ESimpleCardBonoboPrivate *priv;
+
+ priv = g_new (ESimpleCardBonoboPrivate, 1);
+
+ priv->card_simple = NULL;
+
+ simple_card->priv = priv;
+}
+
+
+void
+e_simple_card_bonobo_construct (ESimpleCardBonobo *simple_card,
+ GNOME_Evolution_Addressbook_SimpleCard corba_object,
+ ECardSimple *card_simple)
+{
+ g_return_if_fail (simple_card != NULL);
+ g_return_if_fail (E_IS_SIMPLE_CARD_BONOBO (simple_card));
+
+ bonobo_object_construct (BONOBO_OBJECT (simple_card), corba_object);
+
+ simple_card->priv->card_simple = card_simple;
+ gtk_object_ref (GTK_OBJECT (card_simple));
+}
+
+ESimpleCardBonobo *
+e_simple_card_bonobo_new (ECardSimple *card_simple)
+{
+ POA_GNOME_Evolution_Addressbook_SimpleCard *servant;
+ GNOME_Evolution_Addressbook_SimpleCard corba_object;
+ ESimpleCardBonobo *simple_card;
+
+ servant = create_servant ();
+ if (servant == NULL)
+ return NULL;
+
+ simple_card = gtk_type_new (e_simple_card_bonobo_get_type ());
+
+ corba_object = bonobo_object_activate_servant (BONOBO_OBJECT (simple_card), servant);
+ e_simple_card_bonobo_construct (simple_card, corba_object, card_simple);
+
+ return simple_card;
+}
+
+
+E_MAKE_TYPE (e_simple_card_bonobo, "ESimpleCardBonobo", ESimpleCardBonobo, class_init, init, PARENT_TYPE)
diff --git a/addressbook/gui/component/select-names/e-simple-card-bonobo.h b/addressbook/gui/component/select-names/e-simple-card-bonobo.h
new file mode 100644
index 0000000000..763c54085b
--- /dev/null
+++ b/addressbook/gui/component/select-names/e-simple-card-bonobo.h
@@ -0,0 +1,70 @@
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
+/* e-simple-card-bonobo.h
+ *
+ * Copyright (C) 2000 Ximian, Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Authors:
+ * Ettore Perazzoli <ettore@ximian.com>
+ * Chris Lahey <clahey@ximian.com>
+ */
+
+#ifndef __E_SIMPLE_CARD_BONOBO_H__
+#define __E_SIMPLE_CARD_BONOBO_H__
+
+#include <bonobo/bonobo-object.h>
+
+#include "Evolution-Addressbook-SelectNames.h"
+#include <addressbook/backend/ebook/e-card-simple.h>
+
+#ifdef __cplusplus
+extern "C" {
+#pragma }
+#endif /* __cplusplus */
+
+#define E_TYPE_SIMPLE_CARD_BONOBO (e_simple_card_bonobo_get_type ())
+#define E_SIMPLE_CARD_BONOBO(obj) (GTK_CHECK_CAST ((obj), E_TYPE_SIMPLE_CARD_BONOBO, ESimpleCardBonobo))
+#define E_SIMPLE_CARD_BONOBO_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), E_TYPE_SIMPLE_CARD_BONOBO, ESimpleCardBonoboClass))
+#define E_IS_SIMPLE_CARD_BONOBO(obj) (GTK_CHECK_TYPE ((obj), E_TYPE_SIMPLE_CARD_BONOBO))
+#define E_IS_SIMPLE_CARD_BONOBO_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), E_TYPE_SIMPLE_CARD_BONOBO))
+
+
+typedef struct _ESimpleCardBonobo ESimpleCardBonobo;
+typedef struct _ESimpleCardBonoboPrivate ESimpleCardBonoboPrivate;
+typedef struct _ESimpleCardBonoboClass ESimpleCardBonoboClass;
+
+struct _ESimpleCardBonobo {
+ BonoboObject parent;
+
+ ESimpleCardBonoboPrivate *priv;
+};
+
+struct _ESimpleCardBonoboClass {
+ BonoboObjectClass parent_class;
+};
+
+
+GtkType e_simple_card_bonobo_get_type (void);
+void e_simple_card_bonobo_construct (ESimpleCardBonobo *simple_card,
+ GNOME_Evolution_Addressbook_SimpleCard corba_object,
+ ECardSimple *card_simple);
+ESimpleCardBonobo *e_simple_card_bonobo_new (ECardSimple *card_simple);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* __E_SIMPLE_CARD_BONOBO_H__ */