diff options
Diffstat (limited to 'calendar')
-rw-r--r-- | calendar/ChangeLog | 5 | ||||
-rw-r--r-- | calendar/cal-util/cal-component.c | 66 | ||||
-rw-r--r-- | calendar/cal-util/cal-component.h | 4 |
3 files changed, 75 insertions, 0 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog index 67680acb73..e89c611561 100644 --- a/calendar/ChangeLog +++ b/calendar/ChangeLog @@ -1,3 +1,8 @@ +2001-10-18 Rodrigo Moya <rodrigo@ximian.com> + + * cal-util/cal-component.[ch] (cal_component_get_location): + (cal_component_set_location): new functions + 2001-10-18 JP Rosevear <jpr@ximian.com> * gui/e-meeting-model.c (process_callbacks): util routine to diff --git a/calendar/cal-util/cal-component.c b/calendar/cal-util/cal-component.c index fd543debfe..312556fd54 100644 --- a/calendar/cal-util/cal-component.c +++ b/calendar/cal-util/cal-component.c @@ -133,6 +133,7 @@ struct _CalComponentPrivate { icalproperty *transparency; icalproperty *url; + icalproperty *location; /* Subcomponents */ @@ -327,6 +328,7 @@ free_icalcomponent (CalComponent *comp, gboolean free) priv->transparency = NULL; priv->url = NULL; + priv->location = NULL; /* Free the subcomponents */ @@ -691,6 +693,10 @@ scan_property (CalComponent *comp, icalproperty *prop) priv->url = prop; break; + case ICAL_LOCATION_PROPERTY : + priv->location = prop; + break; + default: break; } @@ -3806,6 +3812,66 @@ cal_component_has_attendees (CalComponent *comp) return FALSE; } +/** + * cal_component_get_location: + * @comp: A calendar component object. + * @url: Return value for the location. + * + * Queries the location property of a calendar component object. + **/ +void +cal_component_get_location (CalComponent *comp, const char **location) +{ + CalComponentPrivate *priv; + + g_return_if_fail (comp != NULL); + g_return_if_fail (IS_CAL_COMPONENT (comp)); + g_return_if_fail (location != NULL); + + priv = comp->priv; + g_return_if_fail (priv->icalcomp != NULL); + + if (priv->location) + *location = icalproperty_get_location (priv->location); + else + *location = NULL; +} + +/** + * cal_component_set_location: + * @comp: A calendar component object. + * @url: Location value. + * + * Sets the location property of a calendar component object. + **/ +void +cal_component_set_location (CalComponent *comp, const char *location) +{ + 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 (!location || !(*location)) { + if (priv->location) { + icalcomponent_remove_property (priv->icalcomp, priv->location); + icalproperty_free (priv->location); + priv->location = NULL; + } + + return; + } + + if (priv->location) + icalproperty_set_location (priv->location, (char *) location); + else { + priv->location = icalproperty_new_location ((char *) location); + icalcomponent_add_property (priv->icalcomp, priv->location); + } +} diff --git a/calendar/cal-util/cal-component.h b/calendar/cal-util/cal-component.h index b8bd010b63..df24632bcf 100644 --- a/calendar/cal-util/cal-component.h +++ b/calendar/cal-util/cal-component.h @@ -79,6 +79,7 @@ typedef enum { CAL_COMPONENT_FIELD_COLOR, /* not a real field */ CAL_COMPONENT_FIELD_STATUS, CAL_COMPONENT_FIELD_COMPONENT, /* not a real field */ + CAL_COMPONENT_FIELD_LOCATION, CAL_COMPONENT_FIELD_NUM_FIELDS } CalComponentField; @@ -312,6 +313,9 @@ void cal_component_get_attendee_list (CalComponent *comp, GSList **attendee_list void cal_component_set_attendee_list (CalComponent *comp, GSList *attendee_list); gboolean cal_component_has_attendees (CalComponent *comp); +void cal_component_get_location (CalComponent *comp, const char **location); +void cal_component_set_location (CalComponent *comp, const char *location); + gboolean cal_component_event_dates_match (CalComponent *comp1, CalComponent *comp2); |