aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/conduits
diff options
context:
space:
mode:
authorJP Rosevear <jpr@ximian.com>2001-10-15 22:08:24 +0800
committerJP Rosevear <jpr@src.gnome.org>2001-10-15 22:08:24 +0800
commit835ad7ba36543b90ce1b1c87f526c5164331c55e (patch)
tree142b085c31599084ee088f867d5014e0ee19b121 /calendar/conduits
parentb09699bda2fb8e93f12ebf3948d8c4ed25029e52 (diff)
downloadgsoc2013-evolution-835ad7ba36543b90ce1b1c87f526c5164331c55e.tar.gz
gsoc2013-evolution-835ad7ba36543b90ce1b1c87f526c5164331c55e.tar.zst
gsoc2013-evolution-835ad7ba36543b90ce1b1c87f526c5164331c55e.zip
util function to determine if event is all day (local_record_from_comp):
2001-10-15 JP Rosevear <jpr@ximian.com> * conduits/calendar/calendar-conduit.c (is_all_day): util function to determine if event is all day (local_record_from_comp): use new util function (comp_from_remote_record): kill use of deprecated time functions svn path=/trunk/; revision=13673
Diffstat (limited to 'calendar/conduits')
-rw-r--r--calendar/conduits/calendar/calendar-conduit.c54
1 files changed, 38 insertions, 16 deletions
diff --git a/calendar/conduits/calendar/calendar-conduit.c b/calendar/conduits/calendar/calendar-conduit.c
index 676d65462c..13dfcf7211 100644
--- a/calendar/conduits/calendar/calendar-conduit.c
+++ b/calendar/conduits/calendar/calendar-conduit.c
@@ -323,6 +323,22 @@ is_empty_time (struct tm time)
return TRUE;
}
+static gboolean
+is_all_day (CalClient *client, CalComponentDateTime *dt_start, CalComponentDateTime *dt_end)
+{
+ time_t dt_start_time, dt_end_time;
+ icaltimezone *timezone;
+
+ timezone = get_timezone (client, dt_start->tzid);
+ dt_start_time = icaltime_as_timet_with_zone (*dt_start->value, timezone);
+ dt_end_time = icaltime_as_timet_with_zone (*dt_end->value, get_timezone (client, dt_end->tzid));
+
+ if (dt_end_time == time_add_day_with_zone (dt_start_time, 1, timezone))
+ return TRUE;
+
+ return FALSE;
+}
+
static short
nth_weekday (int pos, icalrecurrencetype_weekday weekday)
{
@@ -412,7 +428,7 @@ local_record_from_comp (ECalLocalRecord *local, CalComponent *comp, ECalConduitC
CalComponentText summary;
GSList *d_list = NULL, *edl = NULL, *l;
CalComponentText *description;
- CalComponentDateTime dt;
+ CalComponentDateTime dt_start, dt_end, dt;
CalComponentClassification classif;
time_t dt_time;
int i;
@@ -462,24 +478,31 @@ local_record_from_comp (ECalLocalRecord *local, CalComponent *comp, ECalConduitC
local->appt->note = NULL;
}
- cal_component_get_dtstart (comp, &dt);
- if (dt.value) {
- dt_time = icaltime_as_timet_with_zone (*dt.value, get_timezone (ctxt->client, dt.tzid));
-
+ /* Start/End */
+ cal_component_get_dtstart (comp, &dt_start);
+ cal_component_get_dtend (comp, &dt_end);
+ if (dt_start.value) {
+ dt_time = icaltime_as_timet_with_zone (*dt_start.value,
+ get_timezone (ctxt->client, dt_start.tzid));
local->appt->begin = *localtime (&dt_time);
+ } else {
+ WARN ("No starting time!");
}
- cal_component_free_datetime (&dt);
-
- cal_component_get_dtend (comp, &dt);
- if (dt.value && time_add_day (dt_time, 1) != icaltime_as_timet_with_zone (*dt.value, get_timezone (ctxt->client, dt.tzid))) {
- dt_time = icaltime_as_timet_with_zone (*dt.value, get_timezone (ctxt->client, dt.tzid));
-
- local->appt->end = *localtime (&dt_time);
- local->appt->event = 0;
+
+ if (dt_start.value && dt_end.value) {
+ if (is_all_day (ctxt->client, &dt_start, &dt_end)) {
+ local->appt->event = 1;
+ } else {
+ dt_time = icaltime_as_timet_with_zone (*dt_end.value,
+ get_timezone (ctxt->client, dt_end.tzid));
+ local->appt->end = *localtime (&dt_time);
+ local->appt->event = 0;
+ }
} else {
local->appt->event = 1;
}
- cal_component_free_datetime (&dt);
+ cal_component_free_datetime (&dt_start);
+ cal_component_free_datetime (&dt_end);
/* Recurrence Rules */
local->appt->repeatType = repeatNone;
@@ -666,7 +689,7 @@ comp_from_remote_record (GnomePilotConduitSyncAbs *conduit,
if (appt.event) {
time_t t = mktime (&appt.begin);
- t = time_day_end (t);
+ t = time_day_end_with_zone (t, timezone);
it = icaltime_from_timet_with_zone (t, FALSE, timezone);
dt.value = &it;
cal_component_set_dtend (comp, &dt);
@@ -734,7 +757,6 @@ comp_from_remote_record (GnomePilotConduitSyncAbs *conduit,
if (!appt.repeatForever) {
time_t t = mktime (&appt.repeatEnd);
- t = time_add_day (t, 1);
recur.until = icaltime_from_timet_with_zone (t, FALSE, timezone);
}