aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/conduits/calendar/calendar-conduit.c
diff options
context:
space:
mode:
Diffstat (limited to 'calendar/conduits/calendar/calendar-conduit.c')
-rw-r--r--calendar/conduits/calendar/calendar-conduit.c33
1 files changed, 24 insertions, 9 deletions
diff --git a/calendar/conduits/calendar/calendar-conduit.c b/calendar/conduits/calendar/calendar-conduit.c
index cff1e6fe36..af514c9ada 100644
--- a/calendar/conduits/calendar/calendar-conduit.c
+++ b/calendar/conduits/calendar/calendar-conduit.c
@@ -53,7 +53,7 @@
GnomePilotConduit * conduit_get_gpilot_conduit (guint32);
void conduit_destroy_gpilot_conduit (GnomePilotConduit*);
-#define CONDUIT_VERSION "0.1.2"
+#define CONDUIT_VERSION "0.1.3"
#ifdef G_LOG_DOMAIN
#undef G_LOG_DOMAIN
#endif
@@ -254,6 +254,17 @@ get_pilot_day (icalrecurrencetype_weekday wd)
}
}
+/* FIX ME Is there a better way to see if no start time set? */
+static gboolean
+is_empty_time (struct tm time)
+{
+ if (time.tm_sec || time.tm_min || time.tm_hour
+ || time.tm_mday || time.tm_mon || time.tm_year)
+ return FALSE;
+
+ return TRUE;
+}
+
static short
nth_weekday (int pos, icalrecurrencetype_weekday weekday)
{
@@ -391,7 +402,7 @@ local_record_from_comp (ECalLocalRecord *local, CalComponent *comp, ECalConduitC
/* Recurrence Rules */
local->appt->repeatType = repeatNone;
-
+
if (cal_component_has_rrules (comp)) {
GSList *list;
struct icalrecurrencetype *recur;
@@ -451,6 +462,14 @@ local_record_from_comp (ECalLocalRecord *local, CalComponent *comp, ECalConduitC
local->appt->repeatFrequency = recur->interval;
}
+ if (icaltime_is_null_time (recur->until)) {
+ local->appt->repeatForever = 1;
+ } else {
+ local->appt->repeatForever = 0;
+ dt_time = icaltime_as_timet (recur->until);
+ local->appt->repeatEnd = *localtime (&dt_time);
+ }
+
cal_component_free_recur_list (list);
}
@@ -534,9 +553,7 @@ comp_from_remote_record (GnomePilotConduitSyncAbs *conduit,
cal_component_set_description_list (comp, &l);
}
- /* FIX ME Is there a better way to see if no start time set? */
- if (appt.begin.tm_sec || appt.begin.tm_min || appt.begin.tm_hour
- || appt.begin.tm_mday || appt.begin.tm_mon || appt.begin.tm_year) {
+ if (!is_empty_time (appt.begin)) {
it = icaltime_from_timet (mktime (&appt.begin), FALSE, FALSE);
dt.value = ⁢
cal_component_set_dtstart (comp, &dt);
@@ -549,8 +566,7 @@ comp_from_remote_record (GnomePilotConduitSyncAbs *conduit,
it = icaltime_from_timet (t, FALSE, FALSE);
dt.value = ⁢
cal_component_set_dtend (comp, &dt);
- } else if (appt.end.tm_sec || appt.end.tm_min || appt.end.tm_hour
- || appt.end.tm_mday || appt.end.tm_mon || appt.end.tm_year) {
+ } else if (!is_empty_time (appt.end)) {
it = icaltime_from_timet (mktime (&appt.end), FALSE, FALSE);
dt.value = ⁢
cal_component_set_dtend (comp, &dt);
@@ -608,8 +624,7 @@ comp_from_remote_record (GnomePilotConduitSyncAbs *conduit,
/* recurrence start of week */
recur.week_start = get_ical_day (appt.repeatWeekstart);
- if (appt.repeatEnd.tm_sec || appt.repeatEnd.tm_min || appt.repeatEnd.tm_hour
- || appt.repeatEnd.tm_mday || appt.repeatEnd.tm_mon || appt.repeatEnd.tm_year) {
+ if (!appt.repeatForever) {
time_t t = mktime (&appt.repeatEnd);
t = time_add_day (t, 1);
recur.until = icaltime_from_timet (t, FALSE, FALSE);