From 31ca550a7e27c78465919ffc7bfae976f573a801 Mon Sep 17 00:00:00 2001 From: Gabriel Handford Date: Thu, 3 Dec 2009 14:00:43 -0800 Subject: [PATCH] Fixing filtering --- Classes/SharedUI/GHTestViewModel.h | 2 ++ Classes/SharedUI/GHTestViewModel.m | 30 ++++++++++++++++++------------ 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/Classes/SharedUI/GHTestViewModel.h b/Classes/SharedUI/GHTestViewModel.h index 237d750e..8316e9a7 100644 --- a/Classes/SharedUI/GHTestViewModel.h +++ b/Classes/SharedUI/GHTestViewModel.h @@ -153,4 +153,6 @@ typedef enum { - (void)notifyChanged; +- (void)setFilter:(GHTestNodeFilter)filter textFilter:(NSString *)textFilter; + @end diff --git a/Classes/SharedUI/GHTestViewModel.m b/Classes/SharedUI/GHTestViewModel.m index 671c0fa3..d9888bf8 100644 --- a/Classes/SharedUI/GHTestViewModel.m +++ b/Classes/SharedUI/GHTestViewModel.m @@ -143,7 +143,8 @@ - (void)_updateTestNodeWithDefaults:(GHTestNode *)node { test.status = testDefault.status; test.interval = testDefault.interval; #if !TARGET_OS_IPHONE // Don't use hidden state for iPhone - test.hidden = testDefault.hidden; + if ([test isKindOfClass:[GHTest class]]) + test.hidden = testDefault.hidden; #endif } for(GHTestNode *childNode in [node children]) @@ -279,33 +280,38 @@ - (void)_applyFilters { filteredChildren_ = [[NSMutableArray array] retain]; for(GHTestNode *childNode in children_) { if ((!textFilter_ || [textFiltered containsObject:childNode]) && - (filter_ == GHTestNodeFilterNone || [filtered containsObject:childNode])) { + (filter_ == GHTestNodeFilterNone || [filtered containsObject:childNode]) || [childNode hasChildren]) { [filteredChildren_ addObject:childNode]; - if (![childNode hasChildren]) + if (![childNode hasChildren]) { childNode.test.disabled = NO; + } } else { - if (![childNode hasChildren]) + if (![childNode hasChildren]) { childNode.test.disabled = YES; + } } } } - (void)setTextFilter:(NSString *)textFilter { + [self setFilter:filter_ textFilter:textFilter]; +} + +- (void)setFilter:(GHTestNodeFilter)filter { + [self setFilter:filter textFilter:textFilter_]; +} + +- (void)setFilter:(GHTestNodeFilter)filter textFilter:(NSString *)textFilter { if ([self isRunning]) [NSException raise:NSObjectNotAvailableException format:@"Can't filter while running"]; + filter_ = filter; textFilter = [textFilter stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; if ([textFilter isEqualToString:@""]) textFilter = nil; [textFilter retain]; [textFilter_ release]; - textFilter_ = textFilter; - [self _applyFilters]; -} - -- (void)setFilter:(GHTestNodeFilter)filter { - if ([self isRunning]) [NSException raise:NSObjectNotAvailableException format:@"Can't filter while running"]; - filter_ = filter; - [self _applyFilters]; + textFilter_ = textFilter; + [self _applyFilters]; } - (NSString *)name {