Changeset 4230
- Timestamp:
- Dec 20, 2007, 1:00:03 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/macosx/Controller.m
r4228 r4230 1819 1819 NSArray * selectedTorrents = [fTableView numberOfSelectedRows] > 0 1820 1820 ? [fDisplayedTorrents objectsAtIndexes: [fTableView selectedRowIndexes]] : nil; 1821 1822 NSMutableArray * tempTorrents = [NSMutableArray arrayWithCapacity: [fTorrents count]]; 1823 1821 1822 int downloading = 0, seeding = 0, paused = 0; 1824 1823 NSString * filterType = [fDefaults stringForKey: @"Filter"]; 1825 1826 int downloading = 0, seeding = 0, paused = 0; 1827 BOOL isDownload = [filterType isEqualToString: FILTER_DOWNLOAD], 1828 isSeed = [filterType isEqualToString: FILTER_SEED], 1829 isPause = [filterType isEqualToString: FILTER_PAUSE]; 1830 BOOL filtering = isDownload || isSeed || isPause; 1824 BOOL filterDownload = [filterType isEqualToString: FILTER_DOWNLOAD], 1825 filterSeed = [filterType isEqualToString: FILTER_SEED], 1826 filterPause = [filterType isEqualToString: FILTER_PAUSE]; 1827 1828 int groupFilter = [fDefaults integerForKey: @"FilterGroup"]; 1829 NSString * searchString = [fSearchFilterField stringValue]; 1830 1831 BOOL filterStatus = filterDownload || filterSeed || filterPause, 1832 filterGroup = groupFilter != GROUP_FILTER_ALL_TAG, 1833 filterText = [searchString length] > 0; 1834 1835 BOOL filterTracker = filterText && [[fDefaults stringForKey: @"FilterSearchType"] isEqualToString: FILTER_TYPE_TRACKER]; 1836 1837 NSMutableIndexSet * indexes = [NSMutableIndexSet indexSet]; 1831 1838 1832 1839 //get count of each type 1833 1840 NSEnumerator * enumerator = [fTorrents objectEnumerator]; 1834 1841 Torrent * torrent; 1842 int i = -1; 1835 1843 while ((torrent = [enumerator nextObject])) 1836 1844 { 1845 i++; 1846 1847 //check status 1837 1848 if ([torrent isActive]) 1838 1849 { … … 1840 1851 { 1841 1852 seeding++; 1842 if ( isSeed)1843 [tempTorrents addObject: torrent];1853 if (filterStatus && !filterSeed) 1854 continue; 1844 1855 } 1845 1856 else 1846 1857 { 1847 1858 downloading++; 1848 if ( isDownload)1849 [tempTorrents addObject: torrent];1859 if (filterStatus && !filterDownload) 1860 continue; 1850 1861 } 1851 1862 } … … 1853 1864 { 1854 1865 paused++; 1855 if ( isPause)1856 [tempTorrents addObject: torrent];1866 if (filterStatus && !filterPause) 1867 continue; 1857 1868 } 1858 } 1859 1860 if (!filtering) 1861 [tempTorrents setArray: fTorrents]; 1869 1870 //checkGroup 1871 if (filterGroup) 1872 if ([torrent groupValue] != groupFilter) 1873 continue; 1874 1875 //check text field 1876 if (filterText) 1877 { 1878 BOOL removeTextField = YES; 1879 if (filterTracker) 1880 { 1881 NSEnumerator * trackerEnumerator = [[torrent allTrackers] objectEnumerator], * subTrackerEnumerator; 1882 NSArray * subTrackers; 1883 NSString * tracker; 1884 while (removeTextField && (subTrackers = [trackerEnumerator nextObject])) 1885 { 1886 subTrackerEnumerator = [subTrackers objectEnumerator]; 1887 while ((tracker = [subTrackerEnumerator nextObject])) 1888 if ([tracker rangeOfString: searchString options: NSCaseInsensitiveSearch].location != NSNotFound) 1889 { 1890 removeTextField = NO; 1891 break; 1892 } 1893 } 1894 1895 if (removeTextField) 1896 continue; 1897 } 1898 else 1899 { 1900 if ([[torrent name] rangeOfString: searchString options: NSCaseInsensitiveSearch].location == NSNotFound) 1901 continue; 1902 } 1903 } 1904 1905 [indexes addIndex: i]; 1906 } 1907 1908 [fDisplayedTorrents setArray: [fTorrents objectsAtIndexes: indexes]]; 1862 1909 1863 1910 //set button tooltips … … 1867 1914 [fPauseFilterButton setCount: paused]; 1868 1915 1869 //remove for groups1870 int groupFilter = [fDefaults integerForKey: @"FilterGroup"];1871 if (groupFilter != GROUP_FILTER_ALL_TAG)1872 {1873 filtering = YES;1874 1875 int i;1876 for (i = [tempTorrents count]-1; i >= 0; i--)1877 if ([[tempTorrents objectAtIndex: i] groupValue] != groupFilter)1878 [tempTorrents removeObjectAtIndex: i];1879 }1880 1881 //remove from text field1882 NSString * searchString = [fSearchFilterField stringValue];1883 if ([tempTorrents count] > 0 && [searchString length] > 0)1884 {1885 filtering = YES;1886 1887 Torrent * torrent;1888 BOOL filterTracker = [[fDefaults stringForKey: @"FilterSearchType"] isEqualToString: FILTER_TYPE_TRACKER], remove;1889 1890 int i;1891 for (i = [tempTorrents count]-1; i >= 0; i--)1892 {1893 torrent = [tempTorrents objectAtIndex: i];1894 remove = YES;1895 1896 if (filterTracker)1897 {1898 NSEnumerator * trackerEnumerator = [[torrent allTrackers] objectEnumerator], * subTrackerEnumerator;1899 NSArray * subTrackers;1900 NSString * tracker;1901 while (remove && (subTrackers = [trackerEnumerator nextObject]))1902 {1903 subTrackerEnumerator = [subTrackers objectEnumerator];1904 while ((tracker = [subTrackerEnumerator nextObject]))1905 {1906 if ([tracker rangeOfString: searchString options: NSCaseInsensitiveSearch].location != NSNotFound)1907 {1908 remove = NO;1909 break;1910 }1911 }1912 }1913 }1914 else1915 remove = [[torrent name] rangeOfString: searchString options: NSCaseInsensitiveSearch].location == NSNotFound;1916 1917 if (remove)1918 [tempTorrents removeObjectAtIndex: i];1919 }1920 }1921 1922 [fDisplayedTorrents setArray: tempTorrents];1923 1924 1916 [self sortTorrentsIgnoreSelected]; 1925 1917 … … 1929 1921 Torrent * torrent; 1930 1922 NSEnumerator * enumerator = [selectedTorrents objectEnumerator]; 1931 NSMutableIndexSet * indexSet = [[NSMutableIndexSet alloc] init];1923 NSMutableIndexSet * selectedIndexes = [NSMutableIndexSet indexSet]; 1932 1924 unsigned index; 1933 1925 while ((torrent = [enumerator nextObject])) 1934 1926 if ((index = [fDisplayedTorrents indexOfObject: torrent]) != NSNotFound) 1935 [indexSet addIndex: index]; 1936 1937 [fTableView selectRowIndexes: indexSet byExtendingSelection: NO]; 1938 [indexSet release]; 1927 [selectedIndexes addIndex: index]; 1928 1929 [fTableView selectRowIndexes: selectedIndexes byExtendingSelection: NO]; 1939 1930 } 1940 1931 … … 1947 1938 totalTorrentsString = NSLocalizedString(@"1 transfer", "Status bar transfer count"); 1948 1939 1949 if (filter ing)1940 if (filterStatus || filterGroup || filterText) 1950 1941 totalTorrentsString = [NSString stringWithFormat: @"%d of %@", [fDisplayedTorrents count], totalTorrentsString]; 1951 1942
Note: See TracChangeset
for help on using the changeset viewer.