]> granicus.if.org Git - transmission/commitdiff
make the web seed table a little more efficient
authorMitchell Livingston <livings124@transmissionbt.com>
Sun, 8 Jun 2008 16:38:15 +0000 (16:38 +0000)
committerMitchell Livingston <livings124@transmissionbt.com>
Sun, 8 Jun 2008 16:38:15 +0000 (16:38 +0000)
macosx/InfoWindowController.m
macosx/Torrent.h
macosx/Torrent.m

index f068b4d1b6f2b71ffd77fa73a927551dc430995e..5f89292b41ddb3528ec257e08b76108ede2b1eaa 100644 (file)
@@ -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
index 9543449b301428a9a07d86d7524a36eabf0943e3..f2821bf3937133dc6e9644c97cd5b68fb0995edc 100644 (file)
@@ -189,6 +189,8 @@ typedef enum
 - (NSString *) errorMessage;
 
 - (NSArray *) peers;
+
+- (NSUInteger) webSeedCount;
 - (NSArray *) webSeeders;
 
 - (NSString *) progressString;
index a8e8253f77226729161be1e484cc7a0a7b88440c..2f954d6e5aaf110e14834d335f76cb37f33b0178 100644 (file)
@@ -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;