Codebase list evolution-ews / d4eb2b0
Bug 796297 - Make it possible to not request RSVP (all-or-nothing) Milan Crha 5 years ago
2 changed file(s) with 31 addition(s) and 6 deletion(s). Raw diff Collapse all Expand all
221221 e_ews_collect_attendees (icalcomponent *comp,
222222 GSList **required,
223223 GSList **optional,
224 GSList **resource)
224 GSList **resource,
225 gboolean *out_rsvp_requested)
225226 {
226227 icalproperty *prop;
227228 icalparameter *param;
228229 const gchar *str = NULL;
229230 const gchar *org_email_address = NULL;
230231
232 if (out_rsvp_requested)
233 *out_rsvp_requested = TRUE;
234
231235 /* we need to know who the orgenizer is so we wont duplicate him/her */
232236 org_email_address = e_ews_collect_organizer (comp);
233237
261265 switch (icalparameter_get_role (param)) {
262266 case ICAL_ROLE_OPTPARTICIPANT:
263267 *optional = g_slist_append (*optional, (gpointer)str);
268
269 if (out_rsvp_requested && *out_rsvp_requested) {
270 icalparameter *rsvp;
271
272 rsvp = icalproperty_get_first_parameter (prop, ICAL_RSVP_PARAMETER);
273 if (rsvp && icalparameter_get_rsvp (rsvp) == ICAL_RSVP_FALSE)
274 *out_rsvp_requested = FALSE;
275 }
264276 break;
265277 case ICAL_ROLE_CHAIR:
266278 case ICAL_ROLE_REQPARTICIPANT:
267279 *required = g_slist_append (*required, (gpointer)str);
280
281 if (out_rsvp_requested && *out_rsvp_requested) {
282 icalparameter *rsvp;
283
284 rsvp = icalproperty_get_first_parameter (prop, ICAL_RSVP_PARAMETER);
285 if (rsvp && icalparameter_get_rsvp (rsvp) == ICAL_RSVP_FALSE)
286 *out_rsvp_requested = FALSE;
287 }
268288 break;
269289 case ICAL_ROLE_NONPARTICIPANT:
270290 *resource = g_slist_append (*resource, (gpointer)str);
10591079 icaltimetype dtstart, dtend;
10601080 icaltimezone *tzid_start, *tzid_end;
10611081 icalproperty *prop;
1062 gboolean has_alarms, satisfies;
1082 gboolean has_alarms, satisfies, rsvp_requested = TRUE;
10631083 const gchar *ical_location_start, *ical_location_end, *value;
10641084 const gchar *msdn_location_start, *msdn_location_end;
10651085
11441164 e_ews_message_write_string_parameter (msg, "Location", NULL, value);
11451165
11461166 /* collect attendees */
1147 e_ews_collect_attendees (icalcomp, &required, &optional, &resource);
1167 e_ews_collect_attendees (icalcomp, &required, &optional, &resource, &rsvp_requested);
1168
1169 e_ews_message_write_string_parameter (msg, "IsResponseRequested", NULL, rsvp_requested ? "true" : "false");
11481170
11491171 if (required != NULL) {
11501172 add_attendees_list_to_message (msg, "RequiredAttendees", required);
13841406 gboolean has_alarms, has_alarms_old;
13851407 gboolean dt_start_changed = FALSE, dt_end_changed = FALSE, dt_changed;
13861408 gboolean dt_start_changed_timezone_name = FALSE, dt_end_changed_timezone_name = FALSE;
1387 gboolean satisfies;
1409 gboolean satisfies, rsvp_requested = TRUE;
13881410 gint alarm = 0, alarm_old = 0;
13891411 gchar *recid;
13901412 GError *error = NULL;
15751597 convert_vevent_property_to_updatexml (msg, "IsAllDayEvent", "false", "calendar", NULL, NULL);
15761598 }
15771599
1578 e_ews_collect_attendees (icalcomp, &required, &optional, &resource);
1600 e_ews_collect_attendees (icalcomp, &required, &optional, &resource, &rsvp_requested);
1601
1602 e_ews_message_write_string_parameter (msg, "IsResponseRequested", NULL, rsvp_requested ? "true" : "false");
1603
15791604 if (required != NULL) {
15801605 e_ews_message_start_set_item_field (msg, "RequiredAttendees", "calendar", "CalendarItem");
15811606
5454 } EwsCalendarConvertData;
5555
5656 const gchar *e_ews_collect_organizer (icalcomponent *comp);
57 void e_ews_collect_attendees (icalcomponent *comp, GSList **required, GSList **optional, GSList **resource);
57 void e_ews_collect_attendees (icalcomponent *comp, GSList **required, GSList **optional, GSList **resource, gboolean *out_rsvp_requested);
5858
5959 void ewscal_set_timezone (ESoapMessage *msg, const gchar *name, EEwsCalendarTimeZoneDefinition *tzd);
6060 void ewscal_set_meeting_timezone (ESoapMessage *msg, icaltimezone *icaltz);