Changeset 10106


Ignore:
Timestamp:
Feb 6, 2010, 3:34:49 AM (12 years ago)
Author:
livings124
Message:

#2867 Display peers and web seeds for all selected torrents in the inspector

Location:
trunk/macosx
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/macosx/InfoWindowController.h

    r9844 r10106  
    5858    IBOutlet NSSegmentedControl * fTrackerAddRemoveControl;
    5959   
    60     NSArray * fPeers, * fWebSeeds;
     60    NSMutableArray * fPeers, * fWebSeeds;
    6161    IBOutlet NSTableView * fPeerTable, * fWebSeedTable;
    6262    IBOutlet NSTextField * fConnectedPeersField;
  • trunk/macosx/InfoWindowController.m

    r10105 r10106  
    779779    if (tableView == fPeerTable)
    780780    {
     781        const BOOL multiple = [fTorrents count] > 1;
     782       
    781783        NSDictionary * peer = [fPeers objectAtIndex: row];
    782         NSMutableArray * components = [NSMutableArray arrayWithCapacity: 5];
    783        
    784         CGFloat progress = [[peer objectForKey: @"Progress"] floatValue];
     784        NSMutableArray * components = [NSMutableArray arrayWithCapacity: multiple ? 6 : 5];
     785       
     786        if (multiple)
     787            [components addObject: [peer objectForKey: @"Name"]];
     788       
     789        const CGFloat progress = [[peer objectForKey: @"Progress"] floatValue];
    785790        NSString * progressString = [NSString localizedStringWithFormat: NSLocalizedString(@"Progress: %.1f%%",
    786791                                        "Inspector -> Peers tab -> table row tooltip"), progress * 100.0];
     
    865870            return [(TrackerNode *)node fullAnnounceAddress];
    866871    }
     872    else if (tableView == fWebSeedTable)
     873    {
     874        if ([fTorrents count] > 1)
     875            return [[fWebSeeds objectAtIndex: row] objectForKey: @"Name"];
     876    }
    867877   
    868878    return nil;
     
    12481258            [fPeersConnectField setStringValue: @""];
    12491259            [fPeersConnectLabel setEnabled: NO];
     1260       
     1261            [fPeers release];
     1262            fPeers = nil;
     1263            [fPeerTable reloadData];   
     1264           
     1265            [fWebSeeds release];
     1266            fWebSeeds = nil;
     1267            [fWebSeedTable reloadData];
     1268            [self setWebSeedTableHidden: YES animate: YES];
    12501269        }
    12511270       
     
    12821301        [fPiecesControl setEnabled: NO];
    12831302        [fPiecesView setTorrent: nil];
    1284        
    1285         [fPeers release];
    1286         fPeers = nil;
    1287         [fPeerTable reloadData];
    1288        
    1289         [fWebSeeds release];
    1290         fWebSeeds = nil;
    1291         [fWebSeedTable reloadData];
    1292         [self setWebSeedTableHidden: YES animate: YES];
    12931303       
    12941304        [fTrackerTable setTorrent: nil];
     
    13751385        [fPiecesView setTorrent: torrent];
    13761386       
    1377         //get webseeds for table - if no webseeds for this torrent, clear the table
    1378         BOOL hasWebSeeds = [torrent webSeedCount] > 0;
    1379         [self setWebSeedTableHidden: !hasWebSeeds animate: YES];
    1380         if (!hasWebSeeds)
    1381         {
    1382             [fWebSeeds release];
    1383             fWebSeeds = nil;
    1384             [fWebSeedTable reloadData];
    1385         }
    1386        
    13871387        [fTrackerTable setTorrent: torrent];
    13881388        [fTrackerTable deselectAll: self];
     
    15341534- (void) updateInfoPeers
    15351535{
    1536     if ([fTorrents count] != 1)
     1536    if ([fTorrents count] == 0)
    15371537        return;
    1538     Torrent * torrent = [fTorrents objectAtIndex: 0];
    1539    
    1540     NSString * knownString = [NSString stringWithFormat: NSLocalizedString(@"%d known", "Inspector -> Peers tab -> peers"),
    1541                                 [torrent totalPeersKnown]];
    1542     if ([torrent isActive])
    1543     {
    1544         const NSInteger total = [torrent totalPeersConnected];
     1538   
     1539    [fPeers release];
     1540    fPeers = [[NSMutableArray alloc] init];
     1541   
     1542    NSUInteger known = 0, connected = 0, tracker = 0, incoming = 0, cache = 0, pex = 0, dht = 0, ltep = 0,
     1543                toUs = 0, fromUs = 0;
     1544    BOOL anyActive = false;
     1545    for (Torrent * torrent in fTorrents)
     1546    {
     1547        [fPeers addObjectsFromArray: [torrent peers]];
     1548       
     1549        known += [torrent totalPeersKnown];
     1550       
     1551        if ([torrent isActive])
     1552        {
     1553            anyActive = YES;
     1554            const NSUInteger connectedThis = [torrent totalPeersConnected];
     1555            if (connectedThis > 0)
     1556            {
     1557                connected += [torrent totalPeersConnected];
     1558                tracker += [torrent totalPeersTracker];
     1559                incoming += [torrent totalPeersIncoming];
     1560                cache += [torrent totalPeersCache];
     1561                pex += [torrent totalPeersPex];
     1562                dht += [torrent totalPeersDHT];
     1563                ltep += [torrent totalPeersLTEP];
     1564               
     1565                toUs += [torrent peersSendingToUs];
     1566                fromUs += [torrent peersGettingFromUs];
     1567            }
     1568        }
     1569    }
     1570   
     1571    NSString * knownString = [NSString stringWithFormat: NSLocalizedString(@"%d known", "Inspector -> Peers tab -> peers"), known];
     1572    if (anyActive)
     1573    {
    15451574        NSString * connectedText = [NSString stringWithFormat: NSLocalizedString(@"%d Connected", "Inspector -> Peers tab -> peers"),
    1546                                     total];
    1547        
    1548         if (total > 0)
    1549         {
    1550             NSMutableArray * fromComponents = [NSMutableArray arrayWithCapacity: 5];
    1551             NSInteger count;
    1552             if ((count = [torrent totalPeersTracker]) > 0)
     1575                                    connected];
     1576       
     1577        if (connected > 0)
     1578        {
     1579            NSMutableArray * fromComponents = [NSMutableArray arrayWithCapacity: 6];
     1580            if (tracker > 0)
    15531581                [fromComponents addObject: [NSString stringWithFormat:
    1554                                         NSLocalizedString(@"%d tracker", "Inspector -> Peers tab -> peers"), count]];
    1555             if ((count = [torrent totalPeersIncoming]) > 0)
     1582                                        NSLocalizedString(@"%d tracker", "Inspector -> Peers tab -> peers"), tracker]];
     1583            if (incoming > 0)
    15561584                [fromComponents addObject: [NSString stringWithFormat:
    1557                                         NSLocalizedString(@"%d incoming", "Inspector -> Peers tab -> peers"), count]];
    1558             if ((count = [torrent totalPeersCache]) > 0)
     1585                                        NSLocalizedString(@"%d incoming", "Inspector -> Peers tab -> peers"), incoming]];
     1586            if (cache > 0)
    15591587                [fromComponents addObject: [NSString stringWithFormat:
    1560                                         NSLocalizedString(@"%d cache", "Inspector -> Peers tab -> peers"), count]];
    1561             if ((count = [torrent totalPeersPex]) > 0)
     1588                                        NSLocalizedString(@"%d cache", "Inspector -> Peers tab -> peers"), cache]];
     1589            if (pex > 0)
    15621590                [fromComponents addObject: [NSString stringWithFormat:
    1563                                         NSLocalizedString(@"%d PEX", "Inspector -> Peers tab -> peers"), count]];
    1564             if ((count = [torrent totalPeersDHT]) > 0)
     1591                                        NSLocalizedString(@"%d PEX", "Inspector -> Peers tab -> peers"), pex]];
     1592            if (dht > 0)
    15651593                [fromComponents addObject: [NSString stringWithFormat:
    1566                                         NSLocalizedString(@"%d DHT", "Inspector -> Peers tab -> peers"), count]];
    1567             if ((count = [torrent totalPeersLTEP]) > 0)
     1594                                        NSLocalizedString(@"%d DHT", "Inspector -> Peers tab -> peers"), dht]];
     1595            if (ltep > 0)
    15681596                [fromComponents addObject: [NSString stringWithFormat:
    1569                                         NSLocalizedString(@"%d LTEP", "Inspector -> Peers tab -> peers"), count]];
     1597                                        NSLocalizedString(@"%d LTEP", "Inspector -> Peers tab -> peers"), ltep]];
    15701598           
    15711599            NSMutableArray * upDownComponents = [NSMutableArray arrayWithCapacity: 3];
    1572             if ((count = [torrent peersSendingToUs]) > 0)
     1600            if (toUs > 0)
    15731601                [upDownComponents addObject: [NSString stringWithFormat:
    1574                                         NSLocalizedString(@"DL from %d", "Inspector -> Peers tab -> peers"), count]];
    1575             if ((count = [torrent peersGettingFromUs]) > 0)
     1602                                        NSLocalizedString(@"DL from %d", "Inspector -> Peers tab -> peers"), toUs]];
     1603            if (fromUs > 0)
    15761604                [upDownComponents addObject: [NSString stringWithFormat:
    1577                                         NSLocalizedString(@"UL to %d", "Inspector -> Peers tab -> peers"), count]];
     1605                                        NSLocalizedString(@"UL to %d", "Inspector -> Peers tab -> peers"), fromUs]];
    15781606            [upDownComponents addObject: knownString];
    15791607           
     
    15881616    else
    15891617    {
    1590         NSString * connectedText = [NSString stringWithFormat: @"%@\n%@",
    1591                                     NSLocalizedString(@"Not Connected", "Inspector -> Peers tab -> peers"), knownString];
     1618        NSString * activeString;
     1619        if ([fTorrents count] == 1)
     1620            activeString = NSLocalizedString(@"Transfer Not Active", "Inspector -> Peers tab -> peers");
     1621        else
     1622            activeString = NSLocalizedString(@"Transfers Not Active", "Inspector -> Peers tab -> peers");
     1623       
     1624        NSString * connectedText = [NSString stringWithFormat: @"%@\n%@", activeString, knownString];
    15921625        [fConnectedPeersField setStringValue: connectedText];
    15931626    }
    15941627   
    1595     [fPeers release];
    1596     fPeers = [[[torrent peers] sortedArrayUsingDescriptors: [self peerSortDescriptors]] retain];
     1628    [fPeers sortUsingDescriptors: [self peerSortDescriptors]];
    15971629    [fPeerTable reloadData];
    15981630   
    1599     if ([torrent webSeedCount] > 0)
    1600     {
    1601         [fWebSeeds release];
    1602         fWebSeeds = [[[torrent webSeeds] sortedArrayUsingDescriptors: [fWebSeedTable sortDescriptors]] retain];
    1603         [fWebSeedTable reloadData];
    1604     }
     1631    [fWebSeeds release];
     1632    fWebSeeds = [[NSMutableArray alloc] init];
     1633   
     1634    for (Torrent * torrent in fTorrents)
     1635        [fWebSeeds addObjectsFromArray: [torrent webSeeds]];
     1636   
     1637    [fWebSeeds sortUsingDescriptors: [fWebSeedTable sortDescriptors]];
     1638    [fWebSeedTable reloadData];
     1639    [self setWebSeedTableHidden: [fWebSeeds count] == 0 animate: YES];
    16051640}
    16061641
  • trunk/macosx/Torrent.m

    r10105 r10106  
    859859    {
    860860        tr_peer_stat * peer = &peers[i];
    861         NSMutableDictionary * dict = [NSMutableDictionary dictionaryWithCapacity: 10];
    862        
     861        NSMutableDictionary * dict = [NSMutableDictionary dictionaryWithCapacity: 11];
     862       
     863        [dict setObject: [self name] forKey: @"Name"];
    863864        [dict setObject: [NSNumber numberWithInt: peer->from] forKey: @"From"];
    864865        [dict setObject: [NSString stringWithUTF8String: peer->addr] forKey: @"IP"];
     
    897898    for (NSInteger i = 0; i < webSeedCount; i++)
    898899    {
    899         NSMutableDictionary * dict = [NSMutableDictionary dictionaryWithCapacity: 2];
    900        
     900        NSMutableDictionary * dict = [NSMutableDictionary dictionaryWithCapacity: 3];
     901       
     902        [dict setObject: [self name] forKey: @"Name"];
    901903        [dict setObject: [NSString stringWithUTF8String: fInfo->webseeds[i]] forKey: @"Address"];
    902904       
Note: See TracChangeset for help on using the changeset viewer.