From 6b4c3984d52cfbf88ae84ee0102f4aa0c17a2a62 Mon Sep 17 00:00:00 2001 From: JP Rosevear Date: Tue, 4 Mar 2003 19:52:37 +0000 Subject: If only the pipe wouldn't break. svn path=/trunk/; revision=20143 --- calendar/cal-util/cal-component.c | 114 +++++++++++++++++++++++++++++--------- 1 file changed, 88 insertions(+), 26 deletions(-) (limited to 'calendar/cal-util/cal-component.c') diff --git a/calendar/cal-util/cal-component.c b/calendar/cal-util/cal-component.c index a5300a9605..671af4a9ec 100644 --- a/calendar/cal-util/cal-component.c +++ b/calendar/cal-util/cal-component.c @@ -33,6 +33,21 @@ /* Extension property for alarm components so that we can reference them by UID */ #define EVOLUTION_ALARM_UID_PROPERTY "X-EVOLUTION-ALARM-UID" + +struct attendee { + icalproperty *prop; + icalparameter *cutype_param; + icalparameter *member_param; + icalparameter *role_param; + icalparameter *partstat_param; + icalparameter *rsvp_param; + icalparameter *delto_param; + icalparameter *delfrom_param; + icalparameter *sentby_param; + icalparameter *cn_param; + icalparameter *language_param; +}; + /* Private part of the CalComponent structure */ struct _CalComponentPrivate { /* The icalcomponent we wrap */ @@ -43,21 +58,6 @@ struct _CalComponentPrivate { icalproperty *uid; icalproperty *status; - - struct attendee { - icalproperty *prop; - icalparameter *cutype_param; - icalparameter *member_param; - icalparameter *role_param; - icalparameter *partstat_param; - icalparameter *rsvp_param; - icalparameter *delto_param; - icalparameter *delfrom_param; - icalparameter *sentby_param; - icalparameter *cn_param; - icalparameter *language_param; - }; - GSList *attendee_list; icalproperty *categories; @@ -174,6 +174,8 @@ struct _CalComponentAlarm { icalproperty *duration; icalproperty *repeat; icalproperty *trigger; + + GSList *attendee_list; }; @@ -469,7 +471,7 @@ cal_component_clone (CalComponent *comp) /* Scans an attendee property */ static void -scan_attendee (CalComponent *comp, GSList **attendee_list, icalproperty *prop) +scan_attendee (GSList **attendee_list, icalproperty *prop) { struct attendee *attendee; @@ -601,7 +603,7 @@ scan_property (CalComponent *comp, icalproperty *prop) break; case ICAL_ATTENDEE_PROPERTY: - scan_attendee (comp, &priv->attendee_list, prop); + scan_attendee (&priv->attendee_list, prop); break; case ICAL_CATEGORIES_PROPERTY: @@ -3593,6 +3595,19 @@ cal_component_has_simple_recurrence (CalComponent *comp) return simple; } +gboolean +cal_component_is_instance (CalComponent *comp) +{ + CalComponentPrivate *priv; + + g_return_val_if_fail (comp != NULL, FALSE); + g_return_val_if_fail (IS_CAL_COMPONENT (comp), FALSE); + + priv = comp->priv; + + return !(priv->recur_id.recur_time.prop == NULL); +} + /** * cal_component_get_sequence: * @comp: A calendar component object. @@ -4019,15 +4034,12 @@ get_attendee_list (GSList *attendee_list, GSList **al) /* Sets a text list value */ static void -set_attendee_list (CalComponent *comp, +set_attendee_list (icalcomponent *icalcomp, GSList **attendee_list, GSList *al) { - CalComponentPrivate *priv; GSList *l; - priv = comp->priv; - /* Remove old attendees */ for (l = *attendee_list; l; l = l->next) { @@ -4036,7 +4048,7 @@ set_attendee_list (CalComponent *comp, attendee = l->data; g_assert (attendee->prop != NULL); - icalcomponent_remove_property (priv->icalcomp, attendee->prop); + icalcomponent_remove_property (icalcomp, attendee->prop); icalproperty_free (attendee->prop); g_free (attendee); } @@ -4056,7 +4068,7 @@ set_attendee_list (CalComponent *comp, attendee = g_new0 (struct attendee, 1); attendee->prop = icalproperty_new_attendee (a->value); - icalcomponent_add_property (priv->icalcomp, attendee->prop); + icalcomponent_add_property (icalcomp, attendee->prop); if (a->member) { attendee->member_param = icalparameter_new_member (a->member); @@ -4147,7 +4159,7 @@ cal_component_set_attendee_list (CalComponent *comp, GSList *attendee_list) priv = comp->priv; g_return_if_fail (priv->icalcomp != NULL); - set_attendee_list (comp, &priv->attendee_list, attendee_list); + set_attendee_list (priv->icalcomp, &priv->attendee_list, attendee_list); } gboolean @@ -4261,6 +4273,14 @@ cal_component_free_datetime (CalComponentDateTime *dt) g_free ((char*)dt->tzid); } +void +cal_component_free_range (CalComponentRange *range) +{ + g_return_if_fail (range != NULL); + + cal_component_free_datetime (&range->datetime); +} + /** * cal_component_free_exdate_list: * @exdate_list: List of #CalComponentDateTime structures. @@ -4618,6 +4638,10 @@ scan_alarm_property (CalComponentAlarm *alarm, icalproperty *prop) alarm->trigger = prop; break; + case ICAL_ATTENDEE_PROPERTY: + scan_attendee (&alarm->attendee_list, prop); + break; + case ICAL_X_PROPERTY: xname = icalproperty_get_x_name (prop); g_assert (xname != NULL); @@ -4651,7 +4675,8 @@ make_alarm (icalcomponent *subcomp) alarm->duration = NULL; alarm->repeat = NULL; alarm->trigger = NULL; - + alarm->attendee_list = NULL; + for (prop = icalcomponent_get_first_property (subcomp, ICAL_ANY_PROPERTY); prop; prop = icalcomponent_get_next_property (subcomp, ICAL_ANY_PROPERTY)) @@ -4804,7 +4829,8 @@ cal_component_alarm_new (void) alarm->duration = NULL; alarm->repeat = NULL; alarm->trigger = NULL; - + alarm->attendee_list = NULL; + return alarm; } @@ -4837,6 +4863,8 @@ cal_component_alarm_clone (CalComponentAlarm *alarm) void cal_component_alarm_free (CalComponentAlarm *alarm) { + GSList *l; + g_return_if_fail (alarm != NULL); g_assert (alarm->icalcomp != NULL); @@ -4854,6 +4882,11 @@ cal_component_alarm_free (CalComponentAlarm *alarm) alarm->repeat = NULL; alarm->trigger = NULL; + for (l = alarm->attendee_list; l != NULL; l = l->next) + g_free (l->data); + g_slist_free (alarm->attendee_list); + alarm->attendee_list = NULL; + g_free (alarm); } @@ -5318,6 +5351,35 @@ cal_component_alarm_set_trigger (CalComponentAlarm *alarm, CalAlarmTrigger trigg } } +void +cal_component_alarm_get_attendee_list (CalComponentAlarm *alarm, GSList **attendee_list) +{ + g_return_if_fail (alarm != NULL); + + get_attendee_list (alarm->attendee_list, attendee_list); +} + +void +cal_component_alarm_set_attendee_list (CalComponentAlarm *alarm, GSList *attendee_list) +{ + g_return_if_fail (alarm != NULL); + + set_attendee_list (alarm->icalcomp, &alarm->attendee_list, attendee_list); +} + +gboolean +cal_component_alarm_has_attendees (CalComponentAlarm *alarm) +{ + + g_return_val_if_fail (alarm != NULL, FALSE); + + if (g_slist_length (alarm->attendee_list) > 0) + return TRUE; + + return FALSE; +} + + /** * cal_component_alarm_get_icalcomponent * @alarm: An alarm. -- cgit v1.2.3