From 7a072049abbff7952d69e5b96fec0d05bef537f2 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Fri, 9 Apr 2010 18:32:22 +0000 Subject: [PATCH] Monotone-Parent: 89b96d9d2226f3bc49b522e79b43098dfa922b34 Monotone-Revision: f4861ebaae0a55ed464809d54f5ecd4f0bef9913 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2010-04-09T18:32:22 Monotone-Branch: ca.inverse.sogo --- SOPE/NGCards/ChangeLog | 5 +++++ SOPE/NGCards/iCalEvent.h | 2 ++ SOPE/NGCards/iCalEvent.m | 24 ++++++++++++++++++++++++ 3 files changed, 31 insertions(+) diff --git a/SOPE/NGCards/ChangeLog b/SOPE/NGCards/ChangeLog index fb4d15e83..3c45fc14d 100644 --- a/SOPE/NGCards/ChangeLog +++ b/SOPE/NGCards/ChangeLog @@ -1,3 +1,8 @@ +2010-04-09 Wolfgang Sourdeau + + * iCalEvent.m (-propertyValue:): new method that accept a + key-based method invocation. + 2010-03-22 Wolfgang Sourdeau * iCalTimeZonePeriod.m (_occurenceForDate:byRRule:): fixed diff --git a/SOPE/NGCards/iCalEvent.h b/SOPE/NGCards/iCalEvent.h index 576b5f79d..0dabe1806 100644 --- a/SOPE/NGCards/iCalEvent.h +++ b/SOPE/NGCards/iCalEvent.h @@ -72,6 +72,8 @@ - (iCalEventChanges *) getChangesRelativeToEvent: (iCalEvent *) _event; +- (id) propertyValue: (NSString *) property; + @end #endif /* __NGCards_iCalEvent_H__ */ diff --git a/SOPE/NGCards/iCalEvent.m b/SOPE/NGCards/iCalEvent.m index 050f9d9d6..3bbde5c50 100644 --- a/SOPE/NGCards/iCalEvent.m +++ b/SOPE/NGCards/iCalEvent.m @@ -19,6 +19,8 @@ 02111-1307, USA. */ +#import + #import #import @@ -262,4 +264,26 @@ toEvent: self]; } +- (id) propertyValue: (NSString *) property +{ + static NSDictionary *propertyMethods = nil; + NSString *method; + + if (!propertyMethods) + { + propertyMethods = [NSDictionary dictionaryWithObjectsAndKeys: + @"durationAsTimeInterval", @"duration", + @"recurrenceRules", @"rrule", + @"exceptionRules", @"exrule", + @"exceptionDates", @"exdate", + nil]; + [propertyMethods retain]; + } + method = [propertyMethods objectForKey: property]; + if (!method) + method = property; + + return [self performSelector: NSSelectorFromString (method)]; +} + @end /* iCalEvent */