static gboolean check_first_instance_cb (ECalComponent *comp, time_t instance_start, time_t instance_end, gpointer user_data) { CheckFirstInstanceData *ifs = user_data; icalcomponent *icalcomp; struct icaltimetype rid; g_return_val_if_fail (ifs != NULL, FALSE); icalcomp = e_cal_component_get_icalcomponent (comp); if (icalcomponent_get_first_property (icalcomp, ICAL_RECURRENCEID_PROPERTY) != NULL) { rid = icalcomponent_get_recurrenceid (icalcomp); } else { struct icaltimetype dtstart; dtstart = icalcomponent_get_dtstart (icalcomp); if (dtstart.zone) { rid = icaltime_from_timet_with_zone (instance_start, dtstart.is_date, dtstart.zone); } else { rid = icaltime_from_timet (instance_start, dtstart.is_date); } } ifs->matches = icaltime_compare (ifs->rid, rid) == 0; return FALSE; }
static void objects_modified_cb (GObject *object, const GSList *objects, gpointer data) { const GSList *l; GMainLoop *loop = (GMainLoop *) data; for (l = objects; l; l = l->next) { icalcomponent *component = l->data; struct icaltimetype recurrence = icalcomponent_get_recurrenceid (component); struct icaltimetype last_modified = get_last_modified (component); g_print ( "Object modified %s (recurrence id:%s, last-modified:%s)\n", icalcomponent_get_uid (component), icaltime_as_ical_string (recurrence), icaltime_as_ical_string (last_modified)); g_assert (icalcomponent_get_summary (component) == NULL); } subtest_passed (SUBTEST_OBJECTS_MODIFIED, loop); }