static void add_timezone_cb (icalparameter *param, gpointer data) { icaltimezone *tz; const gchar *tzid; icalcomponent *vtz_comp; ForeachTzidData *f_data = (ForeachTzidData *) data; tzid = icalparameter_get_tzid (param); if (!tzid) return; tz = icalcomponent_get_timezone (f_data->vcal_comp, tzid); if (tz) return; tz = icalcomponent_get_timezone (f_data->icalcomp, tzid); if (!tz) { tz = icaltimezone_get_builtin_timezone_from_tzid (tzid); if (!tz) return; } vtz_comp = icaltimezone_get_component (tz); if (!vtz_comp) return; icalcomponent_add_component ( f_data->vcal_comp, icalcomponent_new_clone (vtz_comp)); }
static void insert_tz_comps (icalparameter *param, gpointer cb_data) { const gchar *tzid; CompTzData *tdata = cb_data; icaltimezone *zone = NULL; icalcomponent *tzcomp; GError *error = NULL; tzid = icalparameter_get_tzid (param); if (g_hash_table_lookup (tdata->zones, tzid)) return; e_cal_client_get_timezone_sync ( tdata->client, tzid, &zone, NULL, &error); if (error != NULL) { g_warning ( "Could not get the timezone information for %s: %s", tzid, error->message); g_error_free (error); return; } tzcomp = icalcomponent_new_clone (icaltimezone_get_component (zone)); g_hash_table_insert (tdata->zones, (gpointer) tzid, (gpointer) tzcomp); }
static time_t get_time_from_property (icalcomponent *ical, icalproperty_kind prop_kind, struct icaltimetype (* get_prop_func) (const icalproperty *prop), icaltimezone *default_zone) { icalproperty *prop; struct icaltimetype ical_time; icalparameter *param; icaltimezone *timezone = NULL; prop = icalcomponent_get_first_property (ical, prop_kind); if (!prop) return 0; ical_time = get_prop_func (prop); param = icalproperty_get_first_parameter (prop, ICAL_TZID_PARAMETER); if (param) timezone = icaltimezone_get_builtin_timezone_from_tzid (icalparameter_get_tzid (param)); else if (icaltime_is_utc (ical_time)) timezone = icaltimezone_get_utc_timezone (); else timezone = default_zone; return icaltime_as_timet_with_zone (ical_time, timezone); }
void EDSCalendarStorage::findTimeZonesCb(icalparameter* param, void* data) { if (NULL == data) { return; } //get time zone id and insert it in set of timezones found in current component const char* value = icalparameter_get_tzid(param); currentEventTimeZones.insert(value); }
static void patch_tzids (icalcomponent *subcomp, GHashTable *mapping) { gchar *tzid = NULL; if (icalcomponent_isa (subcomp) != ICAL_VTIMEZONE_COMPONENT) { icalproperty *prop = icalcomponent_get_first_property ( subcomp, ICAL_ANY_PROPERTY); while (prop) { icalparameter *param = icalproperty_get_first_parameter ( prop, ICAL_TZID_PARAMETER); while (param) { const gchar *oldtzid; const gchar *newtzid; g_free (tzid); tzid = g_strdup (icalparameter_get_tzid (param)); if (!g_hash_table_lookup_extended ( mapping, tzid, (gpointer *) &oldtzid, (gpointer *) &newtzid)) { /* Corresponding VTIMEZONE not seen before! */ newtzid = e_cal_match_tzid (tzid); } if (newtzid) { icalparameter_set_tzid (param, newtzid); } param = icalproperty_get_next_parameter ( prop, ICAL_TZID_PARAMETER); } prop = icalcomponent_get_next_property ( subcomp, ICAL_ANY_PROPERTY); } } g_free (tzid); }