aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/cal-util
diff options
context:
space:
mode:
Diffstat (limited to 'calendar/cal-util')
-rw-r--r--calendar/cal-util/cal-component.c162
-rw-r--r--calendar/cal-util/cal-component.h12
2 files changed, 169 insertions, 5 deletions
diff --git a/calendar/cal-util/cal-component.c b/calendar/cal-util/cal-component.c
index 1fdfc5da8c..3d47e0d6dc 100644
--- a/calendar/cal-util/cal-component.c
+++ b/calendar/cal-util/cal-component.c
@@ -71,6 +71,7 @@ struct _CalComponentPrivate {
GSList *exdate_list; /* list of icalproperty objects */
GSList *exrule_list; /* list of icalproperty objects */
+ icalproperty *geo;
icalproperty *last_modified;
icalproperty *percent;
icalproperty *priority;
@@ -244,6 +245,7 @@ free_icalcomponent (CalComponent *comp)
g_slist_free (priv->exrule_list);
priv->exrule_list = NULL;
+ priv->geo = NULL;
priv->last_modified = NULL;
priv->percent = NULL;
priv->priority = NULL;
@@ -517,6 +519,10 @@ scan_property (CalComponent *comp, icalproperty *prop)
scan_recur (comp, &priv->exrule_list, prop);
break;
+ case ICAL_GEO_PROPERTY:
+ priv->geo = prop;
+ break;
+
case ICAL_LASTMODIFIED_PROPERTY:
priv->last_modified = prop;
break;
@@ -1951,7 +1957,6 @@ cal_component_set_exdate_list (CalComponent *comp, GSList *exdate_list)
g_return_if_fail (comp != NULL);
g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (exdate_list != NULL);
priv = comp->priv;
g_return_if_fail (priv->icalcomp != NULL);
@@ -2096,7 +2101,6 @@ cal_component_set_exrule_list (CalComponent *comp, GSList *recur_list)
g_return_if_fail (comp != NULL);
g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (recur_list != NULL);
priv = comp->priv;
g_return_if_fail (priv->icalcomp != NULL);
@@ -2107,6 +2111,69 @@ cal_component_set_exrule_list (CalComponent *comp, GSList *recur_list)
}
/**
+ * cal_component_get_geo:
+ * @comp: A calendar component object.
+ * @geo: Return value for the geographic position property. This should be
+ * freed using the cal_component_free_geo() function.
+ *
+ * Sets the geographic position property of a calendar component object.
+ **/
+void
+cal_component_get_geo (CalComponent *comp, struct icalgeotype **geo)
+{
+ CalComponentPrivate *priv;
+
+ g_return_if_fail (comp != NULL);
+ g_return_if_fail (IS_CAL_COMPONENT (comp));
+ g_return_if_fail (geo != NULL);
+
+ priv = comp->priv;
+ g_return_if_fail (priv->icalcomp != NULL);
+
+ if (priv->geo) {
+ *geo = g_new (struct icalgeotype, 1);
+ **geo = icalproperty_get_geo (priv->geo);
+ } else
+ *geo = NULL;
+}
+
+/**
+ * cal_component_set_geo:
+ * @comp: A calendar component object.
+ * @geo: Value for the geographic position property.
+ *
+ * Sets the geographic position property on a calendar component object.
+ **/
+void
+cal_component_set_geo (CalComponent *comp, struct icalgeotype *geo)
+{
+ CalComponentPrivate *priv;
+
+ g_return_if_fail (comp != NULL);
+ g_return_if_fail (IS_CAL_COMPONENT (comp));
+
+ priv = comp->priv;
+ g_return_if_fail (priv->icalcomp != NULL);
+
+ if (!geo) {
+ if (priv->geo) {
+ icalcomponent_remove_property (priv->icalcomp, priv->geo);
+ icalproperty_free (priv->geo);
+ priv->geo = NULL;
+ }
+
+ return;
+ }
+
+ if (priv->geo)
+ icalproperty_set_geo (priv->geo, *geo);
+ else {
+ priv->geo = icalproperty_new_geo (*geo);
+ icalcomponent_add_property (priv->icalcomp, priv->geo);
+ }
+}
+
+/**
* cal_component_get_last_modified:
* @comp: A calendar component object.
* @t: Return value for the last modified time value.
@@ -2334,6 +2401,29 @@ cal_component_set_rdate_list (CalComponent *comp, GSList *period_list)
}
/**
+ * cal_component_has_rdates:
+ * @comp: A calendar component object.
+ *
+ * Queries whether a calendar component object has any recurrence dates defined
+ * for it.
+ *
+ * Return value: TRUE if the component has recurrence dates, FALSE otherwise.
+ **/
+gboolean
+cal_component_has_rdates (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;
+ g_return_val_if_fail (priv->icalcomp != NULL, FALSE);
+
+ return (priv->rdate_list != NULL);
+}
+
+/**
* cal_component_get_rrule_list:
* @comp: A calendar component object.
* @recur_list: List of recurrence rules as struct #icalrecurrencetype
@@ -2383,6 +2473,29 @@ cal_component_set_rrule_list (CalComponent *comp, GSList *recur_list)
}
/**
+ * cal_component_has_rrules:
+ * @comp: A calendar component object.
+ *
+ * Queries whether a calendar component object has any recurrence rules defined
+ * for it.
+ *
+ * Return value: TRUE if the component has recurrence rules, FALSE otherwise.
+ **/
+gboolean
+cal_component_has_rrules (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;
+ g_return_val_if_fail (priv->icalcomp != NULL, FALSE);
+
+ return (priv->rrule_list != NULL);
+}
+
+/**
* cal_component_get_sequence:
* @comp: A calendar component object.
* @sequence: Return value for the sequence number. This should be freed using
@@ -2749,6 +2862,21 @@ cal_component_free_exdate_list (GSList *exdate_list)
}
/**
+ * cal_component_free_geo:
+ * @geo: An #icalgeotype structure.
+ *
+ * Frees a struct #icalgeotype structure as returned by the calendar component
+ * functions.
+ **/
+void
+cal_component_free_geo (struct icalgeotype *geo)
+{
+ g_return_if_fail (geo != NULL);
+
+ g_free (geo);
+}
+
+/**
* cal_component_free_icaltimetype:
* @t: An #icaltimetype structure.
*
@@ -2956,6 +3084,36 @@ cal_component_get_first_alarm (CalComponent *comp)
}
/**
+ * cal_component_get_next_alarm:
+ * @comp: A calendar component object.
+ *
+ * Gets the next alarm on a calendar component object. This should be used as
+ * an iterator function after calling cal_component_get_first_alarm().
+ *
+ * Return value: The next alarm in the component, or NULL if the component has
+ * no more alarms. This should be freed using the cal_component_alarm_free()
+ * function.
+ **/
+CalComponentAlarm *
+cal_component_get_next_alarm (CalComponent *comp)
+{
+ CalComponentPrivate *priv;
+ icalcomponent *subcomp;
+
+ g_return_val_if_fail (comp != NULL, NULL);
+ g_return_val_if_fail (IS_CAL_COMPONENT (comp), NULL);
+
+ priv = comp->priv;
+ g_return_val_if_fail (priv->icalcomp != NULL, NULL);
+
+ subcomp = icalcomponent_get_next_component (priv->icalcomp, ICAL_VALARM_COMPONENT);
+ if (!subcomp)
+ return NULL;
+
+ return make_alarm (comp, subcomp);
+}
+
+/**
* cal_component_alarm_free:
* @alarm: A calendar alarm.
*
diff --git a/calendar/cal-util/cal-component.h b/calendar/cal-util/cal-component.h
index faecd6621f..d547924b31 100644
--- a/calendar/cal-util/cal-component.h
+++ b/calendar/cal-util/cal-component.h
@@ -53,13 +53,13 @@ typedef enum {
/* Field identifiers for a calendar component */
typedef enum {
- CAL_COMPONENT_FIELD_CATEGORIES,
+ CAL_COMPONENT_FIELD_CATEGORIES, /* concatenation of the categories list */
CAL_COMPONENT_FIELD_CLASSIFICATION,
CAL_COMPONENT_FIELD_COMPLETED,
- CAL_COMPONENT_FIELD_CREATED,
CAL_COMPONENT_FIELD_DTEND,
CAL_COMPONENT_FIELD_DTSTART,
CAL_COMPONENT_FIELD_DUE,
+ CAL_COMPONENT_FIELD_GEO,
CAL_COMPONENT_FIELD_PERCENT,
CAL_COMPONENT_FIELD_PRIORITY,
CAL_COMPONENT_FIELD_SUMMARY,
@@ -71,7 +71,7 @@ typedef enum {
CAL_COMPONENT_FIELD_RECURRING, /* not a real field */
CAL_COMPONENT_FIELD_OVERDUE, /* not a real field */
CAL_COMPONENT_FIELD_COLOR, /* not a real field */
- CAL_COMPONETN_FIELD_NUM_FIELDS
+ CAL_COMPONENT_FIELD_NUM_FIELDS
} CalComponentField;
/* Structures to return properties and their parameters */
@@ -201,6 +201,9 @@ void cal_component_set_exdate_list (CalComponent *comp, GSList *exdate_list);
void cal_component_get_exrule_list (CalComponent *comp, GSList **recur_list);
void cal_component_set_exrule_list (CalComponent *comp, GSList *recur_list);
+void cal_component_get_geo (CalComponent *comp, struct icalgeotype **geo);
+void cal_component_set_geo (CalComponent *comp, struct icalgeotype *geo);
+
void cal_component_get_last_modified (CalComponent *comp, struct icaltimetype **t);
void cal_component_set_last_modified (CalComponent *comp, struct icaltimetype *t);
@@ -212,9 +215,11 @@ void cal_component_set_priority (CalComponent *comp, int *priority);
void cal_component_get_rdate_list (CalComponent *comp, GSList **period_list);
void cal_component_set_rdate_list (CalComponent *comp, GSList *period_list);
+gboolean cal_component_has_rdates (CalComponent *comp);
void cal_component_get_rrule_list (CalComponent *comp, GSList **recur_list);
void cal_component_set_rrule_list (CalComponent *comp, GSList *recur_list);
+gboolean cal_component_has_rrules (CalComponent *comp);
void cal_component_get_sequence (CalComponent *comp, int **sequence);
void cal_component_set_sequence (CalComponent *comp, int *sequence);
@@ -233,6 +238,7 @@ void cal_component_set_url (CalComponent *comp, const char *url);
void cal_component_free_categories_list (GSList *categ_list);
void cal_component_free_datetime (CalComponentDateTime *dt);
void cal_component_free_exdate_list (GSList *exdate_list);
+void cal_component_free_geo (struct icalgeotype *geo);
void cal_component_free_icaltimetype (struct icaltimetype *t);
void cal_component_free_percent (int *percent);
void cal_component_free_priority (int *priority);