NS_IMETHODIMP calDateTime::Compare(calIDateTime * aOther, PRInt32 * aResult) { NS_ENSURE_ARG_POINTER(aOther); NS_ENSURE_ARG_POINTER(aResult); PRBool otherIsDate = PR_FALSE; aOther->GetIsDate(&otherIsDate); icaltimetype a, b; ToIcalTime(&a); aOther->ToIcalTime(&b); // If either this or aOther is floating, both objects are treated // as floating for the comparison. if (!a.zone || !b.zone) { a.zone = NULL; a.is_utc = 0; b.zone = NULL; b.is_utc = 0; } if (mIsDate || otherIsDate) { *aResult = icaltime_compare_date_only(a, b, cal::getIcalTimezone(mTimezone)); } else { *aResult = icaltime_compare(a, b); } return NS_OK; }
/* is_past_event: * * returns TRUE if @comp is in the past, FALSE otherwise. * Comparision is based only on date part, time part is ignored. */ static gboolean is_past_event (ECalComponent *comp) { ECalComponentDateTime end_date; gboolean res; if (!comp) return TRUE; e_cal_component_get_dtend (comp, &end_date); res = icaltime_compare_date_only ( *end_date.value, icaltime_current_time_with_zone ( icaltime_get_timezone (*end_date.value))) == -1; e_cal_component_free_datetime (&end_date); return res; }