From 7ab2dce944cdc0a9147797b8827423aa92e6b2d4 Mon Sep 17 00:00:00 2001 From: Mitchell Livingston Date: Thu, 13 Jul 2006 00:11:41 +0000 Subject: [PATCH] initial support for filtering (the interface is temporary btw) --- macosx/Controller.h | 11 +- macosx/Controller.m | 158 +++++++++++++++--- macosx/Defaults.plist | 2 + macosx/English.lproj/MainMenu.nib/classes.nib | 5 + .../MainMenu.nib/keyedobjects.nib | Bin 38420 -> 39668 bytes 5 files changed, 146 insertions(+), 30 deletions(-) diff --git a/macosx/Controller.h b/macosx/Controller.h index a0435b04d..9b614603e 100644 --- a/macosx/Controller.h +++ b/macosx/Controller.h @@ -38,7 +38,8 @@ { tr_handle_t * fLib; int fCompleted; - NSMutableArray * fTorrents; + + NSMutableArray * fTorrents, * fFilteredTorrents; PrefsController * fPrefsController; NSUserDefaults * fDefaults; @@ -57,9 +58,11 @@ BOOL fStatusBarVisible; IBOutlet NSTextField * fTotalDLField, * fTotalULField, * fTotalTorrentsField; - NSString * fSortType; + NSString * fSortType, * fFilterType; IBOutlet NSMenuItem * fNameSortItem, * fStateSortItem, * fProgressSortItem, - * fDateSortItem, * fOrderSortItem; + * fDateSortItem, * fOrderSortItem, + * fNoFilterItem, * fPauseFilterItem, + * fSeedFilterItem, * fDownloadFilterItem; IBOutlet NSMenuItem * fNextInfoTabItem, * fPrevInfoTabItem; @@ -124,6 +127,8 @@ - (void) sortTorrents; - (void) setSort: (id) sender; +- (void) applyFilter; +- (void) setFilter: (id) sender; - (void) toggleSpeedLimit: (id) sender; diff --git a/macosx/Controller.m b/macosx/Controller.m index 7a28013b4..938cd4a60 100644 --- a/macosx/Controller.m +++ b/macosx/Controller.m @@ -65,7 +65,10 @@ static void sleepCallBack(void * controller, io_service_t y, if ((self = [super init])) { fLib = tr_init(); + fTorrents = [[NSMutableArray alloc] initWithCapacity: 10]; + fFilteredTorrents = [[NSMutableArray alloc] initWithCapacity: 10]; + fDefaults = [NSUserDefaults standardUserDefaults]; fInfoController = [[InfoWindowController alloc] initWithWindowNibName: @"InfoWindow"]; fPrefsController = [[PrefsController alloc] initWithWindowNibName: @"PrefsWindow"]; @@ -85,6 +88,8 @@ static void sleepCallBack(void * controller, io_service_t y, [[NSNotificationCenter defaultCenter] removeObserver: self]; [fTorrents release]; + [fFilteredTorrents release]; + [fToolbar release]; [fInfoController release]; [fBadger release]; @@ -148,7 +153,7 @@ static void sleepCallBack(void * controller, io_service_t y, [fActionButton setToolTip: @"Shortcuts for changing global settings."]; [fSpeedLimitButton setToolTip: @"Speed Limit overrides the total bandwidth limits with its own limits."]; - [fTableView setTorrents: fTorrents]; + [fTableView setTorrents: fFilteredTorrents]; [[fTableView tableColumnWithIdentifier: @"Torrent"] setDataCell: [[TorrentCell alloc] init]]; [fTableView registerForDraggedTypes: [NSArray arrayWithObjects: NSFilenamesPboardType, @@ -192,6 +197,21 @@ static void sleepCallBack(void * controller, io_service_t y, currentSortItem = fOrderSortItem; [currentSortItem setState: NSOnState]; + //set filter + fFilterType = [[fDefaults stringForKey: @"Filter"] retain]; + + NSMenuItem * currentFilterItem; + if ([fFilterType isEqualToString: @"Pause"]) + currentFilterItem = fPauseFilterItem; + else if ([fFilterType isEqualToString: @"Seed"]) + currentFilterItem = fSeedFilterItem; + else if ([fFilterType isEqualToString: @"Download"]) + currentFilterItem = fDownloadFilterItem; + else + currentFilterItem = fNoFilterItem; + + [currentFilterItem setState: NSOnState]; + //set upload limit action button [fUploadLimitItem setTitle: [NSString stringWithFormat: @"Limit (%d KB/s)", [fDefaults integerForKey: @"UploadLimit"]]]; @@ -269,7 +289,7 @@ static void sleepCallBack(void * controller, io_service_t y, selector: @selector(checkAutoImportDirectory:) userInfo: nil repeats: YES]; [[NSRunLoop currentRunLoop] addTimer: fAutoImportTimer forMode: NSDefaultRunLoopMode]; - [self sortTorrents]; + [self applyFilter]; [fWindow makeKeyAndOrderFront: nil]; @@ -369,6 +389,7 @@ static void sleepCallBack(void * controller, io_service_t y, [torrent setDownloadFolder: [[openPanel filenames] objectAtIndex: 0]]; [torrent update]; [self attemptToStartAuto: torrent]; + [fTorrents addObject: torrent]; [self torrentNumberChanged]; @@ -417,6 +438,7 @@ static void sleepCallBack(void * controller, io_service_t y, [torrent setDownloadFolder: folder]; [torrent update]; [self attemptToStartAuto: torrent]; + [fTorrents addObject: torrent]; } @@ -426,20 +448,20 @@ static void sleepCallBack(void * controller, io_service_t y, [self torrentNumberChanged]; [self updateUI: nil]; - [self sortTorrents]; + [self applyFilter]; [self updateTorrentHistory]; } - (NSArray *) torrentsAtIndexes: (NSIndexSet *) indexSet { - if ([fTorrents respondsToSelector: @selector(objectsAtIndexes:)]) - return [fTorrents objectsAtIndexes: indexSet]; + if ([fFilteredTorrents respondsToSelector: @selector(objectsAtIndexes:)]) + return [fFilteredTorrents objectsAtIndexes: indexSet]; else { NSMutableArray * torrents = [NSMutableArray arrayWithCapacity: [indexSet count]]; unsigned int i; for (i = [indexSet firstIndex]; i != NSNotFound; i = [indexSet indexGreaterThanIndex: i]) - [torrents addObject: [fTorrents objectAtIndex: i]]; + [torrents addObject: [fFilteredTorrents objectAtIndex: i]]; return torrents; } @@ -499,6 +521,7 @@ static void sleepCallBack(void * controller, io_service_t y, [torrents makeObjectsPerformSelector: @selector(startTransfer)]; [self updateUI: nil]; + [self applyFilter]; [fInfoController updateInfoStatsAndSettings]; [self updateTorrentHistory]; } @@ -524,6 +547,7 @@ static void sleepCallBack(void * controller, io_service_t y, [torrents makeObjectsPerformSelector: @selector(stopTransfer)]; [self updateUI: nil]; + [self applyFilter]; [fInfoController updateInfoStatsAndSettings]; [self updateTorrentHistory]; } @@ -559,7 +583,7 @@ static void sleepCallBack(void * controller, io_service_t y, if (selected == 1) { title = [NSString stringWithFormat: @"Comfirm Removal of \"%@\"", - [[fTorrents objectAtIndex: [fTableView selectedRow]] name]]; + [[fFilteredTorrents objectAtIndex: [fTableView selectedRow]] name]]; message = @"This transfer is active." " Once removed, continuing the transfer will require the torrent file." " Do you really want to remove it?"; @@ -628,6 +652,8 @@ static void sleepCallBack(void * controller, io_service_t y, lowestOrderValue = currentOrderValue; [torrent removeForever]; + + [fFilteredTorrents removeObject: torrent]; [fTorrents removeObject: torrent]; } [torrents release]; @@ -650,6 +676,7 @@ static void sleepCallBack(void * controller, io_service_t y, [self torrentNumberChanged]; [fTableView deselectAll: nil]; [self updateUI: nil]; + [self applyFilter]; [self updateTorrentHistory]; } @@ -740,7 +767,7 @@ static void sleepCallBack(void * controller, io_service_t y, unsigned int i; for (i = [indexSet firstIndex]; i != NSNotFound; i = [indexSet indexGreaterThanIndex: i]) - [[fTorrents objectAtIndex: i] revealData]; + [[fFilteredTorrents objectAtIndex: i] revealData]; } - (void) showPreferenceWindow: (id) sender @@ -781,11 +808,13 @@ static void sleepCallBack(void * controller, io_service_t y, if ([torrent justFinished]) { + if (![fFilterType isEqualToString: @"None"]) + [self applyFilter]; [self checkToStartWaiting: torrent]; //notifications [self notifyGrowl: @"Download Complete" message: [[torrent name] stringByAppendingString: - @" finished downloading"] identifier: @"Download Complete"]; + @" finished downloading"] identifier: @"Download Complete"]; if (![fWindow isKeyWindow]) fCompleted++; } @@ -815,12 +844,11 @@ static void sleepCallBack(void * controller, io_service_t y, - (void) updateTorrentHistory { - NSMutableArray * history = [NSMutableArray - arrayWithCapacity: [fTorrents count]]; + NSMutableArray * history = [NSMutableArray arrayWithCapacity: [fTorrents count]]; NSEnumerator * enumerator = [fTorrents objectEnumerator]; Torrent * torrent; - while( ( torrent = [enumerator nextObject] ) ) + while ((torrent = [enumerator nextObject])) [history addObject: [torrent history]]; [fDefaults setObject: history forKey: @"History"]; @@ -832,7 +860,7 @@ static void sleepCallBack(void * controller, io_service_t y, //remember selected rows if needed NSArray * selectedTorrents = nil; int numSelected = [fTableView numberOfSelectedRows]; - if (numSelected > 0 && numSelected < [fTorrents count]) + if (numSelected > 0 && numSelected < [fFilteredTorrents count]) selectedTorrents = [self torrentsAtIndexes: [fTableView selectedRowIndexes]]; NSSortDescriptor * nameDescriptor = [[[NSSortDescriptor alloc] initWithKey: @@ -870,7 +898,7 @@ static void sleepCallBack(void * controller, io_service_t y, else descriptors = [[NSArray alloc] initWithObjects: orderDescriptor, nil]; - [fTorrents sortUsingDescriptors: descriptors]; + [fFilteredTorrents sortUsingDescriptors: descriptors]; [descriptors release]; @@ -883,7 +911,7 @@ static void sleepCallBack(void * controller, io_service_t y, NSEnumerator * enumerator = [selectedTorrents objectEnumerator]; NSMutableIndexSet * indexSet = [[NSMutableIndexSet alloc] init]; while ((torrent = [enumerator nextObject])) - [indexSet addIndex: [fTorrents indexOfObject: torrent]]; + [indexSet addIndex: [fFilteredTorrents indexOfObject: torrent]]; [fTableView selectRowIndexes: indexSet byExtendingSelection: NO]; [indexSet release]; @@ -927,6 +955,77 @@ static void sleepCallBack(void * controller, io_service_t y, [self sortTorrents]; } +- (void) applyFilter +{ + NSMutableArray * tempTorrents = [[NSMutableArray alloc] initWithCapacity: [fTorrents count]]; + + if ([fFilterType isEqualToString: @"Pause"]) + { + NSEnumerator * enumerator = [fTorrents objectEnumerator]; + Torrent * torrent; + while ((torrent = [enumerator nextObject])) + if (![torrent isActive]) + [tempTorrents addObject: torrent]; + } + else if ([fFilterType isEqualToString: @"Seed"]) + { + NSEnumerator * enumerator = [fTorrents objectEnumerator]; + Torrent * torrent; + while ((torrent = [enumerator nextObject])) + if ([torrent isActive] && [torrent progress] >= 1.0) + [tempTorrents addObject: torrent]; + } + else if ([fFilterType isEqualToString: @"Download"]) + { + NSEnumerator * enumerator = [fTorrents objectEnumerator]; + Torrent * torrent; + while ((torrent = [enumerator nextObject])) + if ([torrent isActive] && [torrent progress] < 1.0) + [tempTorrents addObject: torrent]; + } + else + [tempTorrents setArray: fTorrents]; + + [fFilteredTorrents setArray: tempTorrents]; + [tempTorrents release]; + + [self sortTorrents]; +} + +//resets filter and sorts torrents +- (void) setFilter: (id) sender +{ + NSMenuItem * prevFilterItem; + if ([fFilterType isEqualToString: @"Pause"]) + prevFilterItem = fPauseFilterItem; + else if ([fFilterType isEqualToString: @"Seed"]) + prevFilterItem = fSeedFilterItem; + else if ([fFilterType isEqualToString: @"Download"]) + prevFilterItem = fDownloadFilterItem; + else + prevFilterItem = fNoFilterItem; + + if (sender != prevFilterItem) + { + [prevFilterItem setState: NSOffState]; + [sender setState: NSOnState]; + + [fFilterType release]; + if (sender == fNoFilterItem) + fFilterType = [[NSString alloc] initWithString: @"None"]; + else if (sender == fPauseFilterItem) + fFilterType = [[NSString alloc] initWithString: @"Pause"]; + else if (sender == fSeedFilterItem) + fFilterType = [[NSString alloc] initWithString: @"Seed"]; + else + fFilterType = [[NSString alloc] initWithString: @"Download"]; + + [fDefaults setObject: fFilterType forKey: @"Filter"]; + } + + [self applyFilter]; +} + - (void) toggleSpeedLimit: (id) sender { int state = [fSpeedLimitItem state] ? NSOffState : NSOnState; @@ -1044,6 +1143,7 @@ static void sleepCallBack(void * controller, io_service_t y, { [torrentToStart startTransfer]; + [self applyFilter]; [self updateUI: nil]; [fInfoController updateInfoStatsAndSettings]; [self updateTorrentHistory]; @@ -1054,6 +1154,7 @@ static void sleepCallBack(void * controller, io_service_t y, { [self attemptToStartMultipleAuto: [notification object]]; + [self applyFilter]; [self updateUI: nil]; [fInfoController updateInfoStatsAndSettings]; [self updateTorrentHistory]; @@ -1063,6 +1164,7 @@ static void sleepCallBack(void * controller, io_service_t y, { [self attemptToStartMultipleAuto: fTorrents]; + [self applyFilter]; [self updateUI: nil]; [fInfoController updateInfoStatsAndSettings]; [self updateTorrentHistory]; @@ -1070,6 +1172,7 @@ static void sleepCallBack(void * controller, io_service_t y, - (void) torrentStoppedForRatio: (NSNotification *) notification { + [self applyFilter]; [fInfoController updateInfoStatsAndSettings]; [self notifyGrowl: @"Seeding Complete" message: [[[notification object] name] stringByAppendingString: @@ -1196,13 +1299,13 @@ static void sleepCallBack(void * controller, io_service_t y, - (int) numberOfRowsInTableView: (NSTableView *) t { - return [fTorrents count]; + return [fFilteredTorrents count]; } - (void) tableView: (NSTableView *) t willDisplayCell: (id) cell forTableColumn: (NSTableColumn *) tableColumn row: (int) row { - [cell setTorrent: [fTorrents objectAtIndex: row]]; + [cell setTorrent: [fFilteredTorrents objectAtIndex: row]]; } - (BOOL) tableView: (NSTableView *) tableView writeRowsWithIndexes: (NSIndexSet *) indexes @@ -1266,7 +1369,7 @@ static void sleepCallBack(void * controller, io_service_t y, //remember selected rows if needed NSArray * selectedTorrents = nil; int numSelected = [fTableView numberOfSelectedRows]; - if (numSelected > 0 && numSelected < [fTorrents count]) + if (numSelected > 0 && numSelected < [fFilteredTorrents count]) selectedTorrents = [self torrentsAtIndexes: [fTableView selectedRowIndexes]]; NSIndexSet * indexes = [NSKeyedUnarchiver unarchiveObjectWithData: @@ -1274,7 +1377,7 @@ static void sleepCallBack(void * controller, io_service_t y, //move torrent in array NSArray * movingTorrents = [[self torrentsAtIndexes: indexes] retain]; - [fTorrents removeObjectsInArray: movingTorrents]; + [fFilteredTorrents removeObjectsInArray: movingTorrents]; //determine the insertion index now that transfers to move have been removed int i, decrease = 0; @@ -1283,7 +1386,7 @@ static void sleepCallBack(void * controller, io_service_t y, //insert objects at new location for (i = 0; i < [movingTorrents count]; i++) - [fTorrents insertObject: [movingTorrents objectAtIndex: i] atIndex: newRow - decrease + i]; + [fFilteredTorrents insertObject: [movingTorrents objectAtIndex: i] atIndex: newRow - decrease + i]; [movingTorrents release]; @@ -1295,6 +1398,7 @@ static void sleepCallBack(void * controller, io_service_t y, high = newRow - 1; else; + #warning change for (i = low; i <= high; i++) [[fTorrents objectAtIndex: i] setOrderValue: i]; @@ -1307,7 +1411,7 @@ static void sleepCallBack(void * controller, io_service_t y, NSEnumerator * enumerator = [selectedTorrents objectEnumerator]; NSMutableIndexSet * indexSet = [[NSMutableIndexSet alloc] init]; while ((torrent = [enumerator nextObject])) - [indexSet addIndex: [fTorrents indexOfObject: torrent]]; + [indexSet addIndex: [fFilteredTorrents indexOfObject: torrent]]; [fTableView selectRowIndexes: indexSet byExtendingSelection: NO]; [indexSet release]; @@ -1519,7 +1623,7 @@ static void sleepCallBack(void * controller, io_service_t y, unsigned int i; for (i = [indexSet firstIndex]; i != NSNotFound; i = [indexSet indexGreaterThanIndex: i]) - if ([[fTorrents objectAtIndex: i] isActive]) + if ([[fFilteredTorrents objectAtIndex: i] isActive]) return YES; return NO; } @@ -1531,7 +1635,7 @@ static void sleepCallBack(void * controller, io_service_t y, unsigned int i; for (i = [indexSet firstIndex]; i != NSNotFound; i = [indexSet indexGreaterThanIndex: i]) - if ([[fTorrents objectAtIndex: i] isPaused]) + if ([[fFilteredTorrents objectAtIndex: i] isPaused]) return YES; return NO; } @@ -1609,7 +1713,7 @@ static void sleepCallBack(void * controller, io_service_t y, for (i = [indexSet firstIndex]; i != NSNotFound; i = [indexSet indexGreaterThanIndex: i]) { - torrent = [fTorrents objectAtIndex: i]; + torrent = [fFilteredTorrents objectAtIndex: i]; if (!warning && [torrent isActive]) { warning = onlyDownloading ? ![torrent isSeeding] : YES; @@ -1652,7 +1756,7 @@ static void sleepCallBack(void * controller, io_service_t y, for (i = [indexSet firstIndex]; i != NSNotFound; i = [indexSet indexGreaterThanIndex: i]) { - torrent = [fTorrents objectAtIndex: i]; + torrent = [fFilteredTorrents objectAtIndex: i]; if ([torrent isActive]) return YES; } @@ -1671,7 +1775,7 @@ static void sleepCallBack(void * controller, io_service_t y, for (i = [indexSet firstIndex]; i != NSNotFound; i = [indexSet indexGreaterThanIndex: i]) { - torrent = [fTorrents objectAtIndex: i]; + torrent = [fFilteredTorrents objectAtIndex: i]; if ([torrent isPaused]) return YES; } @@ -1748,7 +1852,7 @@ static void sleepCallBack(void * controller, io_service_t y, { NSRect windowRect = [fWindow frame]; float newHeight = windowRect.size.height - [fScrollView frame].size.height - + [fTorrents count] * ([fTableView rowHeight] + [fTableView intercellSpacing].height) + 30.0; + + [fFilteredTorrents count] * ([fTableView rowHeight] + [fTableView intercellSpacing].height) + 30.0; float minHeight = [fWindow minSize].height; if (newHeight < minHeight) diff --git a/macosx/Defaults.plist b/macosx/Defaults.plist index 5d61d8570..7f732f621 100644 --- a/macosx/Defaults.plist +++ b/macosx/Defaults.plist @@ -32,6 +32,8 @@ ~/Desktop DownloadLimit 100 + Filter + None History InfoTab diff --git a/macosx/English.lproj/MainMenu.nib/classes.nib b/macosx/English.lproj/MainMenu.nib/classes.nib index f6dc053ad..b21bf6c7c 100644 --- a/macosx/English.lproj/MainMenu.nib/classes.nib +++ b/macosx/English.lproj/MainMenu.nib/classes.nib @@ -14,6 +14,7 @@ resumeAllTorrents = id; resumeSelectedTorrents = id; revealFile = id; + setFilter = id; setInfoTab = id; setLimitGlobalEnabled = id; setQuickLimitGlobal = id; @@ -36,17 +37,21 @@ fActionButton = NSButton; fAdvancedBarItem = NSMenuItem; fDateSortItem = NSMenuItem; + fDownloadFilterItem = NSMenuItem; fDownloadLimitItem = NSMenuItem; fDownloadMenu = NSMenu; fDownloadNoLimitItem = NSMenuItem; fNameSortItem = NSMenuItem; fNextInfoTabItem = NSMenuItem; + fNoFilterItem = NSMenuItem; fOrderSortItem = NSMenuItem; + fPauseFilterItem = NSMenuItem; fPrevInfoTabItem = NSMenuItem; fProgressSortItem = NSMenuItem; fRatioNotSetItem = NSMenuItem; fRatioSetItem = NSMenuItem; fScrollView = NSScrollView; + fSeedFilterItem = NSMenuItem; fSmallViewItem = NSMenuItem; fSpeedLimitButton = NSButton; fSpeedLimitDockItem = NSMenuItem; diff --git a/macosx/English.lproj/MainMenu.nib/keyedobjects.nib b/macosx/English.lproj/MainMenu.nib/keyedobjects.nib index 26fe73eede490baea4dba7775fc9a8eb42157fac..9122a5a8c78682dcfaae579944f109917d9ca7d0 100644 GIT binary patch literal 39668 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 TR|D@Mv|J(ns7FPd1skJOd literal 38420 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

QA4`n5r$CZJ%OHkvwhNU*~Tv)$s)bdJc& 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 vy?|a!FQwPf>*