File evo-core-mapi-changes.diff of Package evolution

diff -Nupr 1-evo/calendar/ChangeLog 2-evo/calendar/ChangeLog
--- 1-evo/calendar/ChangeLog	2008-10-22 10:27:20.000000000 +0530
+++ 2-evo/calendar/ChangeLog	2008-10-22 09:44:22.000000000 +0530
@@ -534,6 +534,11 @@ License Changes
 	(gnome_calendar_on_date_navigator_selection_changed): Use a
 	single model for all the views.			
 
+2008-08-13  Suman Manjunath  <msuman@novell.com>
+
+        * gui/dialogs/comp-editor.c (real_send_comp): Don't replace
+        attachment list if backend can CREATE_MESSAGES
+
 2008-08-12  Matthew Barnes  <mbarnes@redhat.com>
 
 	* gui/migration.c:
diff -Nupr 1-evo/calendar/gui/dialogs/comp-editor.c 2-evo/calendar/gui/dialogs/comp-editor.c
--- 1-evo/calendar/gui/dialogs/comp-editor.c	2008-10-22 10:27:20.000000000 +0530
+++ 2-evo/calendar/gui/dialogs/comp-editor.c	2008-10-22 09:44:22.000000000 +0530
@@ -3046,7 +3046,8 @@ real_send_comp (CompEditor *editor, ECal
 			set_attendees_for_delegation (send_comp, address, method);
 	}
 
-	if (!e_cal_component_has_attachments (priv->comp)) {
+	if (!e_cal_component_has_attachments (priv->comp) 
+	|| e_cal_get_static_capability (priv->client, CAL_STATIC_CAPABILITY_CREATE_MESSAGES)) {
 		if (itip_send_comp (method, send_comp, priv->client,
 					NULL, NULL, users)) {
 			g_object_unref (send_comp);
diff -Nupr 1-evo/calendar/gui/itip-utils.c 2-evo/calendar/gui/itip-utils.c
--- 1-evo/calendar/gui/itip-utils.c	2008-10-07 09:00:09.000000000 +0530
+++ 2-evo/calendar/gui/itip-utils.c	2008-10-20 16:04:33.000000000 +0530
@@ -1147,7 +1147,7 @@ itip_send_comp (ECalComponentItipMethod
 	gchar *subject = NULL;
 	gboolean retval = FALSE;
 
-	/* check whether backend could handle sending requests/updates */
+	/* check whether backend could handle auto-saving requests/updates */
 	if (method != E_CAL_COMPONENT_METHOD_PUBLISH && e_cal_get_save_schedules (client))
 		return TRUE;
 
@@ -1157,6 +1157,15 @@ itip_send_comp (ECalComponentItipMethod
 			goto cleanup;
 	}
 
+	/* check whether backend could handle sending requests/updates */
+	if (method != E_CAL_COMPONENT_METHOD_PUBLISH && e_cal_get_static_capability (client, CAL_STATIC_CAPABILITY_CREATE_MESSAGES)) {
+		if (users) {
+			g_list_foreach (users, (GFunc) g_free, NULL);
+			g_list_free (users);
+		}
+		return TRUE;
+	}
+
 	/* Tidy up the comp */
 	comp = comp_compliant (method, send_comp, client, zones);
 
diff -Nupr 1-evo/plugins/itip-formatter/ChangeLog 2-evo/plugins/itip-formatter/ChangeLog
--- 1-evo/plugins/itip-formatter/ChangeLog	2008-10-20 09:19:46.000000000 +0530
+++ 2-evo/plugins/itip-formatter/ChangeLog	2008-10-20 16:04:33.000000000 +0530
@@ -66,6 +66,12 @@ License Changes
 
 	* itip-view.h:
 
+2008-08-14  Suman Manjunath  <msuman@novell.com>
+
+        * itip-formatter.c (update_x), (update_attendee_status): Copy
+        required X-* properties . This might be needed for special cases
+        in certain backends.
+
 2008-08-11  Matthew Barnes  <mbarnes@redhat.com>
 
 	** Fixes part of bug #546892
diff -Nupr 1-evo/plugins/itip-formatter/itip-formatter.c 2-evo/plugins/itip-formatter/itip-formatter.c
--- 1-evo/plugins/itip-formatter/itip-formatter.c	2008-10-20 09:13:02.000000000 +0530
+++ 2-evo/plugins/itip-formatter/itip-formatter.c	2008-10-20 16:04:33.000000000 +0530
@@ -1183,6 +1183,26 @@ remove_delegate (struct _itip_puri *piti
 
 }
 
+static void 
+update_x (ECalComponent *pitip_comp, ECalComponent *comp) 
+{
+	icalcomponent *itip_icalcomp = e_cal_component_get_icalcomponent (pitip_comp);
+	icalcomponent *icalcomp = e_cal_component_get_icalcomponent (comp);
+
+	icalproperty *prop = icalcomponent_get_first_property (itip_icalcomp, ICAL_X_PROPERTY);
+	while (prop) {
+		const char *name = icalproperty_get_x_name (prop);
+		if (!g_ascii_strcasecmp (name, "X-EVOLUTION-IS-REPLY")) {
+			icalproperty *new_prop = icalproperty_new_x (icalproperty_get_x (prop));
+			icalproperty_set_x_name (new_prop, "X-EVOLUTION-IS-REPLY");
+			icalcomponent_add_property (icalcomp, new_prop);
+		}
+		prop = icalcomponent_get_next_property (itip_icalcomp, ICAL_X_PROPERTY);
+	}
+
+	e_cal_component_set_icalcomponent (comp, icalcomp);
+}
+
 static void
 update_attendee_status (struct _itip_puri *pitip)
 {
@@ -1283,6 +1303,8 @@ update_attendee_status (struct _itip_pur
 			}
 		}
 
+		update_x (pitip->comp, comp);
+
 		if (itip_view_get_update (ITIP_VIEW (pitip->view))) {
 			e_cal_component_commit_sequence (comp);
 			itip_send_comp (E_CAL_COMPONENT_METHOD_REQUEST, comp, pitip->current_ecal, NULL, NULL, NULL);
openSUSE Build Service is sponsored by