From 31a467a790f642a22b486746d6c698dd39512e21 Mon Sep 17 00:00:00 2001 From: Mitchell Livingston Date: Sun, 8 Jun 2008 16:38:15 +0000 Subject: [PATCH] make the web seed table a little more efficient --- macosx/InfoWindowController.m | 29 +++++++++++++++++++---------- macosx/Torrent.h | 2 ++ macosx/Torrent.m | 5 +++++ 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/macosx/InfoWindowController.m b/macosx/InfoWindowController.m index f068b4d1b..5f89292b4 100644 --- a/macosx/InfoWindowController.m +++ b/macosx/InfoWindowController.m @@ -171,9 +171,8 @@ typedef enum [[fPeerTable tableColumnWithIdentifier: @"DL From"] setHeaderToolTip: NSLocalizedString(@"Downloading From Peer", "inspector -> peer table -> header tool tip")]; - #warning add tooltip for webseeds? [[fWebSeedTable tableColumnWithIdentifier: @"DL From"] setHeaderToolTip: NSLocalizedString(@"Downloading From Web Seeder", - "inspector -> peer table -> header tool tip")]; + "inspector -> web seed table -> header tool tip")]; } else { @@ -466,10 +465,15 @@ typedef enum [fPiecesControl setEnabled: YES]; [fPiecesView setTorrent: torrent]; - //get webseers for table - [fWebSeeds release]; - fWebSeeds = [[torrent webSeeders] retain]; - [self setWebSeederTableHidden: [fWebSeeds count] == 0 animate: YES]; + //get webseeders for table - if no webseeds for this torrent, clear the table + BOOL hasWebSeeds = [torrent webSeedCount] > 0; + [self setWebSeederTableHidden: !hasWebSeeds animate: YES]; + if (!hasWebSeeds) + { + [fWebSeeds release]; + fWebSeeds = nil; + [fWebSeedTable reloadData]; + } //get trackers for table [fTrackers release]; @@ -692,10 +696,12 @@ typedef enum case TAB_PEERS_TAG: //if in the middle of animating, just stop and resize immediately if (fWebSeedTableAnimation) - [self setWebSeederTableHidden: !fWebSeeds || [fWebSeeds count] == 0 animate: NO]; + [self setWebSeederTableHidden: !fWebSeeds animate: NO]; [fPeers release]; fPeers = nil; + [fWebSeeds release]; + fWebSeeds = nil; oldResizeSaveKey = @"InspectorContentHeightPeers"; break; @@ -1466,9 +1472,12 @@ typedef enum fPeers = [[[torrent peers] sortedArrayUsingDescriptors: [self peerSortDescriptors]] retain]; [fPeerTable reloadData]; - [fWebSeeds release]; - fWebSeeds = [[[torrent webSeeders] sortedArrayUsingDescriptors: [fWebSeedTable sortDescriptors]] retain]; - [fWebSeedTable reloadData]; + if ([torrent webSeedCount] > 0) + { + [fWebSeeds release]; + fWebSeeds = [[[torrent webSeeders] sortedArrayUsingDescriptors: [fWebSeedTable sortDescriptors]] retain]; + [fWebSeedTable reloadData]; + } } - (void) updateInfoFiles diff --git a/macosx/Torrent.h b/macosx/Torrent.h index 9543449b3..f2821bf39 100644 --- a/macosx/Torrent.h +++ b/macosx/Torrent.h @@ -189,6 +189,8 @@ typedef enum - (NSString *) errorMessage; - (NSArray *) peers; + +- (NSUInteger) webSeedCount; - (NSArray *) webSeeders; - (NSString *) progressString; diff --git a/macosx/Torrent.m b/macosx/Torrent.m index a8e8253f7..2f954d6e5 100644 --- a/macosx/Torrent.m +++ b/macosx/Torrent.m @@ -1016,6 +1016,11 @@ void completenessChangeCallback(tr_torrent * torrent, cp_status_t status, void * return peerDicts; } +- (NSUInteger) webSeedCount +{ + return fInfo->webseedCount; +} + - (NSArray *) webSeeders { int webSeedCount = fInfo->webseedCount, i; -- 2.40.0