diff --git a/macosx/English.lproj/InfoWindow.xib b/macosx/English.lproj/InfoWindow.xib
index ac99185db..16d4898bc 100644
--- a/macosx/English.lproj/InfoWindow.xib
+++ b/macosx/English.lproj/InfoWindow.xib
@@ -8,7 +8,7 @@
352.00
{{1, 1}, {360, 143}}
+
2
@@ -2169,6 +2170,7 @@ AAB0ZXh0AAAAAENvcHlyaWdodCBBcHBsZSBDb21wdXRlciwgSW5jLiwgMjAwNQAAAAA
{{10, 202}, {362, 145}}
+
530
@@ -3939,14 +3941,14 @@ zijOSc5pzorOqs66ztvO+88czzzPXc99z57Pvs/fz+/QANAg0EHQYdCC0KLQw9Dj0PPRFNE00VXRddGW
3.000000e+00
@@ -3976,8 +4014,9 @@ zijOSc5pzorOqs66ztvO+88czzzPXc99z57Pvs/fz+/QANAg0EHQYdCC0KLQw9Dj0PPRFNE00VXRddGW
1.400000e+01
- -759169024
- 4
+ -742359040
+ InspectorTableWebSeeds
+ 1
15
0
NO
@@ -3993,22 +4032,22 @@ zijOSc5pzorOqs66ztvO+88czzzPXc99z57Pvs/fz+/QANAg0EHQYdCC0KLQw9Dj0PPRFNE00VXRddGW
-2147483392
- {{328, 17}, {11, 96}}
+ {{328, 17}, {11, 37}}
256
_doScroller:
- 8.658537e-01
+ 7.708333e-01
-2147483392
- {{1, 113}, {327, 11}}
+ {{1, 54}, {327, 11}}
257
_doScroller:
- 8.387097e-01
+ 8.918206e-01
@@ -8143,6 +8182,7 @@ zijOSc5pzorOqs66ztvO+88czzzPXc99z57Pvs/fz+/QANAg0EHQYdCC0KLQw9Dj0PPRFNE00VXRddGW
YES
+
@@ -8160,6 +8200,20 @@ zijOSc5pzorOqs66ztvO+88czzzPXc99z57Pvs/fz+/QANAg0EHQYdCC0KLQw9Dj0PPRFNE00VXRddGW
+
+ 1786
+
+
+ YES
+
+
+
+
+
+ 1787
+
+
+
@@ -8981,7 +9035,7 @@ zijOSc5pzorOqs66ztvO+88czzzPXc99z57Pvs/fz+/QANAg0EHQYdCC0KLQw9Dj0PPRFNE00VXRddGW
- 1785
+ 1787
diff --git a/macosx/InfoWindowController.m b/macosx/InfoWindowController.m
index 512186035..f068b4d1b 100644
--- a/macosx/InfoWindowController.m
+++ b/macosx/InfoWindowController.m
@@ -154,6 +154,11 @@ typedef enum
[fPeerTable setSortDescriptors: [NSArray arrayWithObject: [[fPeerTable tableColumnWithIdentifier: @"IP"]
sortDescriptorPrototype]]];
+ //initially sort webseed table by address
+ if ([[fWebSeedTable sortDescriptors] count] == 0)
+ [fWebSeedTable setSortDescriptors: [NSArray arrayWithObject: [[fWebSeedTable tableColumnWithIdentifier: @"Address"]
+ sortDescriptorPrototype]]];
+
//set table header tool tips
if ([NSApp isOnLeopardOrBetter])
{
@@ -165,6 +170,10 @@ typedef enum
"inspector -> peer table -> header tool tip")];
[[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")];
}
else
{
@@ -215,6 +224,8 @@ typedef enum
[fWebSeeds release];
[fTrackers release];
+ [fWebSeedTableAnimation release];
+
[super dealloc];
}
@@ -364,9 +375,11 @@ typedef enum
[fPeers release];
fPeers = nil;
+ [fPeerTable reloadData];
[fWebSeeds release];
fWebSeeds = nil;
+ [fWebSeedTable reloadData];
[self setWebSeederTableHidden: YES animate: YES];
[fTrackers release];
@@ -471,12 +484,9 @@ typedef enum
[self updateInfoStats];
[self updateOptions];
+ //reload tables that won't change every update
[fTrackerTable setTrackers: fTrackers];
[fTrackerTable reloadData];
-
- [fWebSeedTable reloadData];
- #warning check if should just be reloaded when not 1 torrent
- [fPeerTable reloadData];
}
- (void) updateInfoStats
@@ -852,7 +862,16 @@ typedef enum
}
else if (tableView == fWebSeedTable)
{
- return [fWebSeeds objectAtIndex: row];
+ NSString * ident = [column identifier];
+ NSDictionary * webSeed = [fWebSeeds objectAtIndex: row];
+
+ if ([ident isEqualToString: @"DL From"])
+ {
+ NSNumber * rate;
+ return (rate = [webSeed objectForKey: @"DL From Rate"]) ? [NSString stringForSpeedAbbrev: [rate floatValue]] : @"";
+ }
+ else
+ return [webSeed objectForKey: @"Address"];
}
else if (tableView == fTrackerTable)
{
@@ -883,6 +902,17 @@ typedef enum
[tableView reloadData];
}
}
+ else if (tableView == fWebSeedTable)
+ {
+ if (fWebSeeds)
+ {
+ NSArray * oldWebSeeds = fWebSeeds;
+ fWebSeeds = [[fWebSeeds sortedArrayUsingDescriptors: [fWebSeedTable sortDescriptors]] retain];
+ [oldWebSeeds release];
+ [tableView reloadData];
+ }
+ }
+ else;
}
- (BOOL) tableView: (NSTableView *) tableView shouldSelectRow: (int) row
@@ -1434,8 +1464,11 @@ typedef enum
[fPeers release];
fPeers = [[[torrent peers] sortedArrayUsingDescriptors: [self peerSortDescriptors]] retain];
-
[fPeerTable reloadData];
+
+ [fWebSeeds release];
+ fWebSeeds = [[[torrent webSeeders] sortedArrayUsingDescriptors: [fWebSeedTable sortDescriptors]] retain];
+ [fWebSeedTable reloadData];
}
- (void) updateInfoFiles
@@ -1512,7 +1545,7 @@ typedef enum
fWebSeedTableAnimation = [[NSViewAnimation alloc] initWithViewAnimations:
[NSArray arrayWithObjects: webSeedDict, peerDict, nil]];
- [fWebSeedTableAnimation setDuration: 0.1];
+ [fWebSeedTableAnimation setDuration: 0.125];
[fWebSeedTableAnimation setAnimationBlockingMode: NSAnimationNonblocking];
[fWebSeedTableAnimation setDelegate: self];
diff --git a/macosx/Torrent.m b/macosx/Torrent.m
index 2c4760443..a8e8253f7 100644
--- a/macosx/Torrent.m
+++ b/macosx/Torrent.m
@@ -1022,7 +1022,16 @@ void completenessChangeCallback(tr_torrent * torrent, cp_status_t status, void *
NSMutableArray * webSeeders = [NSMutableArray arrayWithCapacity: webSeedCount];
for (i = 0; i < webSeedCount; i++)
- [webSeeders addObject: [NSString stringWithUTF8String: fInfo->webseeds[i]]];
+ {
+ NSMutableDictionary * dict = [NSMutableDictionary dictionaryWithCapacity: 2];
+
+ [dict setObject: [NSString stringWithUTF8String: fInfo->webseeds[i]] forKey: @"Address"];
+
+ /*if (webSeeders->isDownloadingFrom)
+ [dict setObject: [NSNumber numberWithFloat: peer->downloadFromRate] forKey: @"DL From Rate"];*/
+
+ [webSeeders addObject: dict];
+ }
return webSeeders;
}