|
|
7b8378 |
diff -up evolution-ews-3.12.11/src/calendar/e-cal-backend-ews.c.read-user-partstat evolution-ews-3.12.11/src/calendar/e-cal-backend-ews.c
|
|
|
7b8378 |
--- evolution-ews-3.12.11/src/calendar/e-cal-backend-ews.c.read-user-partstat 2015-01-05 17:44:34.000000000 +0100
|
|
|
7b8378 |
+++ evolution-ews-3.12.11/src/calendar/e-cal-backend-ews.c 2016-03-31 17:51:29.593214663 +0200
|
|
|
7b8378 |
@@ -103,6 +103,7 @@ struct _ECalBackendEwsPrivate {
|
|
|
7b8378 |
" calendar:UID" \
|
|
|
7b8378 |
" calendar:Resources" \
|
|
|
7b8378 |
" calendar:ModifiedOccurrences" \
|
|
|
7b8378 |
+ " calendar:MyResponseType" \
|
|
|
7b8378 |
" calendar:RequiredAttendees" \
|
|
|
7b8378 |
" calendar:OptionalAttendees"
|
|
|
7b8378 |
|
|
|
7b8378 |
@@ -2891,6 +2892,32 @@ get_timezone (ETimezoneCache *timezone_c
|
|
|
7b8378 |
return zone;
|
|
|
7b8378 |
}
|
|
|
7b8378 |
|
|
|
7b8378 |
+static icalparameter *
|
|
|
7b8378 |
+cal_backend_ews_responsetype_to_partstat (const gchar *responsetype)
|
|
|
7b8378 |
+{
|
|
|
7b8378 |
+ icalparameter *param = NULL;
|
|
|
7b8378 |
+
|
|
|
7b8378 |
+ g_return_val_if_fail (responsetype != NULL, NULL);
|
|
|
7b8378 |
+
|
|
|
7b8378 |
+ if (g_ascii_strcasecmp (responsetype, "Organizer") == 0)
|
|
|
7b8378 |
+ param = icalparameter_new_partstat (ICAL_PARTSTAT_ACCEPTED);
|
|
|
7b8378 |
+ else if (g_ascii_strcasecmp (responsetype, "Tentative") == 0)
|
|
|
7b8378 |
+ param = icalparameter_new_partstat (ICAL_PARTSTAT_TENTATIVE);
|
|
|
7b8378 |
+ else if (g_ascii_strcasecmp (responsetype, "Accept") == 0)
|
|
|
7b8378 |
+ param = icalparameter_new_partstat (ICAL_PARTSTAT_ACCEPTED);
|
|
|
7b8378 |
+ else if (g_ascii_strcasecmp (responsetype, "Decline") == 0)
|
|
|
7b8378 |
+ param = icalparameter_new_partstat (ICAL_PARTSTAT_DECLINED);
|
|
|
7b8378 |
+ else if (g_ascii_strcasecmp (responsetype, "NoResponseReceived") == 0)
|
|
|
7b8378 |
+ param = icalparameter_new_partstat (ICAL_PARTSTAT_NEEDSACTION);
|
|
|
7b8378 |
+ else if (g_ascii_strcasecmp (responsetype, "Unknown") == 0)
|
|
|
7b8378 |
+ param = icalparameter_new_partstat (ICAL_PARTSTAT_NONE);
|
|
|
7b8378 |
+
|
|
|
7b8378 |
+ if (!param)
|
|
|
7b8378 |
+ param = icalparameter_new_partstat (ICAL_PARTSTAT_NONE);
|
|
|
7b8378 |
+
|
|
|
7b8378 |
+ return param;
|
|
|
7b8378 |
+}
|
|
|
7b8378 |
+
|
|
|
7b8378 |
static void
|
|
|
7b8378 |
add_item_to_cache (ECalBackendEws *cbews,
|
|
|
7b8378 |
EEwsItem *item)
|
|
|
7b8378 |
@@ -3214,18 +3241,12 @@ add_item_to_cache (ECalBackendEws *cbews
|
|
|
7b8378 |
icalproperty_add_parameter (icalprop, cu_type);
|
|
|
7b8378 |
icalproperty_add_parameter (icalprop, param);
|
|
|
7b8378 |
|
|
|
7b8378 |
- if (g_ascii_strcasecmp (attendee->responsetype, "Organizer") == 0)
|
|
|
7b8378 |
- param = icalparameter_new_partstat (ICAL_PARTSTAT_ACCEPTED);
|
|
|
7b8378 |
- else if (g_ascii_strcasecmp (attendee->responsetype, "Tentative") == 0)
|
|
|
7b8378 |
- param = icalparameter_new_partstat (ICAL_PARTSTAT_TENTATIVE);
|
|
|
7b8378 |
- else if (g_ascii_strcasecmp (attendee->responsetype, "Accept") == 0)
|
|
|
7b8378 |
- param = icalparameter_new_partstat (ICAL_PARTSTAT_ACCEPTED);
|
|
|
7b8378 |
- else if (g_ascii_strcasecmp (attendee->responsetype, "Decline") == 0)
|
|
|
7b8378 |
- param = icalparameter_new_partstat (ICAL_PARTSTAT_DECLINED);
|
|
|
7b8378 |
- else if (g_ascii_strcasecmp (attendee->responsetype, "NoResponseReceived") == 0)
|
|
|
7b8378 |
- param = icalparameter_new_partstat (ICAL_PARTSTAT_NEEDSACTION);
|
|
|
7b8378 |
- else if (g_ascii_strcasecmp (attendee->responsetype, "Unknown") == 0)
|
|
|
7b8378 |
- param = icalparameter_new_partstat (ICAL_PARTSTAT_NONE);
|
|
|
7b8378 |
+ if (cbews->priv->user_email && (email || attendee->mailbox->email) && e_ews_item_get_my_response_type (item) &&
|
|
|
7b8378 |
+ g_ascii_strcasecmp (email ? email : attendee->mailbox->email, cbews->priv->user_email) == 0) {
|
|
|
7b8378 |
+ param = cal_backend_ews_responsetype_to_partstat (e_ews_item_get_my_response_type (item));
|
|
|
7b8378 |
+ } else {
|
|
|
7b8378 |
+ param = cal_backend_ews_responsetype_to_partstat (attendee->responsetype);
|
|
|
7b8378 |
+ }
|
|
|
7b8378 |
icalproperty_add_parameter (icalprop, param);
|
|
|
7b8378 |
|
|
|
7b8378 |
icalcomponent_add_property (icalcomp, icalprop);
|
|
|
7b8378 |
diff -up evolution-ews-3.12.11/src/server/e-ews-item.c.read-user-partstat evolution-ews-3.12.11/src/server/e-ews-item.c
|
|
|
7b8378 |
--- evolution-ews-3.12.11/src/server/e-ews-item.c.read-user-partstat 2014-09-01 16:50:38.000000000 +0200
|
|
|
7b8378 |
+++ evolution-ews-3.12.11/src/server/e-ews-item.c 2016-03-31 17:51:29.608214662 +0200
|
|
|
7b8378 |
@@ -134,6 +134,7 @@ struct _EEwsItemPrivate {
|
|
|
7b8378 |
|
|
|
7b8378 |
GSList *modified_occurrences;
|
|
|
7b8378 |
GSList *attachments_ids;
|
|
|
7b8378 |
+ gchar *my_response_type;
|
|
|
7b8378 |
GSList *attendees;
|
|
|
7b8378 |
|
|
|
7b8378 |
EwsId *calendar_item_accept_id;
|
|
|
7b8378 |
@@ -239,6 +240,9 @@ e_ews_item_dispose (GObject *object)
|
|
|
7b8378 |
g_slist_free_full (priv->attachments_ids, g_free);
|
|
|
7b8378 |
priv->attachments_ids = NULL;
|
|
|
7b8378 |
|
|
|
7b8378 |
+ g_free (priv->my_response_type);
|
|
|
7b8378 |
+ priv->my_response_type = NULL;
|
|
|
7b8378 |
+
|
|
|
7b8378 |
g_slist_free_full (priv->attendees, (GDestroyNotify) ews_item_free_attendee);
|
|
|
7b8378 |
priv->attendees = NULL;
|
|
|
7b8378 |
|
|
|
7b8378 |
@@ -1106,6 +1110,9 @@ e_ews_item_set_from_soap_parameter (EEws
|
|
|
7b8378 |
parse_extended_property (priv, subparam);
|
|
|
7b8378 |
} else if (!g_ascii_strcasecmp (name, "ModifiedOccurrences")) {
|
|
|
7b8378 |
process_modified_occurrences (priv, subparam);
|
|
|
7b8378 |
+ } else if (!g_ascii_strcasecmp (name, "MyResponseType")) {
|
|
|
7b8378 |
+ g_free (priv->my_response_type);
|
|
|
7b8378 |
+ priv->my_response_type = e_soap_parameter_get_string_value (subparam);
|
|
|
7b8378 |
} else if (!g_ascii_strcasecmp (name, "RequiredAttendees")) {
|
|
|
7b8378 |
process_attendees (priv, subparam, "Required");
|
|
|
7b8378 |
} else if (!g_ascii_strcasecmp (name, "OptionalAttendees")) {
|
|
|
7b8378 |
@@ -1803,6 +1810,14 @@ e_ews_item_dump_mime_content (EEwsItem *
|
|
|
7b8378 |
return info;
|
|
|
7b8378 |
}
|
|
|
7b8378 |
|
|
|
7b8378 |
+const gchar *
|
|
|
7b8378 |
+e_ews_item_get_my_response_type (EEwsItem *item)
|
|
|
7b8378 |
+{
|
|
|
7b8378 |
+ g_return_val_if_fail (E_IS_EWS_ITEM (item), NULL);
|
|
|
7b8378 |
+
|
|
|
7b8378 |
+ return item->priv->my_response_type;
|
|
|
7b8378 |
+}
|
|
|
7b8378 |
+
|
|
|
7b8378 |
const GSList *
|
|
|
7b8378 |
e_ews_item_get_attendees (EEwsItem *item)
|
|
|
7b8378 |
{
|
|
|
7b8378 |
diff -up evolution-ews-3.12.11/src/server/e-ews-item.h.read-user-partstat evolution-ews-3.12.11/src/server/e-ews-item.h
|
|
|
7b8378 |
--- evolution-ews-3.12.11/src/server/e-ews-item.h.read-user-partstat 2014-05-07 12:49:13.000000000 +0200
|
|
|
7b8378 |
+++ evolution-ews-3.12.11/src/server/e-ews-item.h 2016-03-31 17:51:29.608214662 +0200
|
|
|
7b8378 |
@@ -267,6 +267,7 @@ e_ews_item_ical_dump (EEwsItem *item);
|
|
|
7b8378 |
EEwsAttachmentInfo *
|
|
|
7b8378 |
e_ews_item_dump_mime_content (EEwsItem *item, const gchar *cache);
|
|
|
7b8378 |
|
|
|
7b8378 |
+const gchar * e_ews_item_get_my_response_type (EEwsItem *item);
|
|
|
7b8378 |
const GSList * e_ews_item_get_attendees (EEwsItem *item);
|
|
|
7b8378 |
|
|
|
7b8378 |
const EwsId * e_ews_item_get_calendar_item_accept_id
|