Ignore:
Timestamp:
Sep 19, 2011, 12:48:30 AM (10 years ago)
Author:
livings124
Message:

#4493 improve search filter behavior

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/macosx/Controller.m

    r12774 r12897  
    20012001    const BOOL filterGroup = groupFilterValue != GROUP_FILTER_ALL_TAG;
    20022002   
    2003     NSString * searchString = [fFilterBar searchString];
    2004     if (searchString && [searchString isEqualToString: @""])
    2005         searchString = nil;
    2006     const BOOL filterTracker = searchString && [[fDefaults stringForKey: @"FilterSearchType"] isEqualToString: FILTER_TYPE_TRACKER];
     2003    NSArray * searchStrings = [fFilterBar searchStrings];
     2004    if (searchStrings && [searchStrings count] == 0)
     2005        searchStrings = nil;
     2006    const BOOL filterTracker = searchStrings && [[fDefaults stringForKey: @"FilterSearchType"] isEqualToString: FILTER_TYPE_TRACKER];
    20072007   
    20082008    NSMutableArray * allTorrents = [NSMutableArray arrayWithCapacity: [fTorrents count]];
     
    20442044       
    20452045        //check text field
    2046         if (searchString)
    2047         {
     2046        if (searchStrings)
     2047        {
     2048            BOOL removeTextField = NO;
    20482049            if (filterTracker)
    20492050            {
    2050                 BOOL removeTextField = YES;
    2051                 for (NSString * tracker in [torrent allTrackersFlat])
     2051                NSArray * trackers = [torrent allTrackersFlat];
     2052               
     2053                //to count, we need each string in atleast 1 tracker
     2054                for (NSString * searchString in searchStrings)
    20522055                {
    2053                     if ([tracker rangeOfString: searchString options:
    2054                             (NSCaseInsensitiveSearch | NSDiacriticInsensitiveSearch)].location != NSNotFound)
     2056                    BOOL found = NO;
     2057                    for (NSString * tracker in trackers)
    20552058                    {
    2056                         removeTextField = NO;
     2059                        if ([tracker rangeOfString: searchString options:
     2060                             (NSCaseInsensitiveSearch | NSDiacriticInsensitiveSearch)].location != NSNotFound)
     2061                        {
     2062                            found = YES;
     2063                            break;
     2064                        }
     2065                    }
     2066                    if (!found)
     2067                    {
     2068                        removeTextField = YES;
    20572069                        break;
    20582070                    }
    20592071                }
    2060                
    2061                 if (removeTextField)
    2062                     continue;
    20632072            }
    20642073            else
    20652074            {
    2066                 if ([[torrent name] rangeOfString: searchString options:
    2067                         (NSCaseInsensitiveSearch | NSDiacriticInsensitiveSearch)].location == NSNotFound)
    2068                     continue;
     2075                for (NSString * searchString in searchStrings)
     2076                    if ([[torrent name] rangeOfString: searchString options: (NSCaseInsensitiveSearch | NSDiacriticInsensitiveSearch)].location == NSNotFound)
     2077                    {
     2078                        removeTextField = YES;
     2079                        break;
     2080                    }
    20692081            }
     2082           
     2083            if (removeTextField)
     2084                continue;
    20702085        }
    20712086       
     
    21532168    [self resetInfo]; //if group is already selected, but the torrents in it change
    21542169   
    2155     [self setBottomCountText: groupRows || filterStatus || filterGroup || searchString];
     2170    [self setBottomCountText: groupRows || filterStatus || filterGroup || searchStrings];
    21562171   
    21572172    [self setWindowSizeToFit];
Note: See TracChangeset for help on using the changeset viewer.