diff options
Diffstat (limited to 'addressbook/backend/ebook/e-contact.h')
-rw-r--r-- | addressbook/backend/ebook/e-contact.h | 227 |
1 files changed, 227 insertions, 0 deletions
diff --git a/addressbook/backend/ebook/e-contact.h b/addressbook/backend/ebook/e-contact.h new file mode 100644 index 0000000000..8de02caa5f --- /dev/null +++ b/addressbook/backend/ebook/e-contact.h @@ -0,0 +1,227 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * Authors: + * Chris Toshok <toshok@ximian.com> + * + * Copyright (C) 2003 Ximian, Inc. + */ + +#ifndef __E_CONTACT_H__ +#define __E_CONTACT_H__ + +#include <time.h> +#include <glib-object.h> +#include <stdio.h> +#include <ebook/e-vcard.h> + +#define E_TYPE_CONTACT (e_contact_get_type ()) +#define E_CONTACT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), E_TYPE_CONTACT, EContact)) +#define E_CONTACT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), E_TYPE_CONTACT, EContactClass)) +#define E_IS_CONTACT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), E_TYPE_CONTACT)) +#define E_IS_CONTACT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), E_TYPE_CONTACT)) +#define E_CONTACT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), E_TYPE_CONTACT, EContactClass)) + +typedef struct _EContact EContact; +typedef struct _EContactClass EContactClass; +typedef struct _EContactPrivate EContactPrivate; + +typedef enum { + + E_CONTACT_UID = 1, /* string field */ + E_CONTACT_FILE_AS, /* string field */ + + /* Name fields */ + E_CONTACT_FULL_NAME, /* string field */ + E_CONTACT_GIVEN_NAME, /* synthetic string field */ + E_CONTACT_FAMILY_NAME, /* synthetic string field */ + E_CONTACT_NICKNAME, /* string field */ + + /* Email fields */ + E_CONTACT_EMAIL_1, /* synthetic string field */ + E_CONTACT_EMAIL_2, /* synthetic string field */ + E_CONTACT_EMAIL_3, /* synthetic string field */ + + E_CONTACT_MAILER, /* string field */ + + /* Address Labels */ + E_CONTACT_ADDRESS_LABEL_HOME, /* synthetic string field */ + E_CONTACT_ADDRESS_LABEL_WORK, /* synthetic string field */ + E_CONTACT_ADDRESS_LABEL_OTHER, /* synthetic string field */ + + /* Phone fields */ + E_CONTACT_PHONE_ASSISTANT, + E_CONTACT_PHONE_BUSINESS, + E_CONTACT_PHONE_BUSINESS_2, + E_CONTACT_PHONE_BUSINESS_FAX, + E_CONTACT_PHONE_CALLBACK, + E_CONTACT_PHONE_CAR, + E_CONTACT_PHONE_COMPANY, + E_CONTACT_PHONE_HOME, + E_CONTACT_PHONE_HOME_2, + E_CONTACT_PHONE_HOME_FAX, + E_CONTACT_PHONE_ISDN, + E_CONTACT_PHONE_MOBILE, + E_CONTACT_PHONE_OTHER, + E_CONTACT_PHONE_OTHER_FAX, + E_CONTACT_PHONE_PAGER, + E_CONTACT_PHONE_PRIMARY, + E_CONTACT_PHONE_RADIO, + E_CONTACT_PHONE_TELEX, + E_CONTACT_PHONE_TTYTDD, + + /* Organizational fields */ + E_CONTACT_ORG, /* string field */ + E_CONTACT_ORG_UNIT, /* string field */ + E_CONTACT_OFFICE, /* string field */ + E_CONTACT_TITLE, /* string field */ + E_CONTACT_ROLE, /* string field */ + E_CONTACT_MANAGER, /* string field */ + E_CONTACT_ASSISTANT, /* string field */ + + /* Web fields */ + E_CONTACT_HOMEPAGE_URL, /* string field */ + E_CONTACT_BLOG_URL, /* string field */ + + /* Contact categories */ + E_CONTACT_CATEGORIES, /* string field */ + + /* Collaboration fields */ + E_CONTACT_CALENDAR_URI, /* string field */ + E_CONTACT_FREEBUSY_URL, /* string field */ + E_CONTACT_ICS_CALENDAR, /* string field */ + + /* misc fields */ + E_CONTACT_SPOUSE, /* string field */ + E_CONTACT_NOTE, /* string field */ + + /* fields used for describing contact lists. a contact list + is just a contact with _IS_LIST set to true. the members + are listed in the _EMAIL field. */ + E_CONTACT_IS_LIST, /* boolean field */ + E_CONTACT_LIST_SHOW_ADDRESSES, /* boolean field */ + + /* Instant Messaging fields */ + E_CONTACT_IM_AIM, /* Multi-valued */ + E_CONTACT_IM_JABBER, /* Multi-valued */ + E_CONTACT_IM_YAHOO, /* Multi-valued */ + E_CONTACT_IM_MSN, /* Multi-valued */ + E_CONTACT_IM_ICQ, /* Multi-valued */ + + /* Address fields */ + E_CONTACT_ADDRESS, /* Multi-valued structured (EContactAddress) */ + E_CONTACT_ADDRESS_HOME, /* synthetic structured field (EContactAddress) */ + E_CONTACT_ADDRESS_WORK, /* synthetic structured field (EContactAddress) */ + E_CONTACT_ADDRESS_OTHER, /* synthetic structured field (EContactAddress) */ + + E_CONTACT_CATEGORY_LIST, /* multi-valued */ + + /* Photo/Logo */ + E_CONTACT_PHOTO, /* structured field (EContactPhoto) */ + E_CONTACT_LOGO, /* structured field (EContactPhoto) */ + + E_CONTACT_NAME, /* structured field (EContactName) */ + E_CONTACT_EMAIL, /* Multi-valued */ + + E_CONTACT_WANTS_HTML, /* boolean field */ + + E_CONTACT_BIRTH_DATE, /* structured field (EContactDate) */ + E_CONTACT_ANNIVERSARY, /* structured field (EContactDate) */ + + E_CONTACT_FIELD_LAST, + + /* useful constants */ + E_CONTACT_LAST_SIMPLE_STRING = E_CONTACT_NOTE, + E_CONTACT_FIRST_PHONE_ID = E_CONTACT_PHONE_ASSISTANT, + E_CONTACT_LAST_PHONE_ID = E_CONTACT_PHONE_TTYTDD, + E_CONTACT_FIRST_EMAIL_ID = E_CONTACT_EMAIL_1, + E_CONTACT_LAST_EMAIL_ID = E_CONTACT_EMAIL_3, + E_CONTACT_FIRST_ADDRESS_ID = E_CONTACT_ADDRESS_HOME, + E_CONTACT_LAST_ADDRESS_ID = E_CONTACT_ADDRESS_OTHER, + E_CONTACT_FIRST_LABEL_ID = E_CONTACT_ADDRESS_LABEL_HOME, + E_CONTACT_LAST_LABEL_ID = E_CONTACT_ADDRESS_LABEL_OTHER + +} EContactField; + +typedef struct { + char *family; + char *given; + char *additional; + char *prefixes; + char *suffixes; +} EContactName; + +typedef struct { + int length; + char *data; +} EContactPhoto; + +typedef struct { + char *address_format; /* the two letter country code that + determines the format/meaning of the + following fields */ + char *po; + char *ext; + char *street; + char *locality; + char *region; + char *code; + char *country; +} EContactAddress; + +typedef struct { + int year; + int month; + int day; +} EContactDate; + +struct _EContact { + EVCard parent; + + EContactPrivate *priv; +}; + +struct _EContactClass { + EVCardClass parent_class; + + /* Padding for future expansion */ + void (*_ebook_reserved0) (void); + void (*_ebook_reserved1) (void); + void (*_ebook_reserved2) (void); + void (*_ebook_reserved3) (void); + void (*_ebook_reserved4) (void); +}; + +GType e_contact_get_type (void); + +EContact* e_contact_new (void); +EContact* e_contact_new_from_vcard (const char *vcard); + +EContact* e_contact_duplicate (EContact *contact); + +gpointer e_contact_get (EContact *contact, EContactField field_id); +const gpointer e_contact_get_const (EContact *contact, EContactField field_id); +void e_contact_set (EContact *contact, EContactField field_id, gpointer value); + +/* misc functions for structured values */ +EContactDate *e_contact_date_new (void); +EContactDate *e_contact_date_from_string (const char *str); +char *e_contact_date_to_string (EContactDate *dt); + +EContactName *e_contact_name_new (void); +char *e_contact_name_to_string (const EContactName *name); +EContactName *e_contact_name_from_string (const char *name_str); +EContactName *e_contact_name_copy (EContactName *name); + + +/* destructors for structured values */ +void e_contact_date_free (EContactDate *date); +void e_contact_name_free (EContactName *name); +void e_contact_photo_free (EContactPhoto *photo); +void e_contact_address_free (EContactAddress *address); + + +const char* e_contact_field_name (EContactField field_id); +const char* e_contact_pretty_name (EContactField field_id); +EContactField e_contact_field_id (const char *field_name); + +#endif /* __E_CONTACT_H__ */ |