aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/cal-util/cal-component.c
diff options
context:
space:
mode:
authorJP Rosevear <jpr@src.gnome.org>2003-03-05 03:52:37 +0800
committerJP Rosevear <jpr@src.gnome.org>2003-03-05 03:52:37 +0800
commit6b4c3984d52cfbf88ae84ee0102f4aa0c17a2a62 (patch)
treebba07b5f28966c10a90de8f550af895014b0b9bb /calendar/cal-util/cal-component.c
parentcd4477930e72b1be069d5c97b90d96e989645bfc (diff)
downloadgsoc2013-evolution-6b4c3984d52cfbf88ae84ee0102f4aa0c17a2a62.tar
gsoc2013-evolution-6b4c3984d52cfbf88ae84ee0102f4aa0c17a2a62.tar.gz
gsoc2013-evolution-6b4c3984d52cfbf88ae84ee0102f4aa0c17a2a62.tar.bz2
gsoc2013-evolution-6b4c3984d52cfbf88ae84ee0102f4aa0c17a2a62.tar.lz
gsoc2013-evolution-6b4c3984d52cfbf88ae84ee0102f4aa0c17a2a62.tar.xz
gsoc2013-evolution-6b4c3984d52cfbf88ae84ee0102f4aa0c17a2a62.tar.zst
gsoc2013-evolution-6b4c3984d52cfbf88ae84ee0102f4aa0c17a2a62.zip
If only the pipe wouldn't break.
svn path=/trunk/; revision=20143
Diffstat (limited to 'calendar/cal-util/cal-component.c')
-rw-r--r--calendar/cal-util/cal-component.c114
1 files changed, 88 insertions, 26 deletions
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.