aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Bolle <pebolle@tiscali.nl>2009-11-28 04:15:55 +0800
committerPaul Bolle <pebolle@tiscali.nl>2009-11-28 05:30:24 +0800
commit680feab2f8f9e9a6fa01500bc37fb26ef0b068c1 (patch)
tree1085143b18d0e42e247200999cdfe410a01c905b
parent1ef281a1de4679a2e318b87cdc1a99927971f15f (diff)
downloadgsoc2013-evolution-680feab2f8f9e9a6fa01500bc37fb26ef0b068c1.tar
gsoc2013-evolution-680feab2f8f9e9a6fa01500bc37fb26ef0b068c1.tar.gz
gsoc2013-evolution-680feab2f8f9e9a6fa01500bc37fb26ef0b068c1.tar.bz2
gsoc2013-evolution-680feab2f8f9e9a6fa01500bc37fb26ef0b068c1.tar.lz
gsoc2013-evolution-680feab2f8f9e9a6fa01500bc37fb26ef0b068c1.tar.xz
gsoc2013-evolution-680feab2f8f9e9a6fa01500bc37fb26ef0b068c1.tar.zst
gsoc2013-evolution-680feab2f8f9e9a6fa01500bc37fb26ef0b068c1.zip
Bug #551603 - Special case "positive zero alarms"
Alarms triggered at the start of an appointment have a positive offset (of zero) in their struct ECalComponentAlarmTrigger. This means they are ignored in the current code (which only accepts negative offsets). Add a special case for positive offsets of zero. (Palm devices can not handle alarm triggers with a positive offset.)
-rw-r--r--calendar/conduits/calendar/calendar-conduit.c62
1 files changed, 34 insertions, 28 deletions
diff --git a/calendar/conduits/calendar/calendar-conduit.c b/calendar/conduits/calendar/calendar-conduit.c
index 0052c13f30..bc83f07489 100644
--- a/calendar/conduits/calendar/calendar-conduit.c
+++ b/calendar/conduits/calendar/calendar-conduit.c
@@ -1105,36 +1105,42 @@ local_record_from_comp (ECalLocalRecord *local, ECalComponent *comp, ECalConduit
e_cal_component_alarm_get_trigger (alarm, &trigger);
e_cal_component_alarm_free (alarm);
- if ((trigger.type == E_CAL_COMPONENT_ALARM_TRIGGER_RELATIVE_START
- && trigger.u.rel_duration.is_neg)) {
- local->appt->advanceUnits = advMinutes;
- local->appt->advance =
- trigger.u.rel_duration.minutes
- + trigger.u.rel_duration.hours * 60
- + trigger.u.rel_duration.days * 60 * 24
- + trigger.u.rel_duration.weeks * 7 * 60 * 24;
-
- if (local->appt->advance > PILOT_MAX_ADVANCE) {
- local->appt->advanceUnits = advHours;
+ if (trigger.type == E_CAL_COMPONENT_ALARM_TRIGGER_RELATIVE_START) {
+ if (trigger.u.rel_duration.is_neg) {
+ local->appt->advanceUnits = advMinutes;
local->appt->advance =
- trigger.u.rel_duration.minutes / 60
- + trigger.u.rel_duration.hours
- + trigger.u.rel_duration.days * 24
- + trigger.u.rel_duration.weeks * 7 * 24;
- }
- if (local->appt->advance > PILOT_MAX_ADVANCE) {
- local->appt->advanceUnits = advDays;
- local->appt->advance =
- trigger.u.rel_duration.minutes / (60 * 24)
- + trigger.u.rel_duration.hours / 24
- + trigger.u.rel_duration.days
- + trigger.u.rel_duration.weeks * 7;
+ trigger.u.rel_duration.minutes
+ + trigger.u.rel_duration.hours * 60
+ + trigger.u.rel_duration.days * 60 * 24
+ + trigger.u.rel_duration.weeks * 7 * 60 * 24;
+
+ if (local->appt->advance > PILOT_MAX_ADVANCE) {
+ local->appt->advanceUnits = advHours;
+ local->appt->advance =
+ trigger.u.rel_duration.minutes / 60
+ + trigger.u.rel_duration.hours
+ + trigger.u.rel_duration.days * 24
+ + trigger.u.rel_duration.weeks * 7 * 24;
+ }
+ if (local->appt->advance > PILOT_MAX_ADVANCE) {
+ local->appt->advanceUnits = advDays;
+ local->appt->advance =
+ trigger.u.rel_duration.minutes / (60 * 24)
+ + trigger.u.rel_duration.hours / 24
+ + trigger.u.rel_duration.days
+ + trigger.u.rel_duration.weeks * 7;
+ }
+ if (local->appt->advance > PILOT_MAX_ADVANCE)
+ local->appt->advance = PILOT_MAX_ADVANCE;
+
+ local->appt->alarm = 1;
+ break;
+ } else if (icaldurationtype_is_null_duration (trigger.u.rel_duration)) {
+ local->appt->advanceUnits = advMinutes;
+ local->appt->advance = 0;
+ local->appt->alarm = 1;
+ break;
}
- if (local->appt->advance > PILOT_MAX_ADVANCE)
- local->appt->advance = PILOT_MAX_ADVANCE;
-
- local->appt->alarm = 1;
- break;
}
}
cal_obj_uid_list_free (uids);