diff --git a/SOPE/NGCards/CardGroup.h b/SOPE/NGCards/CardGroup.h index c299830e1..4535f041d 100644 --- a/SOPE/NGCards/CardGroup.h +++ b/SOPE/NGCards/CardGroup.h @@ -48,6 +48,8 @@ - (void) addChild: (CardElement *) aChild; - (void) addChildren: (NSArray *) someChildren; +- (void) removeChild: (CardElement *) aChild; +- (void) removeChildren: (NSArray *) someChildren; - (NSMutableArray *) children; - (CardElement *) firstChildWithTag: (NSString *) aTag; diff --git a/SOPE/NGCards/CardGroup.m b/SOPE/NGCards/CardGroup.m index 9f62afa98..138c6b99c 100644 --- a/SOPE/NGCards/CardGroup.m +++ b/SOPE/NGCards/CardGroup.m @@ -253,6 +253,22 @@ static NGCardsSaxHandler *sax = nil; [self addChild: currentChild]; } +- (void) removeChild: (CardElement *) aChild +{ + [aChild setParent: nil]; + [children removeObject: aChild]; +} + +- (void) removeChildren: (NSArray *) someChildren +{ + CardElement *currentChild; + NSEnumerator *newChildren; + + newChildren = [someChildren objectEnumerator]; + while ((currentChild = [newChildren nextObject])) + [self removeChild: currentChild]; +} + - (NSMutableArray *) children { return children; diff --git a/SOPE/NGCards/ChangeLog b/SOPE/NGCards/ChangeLog index c12b30353..86dab1f70 100644 --- a/SOPE/NGCards/ChangeLog +++ b/SOPE/NGCards/ChangeLog @@ -1,3 +1,8 @@ +2011-03-20 Wolfgang Sourdeau + + * CardGroup.m (-removeChild:, -removeChildren:): new + self-explanatory methods. + 2011-03-15 Wolfgang Sourdeau * NSString+NGCards.m (-asCardAttributeValues): rewritten method diff --git a/SOPE/NGCards/iCalRepeatableEntityObject.m b/SOPE/NGCards/iCalRepeatableEntityObject.m index f24f4ad88..35fd63394 100644 --- a/SOPE/NGCards/iCalRepeatableEntityObject.m +++ b/SOPE/NGCards/iCalRepeatableEntityObject.m @@ -54,7 +54,7 @@ - (void) removeAllRecurrenceRules { - [children removeObjectsInArray: [self childrenWithTag: @"rrule"]]; + [self removeChildren: [self recurrenceRules]]; } - (void) addToRecurrenceRules: (id) _rrule @@ -80,7 +80,7 @@ - (void) removeAllExceptionRules { - [children removeObjectsInArray: [self childrenWithTag: @"exrule"]]; + [self removeChildren: [self exceptionRules]]; } - (void) addToExceptionRules: (id) _rrule @@ -106,7 +106,7 @@ - (void) removeAllExceptionDates { - [children removeObjectsInArray: [self childrenWithTag: @"exdate"]]; + [self removeChildren: [self exceptionDates]]; } - (void) addToExceptionDates: (NSCalendarDate *) _rdate @@ -171,8 +171,7 @@ */ - (NSArray *) exceptionDatesWithEventTimeZone: (iCalTimeZone *) theTimeZone { - NSArray *exDates; - NSMutableArray *dates; + NSArray *dates, *exDates; NSEnumerator *dateList; NSCalendarDate *exDate; NSString *dateString; @@ -190,7 +189,7 @@ { dateString = [exDates objectAtIndex: i]; exDate = [theTimeZone computedDateForString: dateString]; - [dates addObject: exDate]; + [(NSMutableArray *) dates addObject: exDate]; } } }