diff --git a/macosx/InfoWindowController.m b/macosx/InfoWindowController.m index adf654cc0..330bda08f 100644 --- a/macosx/InfoWindowController.m +++ b/macosx/InfoWindowController.m @@ -675,7 +675,20 @@ typedef enum return [webSeed objectForKey: @"Address"]; } else if (tableView == fTrackerTable) - return [fTrackers objectAtIndex: row]; + { + id item = [fTrackers objectAtIndex: row]; + + if (![item isKindOfClass: [TrackerNode class]]) + { + NSString * tierString = [NSString stringWithFormat: NSLocalizedString(@"Tier %d", "Inspector -> tracker table"), + [[item objectForKey: @"Tier"] integerValue]]; + if ([fTorrents count] > 1) + tierString = [tierString stringByAppendingFormat: @" - %@", [item objectForKey: @"Name"]]; + return tierString; + } + else + return item; + } return nil; } @@ -873,7 +886,7 @@ typedef enum //reset table with either new or old value [fTrackers release]; - fTrackers = [[torrent allTrackerStatsWithTransferName: NO] retain]; + fTrackers = [[torrent allTrackerStats] retain]; [fTrackerTable setTrackers: fTrackers]; [fTrackerTable reloadData]; @@ -1482,12 +1495,16 @@ typedef enum //get updated tracker stats if ([fTrackerTable editedRow] == -1) { - const BOOL multiple = [fTorrents count] != 1; - [fTrackers release]; - fTrackers = [[NSMutableArray alloc] init]; - for (Torrent * torrent in fTorrents) - [fTrackers addObjectsFromArray: [torrent allTrackerStatsWithTransferName: multiple]]; + + if ([fTorrents count] == 1) + fTrackers = [[[fTorrents objectAtIndex: 0] allTrackerStats] retain]; + else + { + fTrackers = [[NSMutableArray alloc] init]; + for (Torrent * torrent in fTorrents) + [fTrackers addObjectsFromArray: [torrent allTrackerStats]]; + } [fTrackerTable setTrackers: fTrackers]; [fTrackerTable reloadData]; @@ -1502,7 +1519,7 @@ typedef enum NSArray * tierAndTrackerBeingAdded = [fTrackers objectsAtIndexes: addedIndexes]; [fTrackers release]; - fTrackers = [[[fTorrents objectAtIndex: 0] allTrackerStatsWithTransferName: NO] retain]; + fTrackers = [[[fTorrents objectAtIndex: 0] allTrackerStats] retain]; [fTrackers addObjectsFromArray: tierAndTrackerBeingAdded]; [fTrackerTable setTrackers: fTrackers]; @@ -1783,7 +1800,7 @@ typedef enum //reset table with either new or old value [fTrackers release]; - fTrackers = [[torrent allTrackerStatsWithTransferName: NO] retain]; + fTrackers = [[torrent allTrackerStats] retain]; [fTrackerTable setTrackers: fTrackers]; [fTrackerTable reloadData]; diff --git a/macosx/Torrent.h b/macosx/Torrent.h index 3907b0b53..703847776 100644 --- a/macosx/Torrent.h +++ b/macosx/Torrent.h @@ -128,7 +128,7 @@ - (uint64_t) size; - (uint64_t) sizeLeft; -- (NSMutableArray *) allTrackerStatsWithTransferName: (BOOL) includeTransferName; +- (NSMutableArray *) allTrackerStats; - (NSArray *) allTrackersFlat; //used by GroupRules - (BOOL) addTrackerToNewTier: (NSString *) tracker; - (void) removeTrackersWithIdentifiers: (NSIndexSet *) removeIdentifiers; diff --git a/macosx/Torrent.m b/macosx/Torrent.m index 01fe92ee5..d4824a4ca 100644 --- a/macosx/Torrent.m +++ b/macosx/Torrent.m @@ -583,7 +583,7 @@ int trashDataFile(const char * filename) return fStat->leftUntilDone; } -- (NSMutableArray *) allTrackerStatsWithTransferName: (BOOL) includeTransferName +- (NSMutableArray *) allTrackerStats { int count; tr_tracker_stat * stats = tr_torrentTrackers(fHandle, &count); @@ -595,12 +595,8 @@ int trashDataFile(const char * filename) { if (stats[i].tier != prevTier) { - NSString * tierString = [NSString stringWithFormat: NSLocalizedString(@"Tier %d", "Inspector -> tracker table"), - stats[i].tier]; - if (includeTransferName) - tierString = [tierString stringByAppendingFormat: @" - %@", [self name]]; - - [trackers addObject: tierString]; + [trackers addObject: [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInteger: stats[i].tier], @"Tier", + [self name], @"Name", nil]]; prevTier = stats[i].tier; } diff --git a/macosx/TrackerNode.m b/macosx/TrackerNode.m index e21724f14..ba5f1e2aa 100644 --- a/macosx/TrackerNode.m +++ b/macosx/TrackerNode.m @@ -104,14 +104,12 @@ NSString * baseString; if (fStat.hasAnnounced && fStat.lastAnnounceTimedOut) - { baseString = [NSLocalizedString(@"Announce timed out", "Tracker last announce") stringByAppendingFormat: @": %@", dateString]; - } else if (fStat.hasAnnounced && !fStat.lastAnnounceSucceeded) { baseString = NSLocalizedString(@"Announce error", "Tracker last announce"); - NSString * errorString = [NSString stringWithUTF8String: fStat.lastAnnounceResult]; + NSString * errorString = [NSString stringWithUTF8String: fStat.lastAnnounceResult]; if ([errorString isEqualToString: @""]) baseString = [baseString stringByAppendingFormat: @": %@", dateString]; else @@ -181,8 +179,8 @@ if (fStat.hasScraped && !fStat.lastScrapeSucceeded) { baseString = NSLocalizedString(@"Scrape error", "Tracker last scrape"); - NSString * errorString = [NSString stringWithUTF8String: fStat.lastScrapeResult]; + NSString * errorString = [NSString stringWithUTF8String: fStat.lastScrapeResult]; if ([errorString isEqualToString: @""]) baseString = [baseString stringByAppendingFormat: @": %@", dateString]; else