From 5258ee2e76e85d053917fb52f1c1954a162e54de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Garc=C3=ADa=20S=C3=A1ez?= Date: Tue, 27 Jan 2015 19:07:26 +0100 Subject: [PATCH] oc-appointments: ignore alarms already triggered --- OpenChange/MAPIStoreAppointmentWrapper.m | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/OpenChange/MAPIStoreAppointmentWrapper.m b/OpenChange/MAPIStoreAppointmentWrapper.m index f459462be..c6fc58c8a 100644 --- a/OpenChange/MAPIStoreAppointmentWrapper.m +++ b/OpenChange/MAPIStoreAppointmentWrapper.m @@ -1835,16 +1835,25 @@ ReservedBlockEE2Size: 00 00 00 00 NSArray *alarms; NSUInteger count, max; iCalAlarm *currentAlarm; - NSString *action; + NSString *action, *webstatus; alarms = [event alarms]; max = [alarms count]; for (count = 0; !alarm && count < max; count++) { currentAlarm = [alarms objectAtIndex: count]; - action = [[currentAlarm action] lowercaseString]; - if (!action || [action isEqualToString: @"display"]) - ASSIGN (alarm, currentAlarm); + + // Only handle 'display' alarms + action = [currentAlarm action]; + if ([action caseInsensitiveCompare: @"display"] != NSOrderedSame) + continue; + + // Ignore alarms already triggered + webstatus = [[currentAlarm trigger] value: 0 ofAttribute: @"x-webstatus"]; + if ([webstatus caseInsensitiveCompare: @"triggered"] == NSOrderedSame) + continue; + + ASSIGN (alarm, currentAlarm); } alarmSet = YES;