[evolution-ews/gnome-2-28] Add profession, office_location, anniversary to EContact.



commit d370545ea5ed3ac9740c366920903a6539d71763
Author: Chenthill Palanisamy <pchenthill novell com>
Date:   Thu Oct 13 15:36:09 2011 +0530

    Add profession, office_location, anniversary to EContact.

 src/addressbook/e-book-backend-ews.c |   38 +++++++++++++++++++++++++++++++++-
 src/server/e-ews-item.c              |   13 +++++++++++
 src/server/e-ews-item.h              |    1 +
 3 files changed, 51 insertions(+), 1 deletions(-)
---
diff --git a/src/addressbook/e-book-backend-ews.c b/src/addressbook/e-book-backend-ews.c
index 7b6b39c..0128bde 100644
--- a/src/addressbook/e-book-backend-ews.c
+++ b/src/addressbook/e-book-backend-ews.c
@@ -224,6 +224,27 @@ ebews_populate_birth_date	(EContact *contact, EEwsItem *item)
 	}
 }
 
+static void
+ebews_populate_anniversary	(EContact *contact, EEwsItem *item)
+{
+	time_t bdate;
+	GDate date;
+	EContactDate edate;
+
+	bdate = e_ews_item_get_wedding_anniversary (item);
+
+	if (bdate) {
+		g_date_clear (&date, 1);
+		g_date_set_time_t (&date, bdate);
+	
+		edate.year = date.year;
+		edate.month = date.month;
+		edate.day = date.day;
+
+		if (g_date_valid (&date))
+			e_contact_set (contact, E_CONTACT_ANNIVERSARY, &edate);
+	}
+}
 
 static void
 set_phone_number (EContact *contact, EContactField field, EEwsItem *item, const gchar *item_field)
@@ -329,13 +350,19 @@ ebews_set_full_name		(ESoapMessage *msg, EContact *contact)
 
 	e_contact_name_free (name);
 }
-
+/* TODO Set birth and anniversary dates */
 static void
 ebews_set_birth_date		(ESoapMessage *message, EContact *contact)
 {
 	
 }
 
+static void
+ebews_set_anniversary		(ESoapMessage *message, EContact *contact)
+{
+	
+}
+
 static gboolean
 add_entry (ESoapMessage *msg, EContact *contact, EContactField field, const gchar *entry_name, const gchar *include_hdr)
 {
@@ -491,6 +518,12 @@ ebews_set_birth_date_changes	(ESoapMessage *message, EContact *new, EContact *ol
 }
 
 static void
+ebews_set_anniversary_changes	(ESoapMessage *message, EContact *new, EContact *old)
+{
+
+}
+
+static void
 ebews_set_phone_number_changes	(ESoapMessage *message, EContact *new, EContact *old)
 {
 	gint i;
@@ -646,8 +679,11 @@ static const struct field_element_mapping {
 	{ E_CONTACT_IM_AIM, ELEMENT_TYPE_COMPLEX, "ImAddresses", NULL, ebews_populate_ims, ebews_set_ims, ebews_set_im_changes },
 	{ E_CONTACT_TITLE, ELEMENT_TYPE_SIMPLE, "JobTitle", e_ews_item_get_job_title},
 	{ E_CONTACT_MANAGER, ELEMENT_TYPE_SIMPLE, "Manager", e_ews_item_get_manager},
+	{ E_CONTACT_MANAGER, ELEMENT_TYPE_SIMPLE, "OfficeLocation", e_ews_item_get_office_location},
+	{ E_CONTACT_SPOUSE, ELEMENT_TYPE_SIMPLE, "Profession", e_ews_item_get_profession},
 	{ E_CONTACT_SPOUSE, ELEMENT_TYPE_SIMPLE, "SpouseName", e_ews_item_get_spouse_name},
 	{ E_CONTACT_FAMILY_NAME, ELEMENT_TYPE_SIMPLE, "Surname", e_ews_item_get_surname},
+	{ E_CONTACT_BIRTH_DATE, ELEMENT_TYPE_COMPLEX, "WeddingAnniversary", NULL,  ebews_populate_anniversary, ebews_set_anniversary, ebews_set_anniversary_changes },
 
 	/* Should take of uid and changekey (REV) */
 	{ E_CONTACT_UID, ELEMENT_TYPE_COMPLEX, "ItemId", NULL,  ebews_populate_uid, ebews_set_item_id},
diff --git a/src/server/e-ews-item.c b/src/server/e-ews-item.c
index 735169c..e31cb70 100644
--- a/src/server/e-ews-item.c
+++ b/src/server/e-ews-item.c
@@ -118,6 +118,7 @@ struct _EEwsContactFields {
 	time_t birthday;
 	time_t wedding_anniversary;
 	
+	gchar *profession;
 	gchar *spouse_name;
 	gchar *culture;
 	gchar *surname;
@@ -397,6 +398,7 @@ ews_free_contact_fields (struct _EEwsContactFields *con_fields)
 		g_free (con_fields->manager);
 		g_free (con_fields->office_location);
 		g_free (con_fields->business_homepage);
+		g_free (con_fields->profession);
 		g_free (con_fields->spouse_name);
 		g_free (con_fields->culture);
 		g_free (con_fields->surname);
@@ -777,6 +779,8 @@ parse_contact_field (EEwsItem *item, const gchar *name, ESoapParameter *subparam
 		priv->contact_fields->manager = e_soap_parameter_get_string_value (subparam);
 	} else if (!g_ascii_strcasecmp (name, "OfficeLocation")) {
 		priv->contact_fields->office_location = e_soap_parameter_get_string_value (subparam);
+	} else if (!g_ascii_strcasecmp (name, "Profession")) {
+		priv->contact_fields->profession = e_soap_parameter_get_string_value (subparam);
 	} else if (!g_ascii_strcasecmp (name, "SpouseName")) {
 		priv->contact_fields->spouse_name = e_soap_parameter_get_string_value (subparam);
 	} else if (!g_ascii_strcasecmp (name, "Surname")) {
@@ -1625,6 +1629,15 @@ e_ews_item_get_business_homepage (EEwsItem *item)
 }
 
 const gchar *
+e_ews_item_get_profession (EEwsItem *item)
+{
+	g_return_val_if_fail (E_IS_EWS_ITEM(item), NULL);
+	g_return_val_if_fail (item->priv->contact_fields != NULL, NULL);
+
+	return (const gchar*) item->priv->contact_fields->profession;
+}
+
+const gchar *
 e_ews_item_get_spouse_name (EEwsItem *item)
 {
 	g_return_val_if_fail (E_IS_EWS_ITEM(item), NULL);
diff --git a/src/server/e-ews-item.h b/src/server/e-ews-item.h
index bfdcc93..94b36a6 100644
--- a/src/server/e-ews-item.h
+++ b/src/server/e-ews-item.h
@@ -192,6 +192,7 @@ const gchar *	e_ews_item_get_business_homepage
 time_t		e_ews_item_get_birthday		(EEwsItem *item);
 time_t		e_ews_item_get_wedding_anniversary
 						(EEwsItem *item);
+const gchar *	e_ews_item_get_profession	(EEwsItem *item);
 const gchar *	e_ews_item_get_spouse_name	(EEwsItem *item);
 const gchar *	e_ews_item_get_culture		(EEwsItem *item);
 const gchar *	e_ews_item_get_surname		(EEwsItem *item);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]