aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSuman Manjunath <msuman@src.gnome.org>2008-11-28 16:04:21 +0800
committerSuman Manjunath <msuman@src.gnome.org>2008-11-28 16:04:21 +0800
commit4f015ce67a104d6c9476356394dc78443d6eb06f (patch)
tree8ef3944a1976292328190033b7d88b0f55b63de0
parenta75b727efee43acf8e4975b264a85ea743529526 (diff)
downloadgsoc2013-evolution-4f015ce67a104d6c9476356394dc78443d6eb06f.tar.gz
gsoc2013-evolution-4f015ce67a104d6c9476356394dc78443d6eb06f.tar.zst
gsoc2013-evolution-4f015ce67a104d6c9476356394dc78443d6eb06f.zip
Fix for bug #561467 - some changes in the core code needed for evolution-mapi.
svn path=/trunk/; revision=36818
-rw-r--r--calendar/ChangeLog9
-rw-r--r--calendar/gui/dialogs/comp-editor.c3
-rw-r--r--calendar/gui/itip-utils.c11
-rw-r--r--plugins/itip-formatter/ChangeLog8
-rw-r--r--plugins/itip-formatter/itip-formatter.c22
5 files changed, 51 insertions, 2 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog
index e0f292421f..867f7bacbb 100644
--- a/calendar/ChangeLog
+++ b/calendar/ChangeLog
@@ -1,3 +1,12 @@
+2008-11-28 Suman Manjunath <msuman@novell.com>
+
+ ** Fix for bug #561467
+
+ * gui/dialogs/comp-editor.c (real_send_comp): Don't replace
+ attachment list if backend can CREATE_MESSAGES
+ * gui/itip-utils.c (itip_send_comp): Check whether backend
+ could handle sending requests/updates.
+
2008-11-25 Milan Crha <mcrha@redhat.com>
** Fix for bug #560138
diff --git a/calendar/gui/dialogs/comp-editor.c b/calendar/gui/dialogs/comp-editor.c
index 198d60356c..4067861fc2 100644
--- a/calendar/gui/dialogs/comp-editor.c
+++ b/calendar/gui/dialogs/comp-editor.c
@@ -3046,7 +3046,8 @@ real_send_comp (CompEditor *editor, ECalComponentItipMethod method)
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 --git a/calendar/gui/itip-utils.c b/calendar/gui/itip-utils.c
index 5a954b5ff9..5b292e1901 100644
--- a/calendar/gui/itip-utils.c
+++ b/calendar/gui/itip-utils.c
@@ -1147,7 +1147,7 @@ itip_send_comp (ECalComponentItipMethod method, ECalComponent *send_comp,
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 method, ECalComponent *send_comp,
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 --git a/plugins/itip-formatter/ChangeLog b/plugins/itip-formatter/ChangeLog
index 966cc611e7..c04825312f 100644
--- a/plugins/itip-formatter/ChangeLog
+++ b/plugins/itip-formatter/ChangeLog
@@ -1,3 +1,11 @@
+2008-11-28 Suman Manjunath <msuman@novell.com>
+
+ ** Fix for bug #561467
+
+ * itip-formatter.c (update_x), (update_attendee_status): Copy
+ required X-* properties . This might be needed for special cases
+ in certain backends.
+
2008-11-06 Patrick Ohly <patrick.ohly@gmx.de>
** Fix for bug #541121
diff --git a/plugins/itip-formatter/itip-formatter.c b/plugins/itip-formatter/itip-formatter.c
index ae7190174b..61d2234bd8 100644
--- a/plugins/itip-formatter/itip-formatter.c
+++ b/plugins/itip-formatter/itip-formatter.c
@@ -1186,6 +1186,26 @@ remove_delegate (struct _itip_puri *pitip, const char *delegate, const char *del
}
+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)
{
@@ -1286,6 +1306,8 @@ update_attendee_status (struct _itip_puri *pitip)
}
}
+ 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);