/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* * Authors: * Chris Toshok * * Copyright (C) 2003 Ximian, Inc. */ #ifndef __E_CONTACT_H__ #define __E_CONTACT_H__ #include #include #include #include #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) */ /* Security Fields */ E_CONTACT_X509_CERT, /* string field */ E_CONTACT_X509_CERT_SHA1_FINGERPRINT, /* string field */ 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__ */