diff options
author | Suman Manjunath <msuman@src.gnome.org> | 2008-11-28 16:04:21 +0800 |
---|---|---|
committer | Suman Manjunath <msuman@src.gnome.org> | 2008-11-28 16:04:21 +0800 |
commit | 4f015ce67a104d6c9476356394dc78443d6eb06f (patch) | |
tree | 8ef3944a1976292328190033b7d88b0f55b63de0 | |
parent | a75b727efee43acf8e4975b264a85ea743529526 (diff) | |
download | gsoc2013-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/ChangeLog | 9 | ||||
-rw-r--r-- | calendar/gui/dialogs/comp-editor.c | 3 | ||||
-rw-r--r-- | calendar/gui/itip-utils.c | 11 | ||||
-rw-r--r-- | plugins/itip-formatter/ChangeLog | 8 | ||||
-rw-r--r-- | plugins/itip-formatter/itip-formatter.c | 22 |
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); |