aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/cal-util/cal-component.c
diff options
context:
space:
mode:
Diffstat (limited to 'calendar/cal-util/cal-component.c')
-rw-r--r--calendar/cal-util/cal-component.c265
1 files changed, 241 insertions, 24 deletions
diff --git a/calendar/cal-util/cal-component.c b/calendar/cal-util/cal-component.c
index e8b2795b99..33ab5695cd 100644
--- a/calendar/cal-util/cal-component.c
+++ b/calendar/cal-util/cal-component.c
@@ -50,6 +50,7 @@ typedef struct {
GSList *comment_list;
+ icalproperty *completed;
icalproperty *created;
GSList *description_list;
@@ -74,6 +75,9 @@ typedef struct {
icalparameter *altrep_param;
} summary;
+ icalproperty *transparency;
+ icalproperty *url;
+
/* Whether we should increment the sequence number when piping the
* object over the wire.
*/
@@ -188,6 +192,7 @@ free_icalcomponent (CalComponent *comp)
priv->classification = NULL;
priv->comment_list = NULL;
+ priv->completed = NULL;
priv->created = NULL;
priv->description_list = free_slist (priv->description_list);
@@ -209,6 +214,9 @@ free_icalcomponent (CalComponent *comp)
priv->summary.prop = NULL;
priv->summary.altrep_param = NULL;
+ priv->transparency = NULL;
+ priv->url = NULL;
+
/* Clean up */
priv->need_sequence_inc = FALSE;
@@ -420,6 +428,10 @@ scan_property (CalComponent *comp, icalproperty *prop)
scan_text (comp, &priv->comment_list, prop);
break;
+ case ICAL_COMPLETED_PROPERTY:
+ priv->completed = prop;
+ break;
+
case ICAL_CREATED_PROPERTY:
priv->created = prop;
break;
@@ -456,10 +468,18 @@ scan_property (CalComponent *comp, icalproperty *prop)
scan_summary (comp, prop);
break;
+ case ICAL_TRANSP_PROPERTY:
+ priv->transparency = prop;
+ break;
+
case ICAL_UID_PROPERTY:
priv->uid = prop;
break;
+ case ICAL_URL_PROPERTY:
+ priv->url = prop;
+ break;
+
default:
break;
}
@@ -1174,30 +1194,6 @@ get_icaltimetype (icalproperty *prop,
**t = (* get_prop_func) (prop);
}
-/**
- * cal_component_get_created:
- * @comp: A calendar component object.
- * @t: Return value for the creation date. This should be freed using the
- * cal_component_free_icaltimetype() function.
- *
- * Queries the date in which a calendar component object was created in the
- * calendar store.
- **/
-void
-cal_component_get_created (CalComponent *comp, struct icaltimetype **t)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (t != NULL);
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- get_icaltimetype (priv->created, icalproperty_get_created, t);
-}
-
/* Sets a struct icaltimetype value */
static void
set_icaltimetype (CalComponent *comp, icalproperty **prop,
@@ -1228,6 +1224,78 @@ set_icaltimetype (CalComponent *comp, icalproperty **prop,
}
/**
+ * cal_component_get_completed:
+ * @comp: A calendar component object.
+ * @t: Return value for the completion date. This should be freed using the
+ * cal_component_free_icaltimetype() function.
+ *
+ * Queries the date at which a calendar compoment object was completed.
+ **/
+void
+cal_component_get_completed (CalComponent *comp, struct icaltimetype **t)
+{
+ CalComponentPrivate *priv;
+
+ g_return_if_fail (comp != NULL);
+ g_return_if_fail (IS_CAL_COMPONENT (comp));
+ g_return_if_fail (t != NULL);
+
+ priv = comp->priv;
+ g_return_if_fail (priv->icalcomp != NULL);
+
+ get_icaltimetype (priv->completed, icalproperty_get_completed, t);
+}
+
+/**
+ * cal_component_set_completed:
+ * @comp: A calendar component object.
+ * @t: Value for the completion date.
+ *
+ * Sets the date at which a calendar component object was completed.
+ **/
+void
+cal_component_set_completed (CalComponent *comp, struct icaltimetype *t)
+{
+ 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);
+
+ set_icaltimetype (comp, &priv->completed,
+ icalproperty_new_completed,
+ icalproperty_set_completed,
+ t);
+}
+
+
+/**
+ * cal_component_get_created:
+ * @comp: A calendar component object.
+ * @t: Return value for the creation date. This should be freed using the
+ * cal_component_free_icaltimetype() function.
+ *
+ * Queries the date in which a calendar component object was created in the
+ * calendar store.
+ **/
+void
+cal_component_get_created (CalComponent *comp, struct icaltimetype **t)
+{
+ CalComponentPrivate *priv;
+
+ g_return_if_fail (comp != NULL);
+ g_return_if_fail (IS_CAL_COMPONENT (comp));
+ g_return_if_fail (t != NULL);
+
+ priv = comp->priv;
+ g_return_if_fail (priv->icalcomp != NULL);
+
+ get_icaltimetype (priv->created, icalproperty_get_created, t);
+}
+
+/**
* cal_component_set_created:
* @comp: A calendar component object.
* @t: Value for the creation date.
@@ -1809,3 +1877,152 @@ cal_component_set_summary (CalComponent *comp, CalComponentText *summary)
priv->summary.altrep_param = NULL;
}
}
+
+/**
+ * cal_component_get_transparency:
+ * @comp: A calendar component object.
+ * @transp: Return value for the time transparency.
+ *
+ * Queries the time transparency of a calendar component object.
+ **/
+void
+cal_component_get_transparency (CalComponent *comp, CalComponentTransparency *transp)
+{
+ CalComponentPrivate *priv;
+ const char *val;
+
+ g_return_if_fail (comp != NULL);
+ g_return_if_fail (IS_CAL_COMPONENT (comp));
+ g_return_if_fail (transp != NULL);
+
+ priv = comp->priv;
+ g_return_if_fail (priv->icalcomp != NULL);
+
+ if (!priv->transparency) {
+ *transp = CAL_COMPONENT_TRANSP_NONE;
+ return;
+ }
+
+ val = icalproperty_get_transp (priv->transparency);
+
+ if (strcasecmp (val, "TRANSPARENT"))
+ *transp = CAL_COMPONENT_TRANSP_TRANSPARENT;
+ else if (strcasecmp (val, "OPAQUE"))
+ *transp = CAL_COMPONENT_TRANSP_OPAQUE;
+ else
+ *transp = CAL_COMPONENT_TRANSP_UNKNOWN;
+}
+
+/**
+ * cal_component_set_transparency:
+ * @comp: A calendar component object.
+ * @transp: Time transparency value.
+ *
+ * Sets the time transparency of a calendar component object.
+ **/
+void
+cal_component_set_transparency (CalComponent *comp, CalComponentTransparency transp)
+{
+ CalComponentPrivate *priv;
+ char *str;
+
+ g_return_if_fail (comp != NULL);
+ g_return_if_fail (IS_CAL_COMPONENT (comp));
+ g_return_if_fail (transp != CAL_COMPONENT_TRANSP_UNKNOWN);
+
+ priv = comp->priv;
+ g_return_if_fail (priv->icalcomp != NULL);
+
+
+ if (transp == CAL_COMPONENT_TRANSP_NONE) {
+ if (priv->transparency) {
+ icalcomponent_remove_property (priv->icalcomp, priv->transparency);
+ icalproperty_free (priv->transparency);
+ priv->transparency = NULL;
+ }
+
+ return;
+ }
+
+ switch (transp) {
+ case CAL_COMPONENT_TRANSP_TRANSPARENT:
+ str = "TRANSPARENT";
+ break;
+
+ case CAL_COMPONENT_TRANSP_OPAQUE:
+ str = "OPAQUE";
+ break;
+
+ default:
+ g_assert_not_reached ();
+ str = NULL;
+ }
+
+ if (priv->transparency)
+ icalproperty_set_transp (priv->transparency, str);
+ else {
+ priv->transparency = icalproperty_new_transp (str);
+ icalcomponent_add_property (priv->icalcomp, priv->transparency);
+ }
+}
+
+/**
+ * cal_component_get_url:
+ * @comp: A calendar component object.
+ * @url: Return value for the URL.
+ *
+ * Queries the uniform resource locator property of a calendar component object.
+ **/
+void
+cal_component_get_url (CalComponent *comp, const char **url)
+{
+ CalComponentPrivate *priv;
+
+ g_return_if_fail (comp != NULL);
+ g_return_if_fail (IS_CAL_COMPONENT (comp));
+ g_return_if_fail (url != NULL);
+
+ priv = comp->priv;
+ g_return_if_fail (priv->icalcomp != NULL);
+
+ if (priv->url)
+ *url = icalproperty_get_url (priv->url);
+ else
+ *url = NULL;
+}
+
+/**
+ * cal_component_set_url:
+ * @comp: A calendar component object.
+ * @url: URL value.
+ *
+ * Sets the uniform resource locator property of a calendar component object.
+ **/
+void
+cal_component_set_url (CalComponent *comp, const char *url)
+{
+ 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 (!url) {
+ if (priv->url) {
+ icalcomponent_remove_property (priv->icalcomp, priv->url);
+ icalproperty_free (priv->url);
+ priv->url = NULL;
+ }
+
+ return;
+ }
+
+ if (priv->url)
+ icalproperty_set_url (priv->url, (char *) url);
+ else {
+ priv->url = icalproperty_new_url ((char *) url);
+ icalcomponent_add_property (priv->icalcomp, priv->url);
+ }
+}