mirror of
https://github.com/transmission/transmission.git
synced 2026-05-08 09:39:08 +01:00
initial inclusion of the "tracker" tab
This commit is contained in:
+4170
-2965
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
Before Width: | Height: | Size: 212 B After Width: | Height: | Size: 252 B |
Binary file not shown.
|
Before Width: | Height: | Size: 397 B After Width: | Height: | Size: 510 B |
Binary file not shown.
|
Before Width: | Height: | Size: 333 B After Width: | Height: | Size: 364 B |
@@ -32,7 +32,7 @@
|
|||||||
{
|
{
|
||||||
NSArray * fTorrents, * fPeers;
|
NSArray * fTorrents, * fPeers;
|
||||||
|
|
||||||
IBOutlet NSView * fInfoView, * fActivityView, * fPeersView, * fFilesView, * fOptionsView;
|
IBOutlet NSView * fInfoView, * fActivityView, * fTrackerView, * fPeersView, * fFilesView, * fOptionsView;
|
||||||
int fCurrentTabTag;
|
int fCurrentTabTag;
|
||||||
IBOutlet NSMatrix * fTabMatrix;
|
IBOutlet NSMatrix * fTabMatrix;
|
||||||
|
|
||||||
@@ -48,6 +48,10 @@
|
|||||||
* fRatioField, * fSwarmSpeedField;
|
* fRatioField, * fSwarmSpeedField;
|
||||||
IBOutlet NSTextView * fCommentView;
|
IBOutlet NSTextView * fCommentView;
|
||||||
IBOutlet NSButton * fRevealDataButton, * fRevealTorrentButton;
|
IBOutlet NSButton * fRevealDataButton, * fRevealTorrentButton;
|
||||||
|
|
||||||
|
IBOutlet NSTextField * fAnnounceAddressField, * fAnnounceLastField, * fAnnounceResponseField,
|
||||||
|
* fAnnounceNextField, * fAnnounceManualField,
|
||||||
|
* fScrapeAddressField, * fScrapeLastField, * fScrapeResponseField, * fScrapeNextField;
|
||||||
|
|
||||||
IBOutlet NSTableView * fPeerTable;
|
IBOutlet NSTableView * fPeerTable;
|
||||||
IBOutlet NSTextField * fConnectedPeersField, * fDownloadingFromField, * fUploadingToField, * fKnownField,
|
IBOutlet NSTextField * fConnectedPeersField, * fDownloadingFromField, * fUploadingToField, * fKnownField,
|
||||||
|
|||||||
@@ -29,6 +29,7 @@
|
|||||||
|
|
||||||
#define TAB_INFO_IDENT @"Info"
|
#define TAB_INFO_IDENT @"Info"
|
||||||
#define TAB_ACTIVITY_IDENT @"Activity"
|
#define TAB_ACTIVITY_IDENT @"Activity"
|
||||||
|
#define TAB_TRACKER_IDENT @"Tracker"
|
||||||
#define TAB_PEERS_IDENT @"Peers"
|
#define TAB_PEERS_IDENT @"Peers"
|
||||||
#define TAB_FILES_IDENT @"Files"
|
#define TAB_FILES_IDENT @"Files"
|
||||||
#define TAB_OPTIONS_IDENT @"Options"
|
#define TAB_OPTIONS_IDENT @"Options"
|
||||||
@@ -48,15 +49,17 @@ typedef enum
|
|||||||
{
|
{
|
||||||
TAB_INFO_TAG = 0,
|
TAB_INFO_TAG = 0,
|
||||||
TAB_ACTIVITY_TAG = 1,
|
TAB_ACTIVITY_TAG = 1,
|
||||||
TAB_PEERS_TAG = 2,
|
TAB_TRACKER_TAG = 2,
|
||||||
TAB_FILES_TAG = 3,
|
TAB_PEERS_TAG = 3,
|
||||||
TAB_OPTIONS_TAG = 4
|
TAB_FILES_TAG = 4,
|
||||||
|
TAB_OPTIONS_TAG = 5
|
||||||
} tabTag;
|
} tabTag;
|
||||||
|
|
||||||
@interface InfoWindowController (Private)
|
@interface InfoWindowController (Private)
|
||||||
|
|
||||||
- (void) updateInfoGeneral;
|
- (void) updateInfoGeneral;
|
||||||
- (void) updateInfoActivity;
|
- (void) updateInfoActivity;
|
||||||
|
- (void) updateInfoTracker;
|
||||||
- (void) updateInfoPeers;
|
- (void) updateInfoPeers;
|
||||||
- (void) updateInfoFiles;
|
- (void) updateInfoFiles;
|
||||||
|
|
||||||
@@ -92,6 +95,7 @@ typedef enum
|
|||||||
//set tab images and tooltips
|
//set tab images and tooltips
|
||||||
[[fTabMatrix cellWithTag: TAB_INFO_TAG] setIcon: [NSImage imageNamed: @"InfoGeneral.png"]];
|
[[fTabMatrix cellWithTag: TAB_INFO_TAG] setIcon: [NSImage imageNamed: @"InfoGeneral.png"]];
|
||||||
[[fTabMatrix cellWithTag: TAB_ACTIVITY_TAG] setIcon: [NSImage imageNamed: @"InfoActivity.png"]];
|
[[fTabMatrix cellWithTag: TAB_ACTIVITY_TAG] setIcon: [NSImage imageNamed: @"InfoActivity.png"]];
|
||||||
|
//[[fTabMatrix cellWithTag: TAB_TRACKER_TAG] setIcon: [NSImage imageNamed: @"InfoTracker.png"]];
|
||||||
[[fTabMatrix cellWithTag: TAB_PEERS_TAG] setIcon: [NSImage imageNamed: @"InfoPeers.png"]];
|
[[fTabMatrix cellWithTag: TAB_PEERS_TAG] setIcon: [NSImage imageNamed: @"InfoPeers.png"]];
|
||||||
[[fTabMatrix cellWithTag: TAB_FILES_TAG] setIcon: [NSImage imageNamed: @"InfoFiles.png"]];
|
[[fTabMatrix cellWithTag: TAB_FILES_TAG] setIcon: [NSImage imageNamed: @"InfoFiles.png"]];
|
||||||
[[fTabMatrix cellWithTag: TAB_OPTIONS_TAG] setIcon: [NSImage imageNamed: @"InfoOptions.png"]];
|
[[fTabMatrix cellWithTag: TAB_OPTIONS_TAG] setIcon: [NSImage imageNamed: @"InfoOptions.png"]];
|
||||||
@@ -104,6 +108,8 @@ typedef enum
|
|||||||
tag = TAB_INFO_TAG;
|
tag = TAB_INFO_TAG;
|
||||||
else if ([identifier isEqualToString: TAB_ACTIVITY_IDENT])
|
else if ([identifier isEqualToString: TAB_ACTIVITY_IDENT])
|
||||||
tag = TAB_ACTIVITY_TAG;
|
tag = TAB_ACTIVITY_TAG;
|
||||||
|
else if ([identifier isEqualToString: TAB_TRACKER_IDENT])
|
||||||
|
tag = TAB_TRACKER_TAG;
|
||||||
else if ([identifier isEqualToString: TAB_PEERS_IDENT])
|
else if ([identifier isEqualToString: TAB_PEERS_IDENT])
|
||||||
tag = TAB_PEERS_TAG;
|
tag = TAB_PEERS_TAG;
|
||||||
else if ([identifier isEqualToString: TAB_FILES_IDENT])
|
else if ([identifier isEqualToString: TAB_FILES_IDENT])
|
||||||
@@ -279,6 +285,21 @@ typedef enum
|
|||||||
[fErrorMessageView setString: @""];
|
[fErrorMessageView setString: @""];
|
||||||
[fErrorMessageView setSelectable: NO];
|
[fErrorMessageView setSelectable: NO];
|
||||||
|
|
||||||
|
[fAnnounceAddressField setStringValue: @""];
|
||||||
|
[fAnnounceAddressField setToolTip: nil];
|
||||||
|
[fAnnounceAddressField setSelectable: NO];
|
||||||
|
[fAnnounceLastField setStringValue: @""];
|
||||||
|
[fAnnounceResponseField setStringValue: @""];
|
||||||
|
[fAnnounceNextField setStringValue: @""];
|
||||||
|
[fAnnounceManualField setStringValue: @""];
|
||||||
|
|
||||||
|
[fScrapeAddressField setStringValue: @""];
|
||||||
|
[fScrapeAddressField setToolTip: nil];
|
||||||
|
[fScrapeAddressField setSelectable: NO];
|
||||||
|
[fScrapeLastField setStringValue: @""];
|
||||||
|
[fScrapeResponseField setStringValue: @""];
|
||||||
|
[fScrapeNextField setStringValue: @""];
|
||||||
|
|
||||||
[fConnectedPeersField setStringValue: NSLocalizedString(@"info not available", "Inspector -> Peers tab -> peers")];
|
[fConnectedPeersField setStringValue: NSLocalizedString(@"info not available", "Inspector -> Peers tab -> peers")];
|
||||||
[fDownloadingFromField setStringValue: @""];
|
[fDownloadingFromField setStringValue: @""];
|
||||||
[fUploadingToField setStringValue: @""];
|
[fUploadingToField setStringValue: @""];
|
||||||
@@ -378,6 +399,8 @@ typedef enum
|
|||||||
[fCreatorField setSelectable: ![creatorString isEqualToString: @""]];
|
[fCreatorField setSelectable: ![creatorString isEqualToString: @""]];
|
||||||
[fTorrentLocationField setSelectable: YES];
|
[fTorrentLocationField setSelectable: YES];
|
||||||
[fDataLocationField setSelectable: YES];
|
[fDataLocationField setSelectable: YES];
|
||||||
|
[fAnnounceAddressField setSelectable: YES];
|
||||||
|
[fScrapeAddressField setSelectable: YES];
|
||||||
|
|
||||||
//set pieces view
|
//set pieces view
|
||||||
BOOL piecesAvailableSegment = [[NSUserDefaults standardUserDefaults] boolForKey: @"PiecesViewShowAvailability"];
|
BOOL piecesAvailableSegment = [[NSUserDefaults standardUserDefaults] boolForKey: @"PiecesViewShowAvailability"];
|
||||||
@@ -404,6 +427,9 @@ typedef enum
|
|||||||
case TAB_ACTIVITY_TAG:
|
case TAB_ACTIVITY_TAG:
|
||||||
[self updateInfoActivity];
|
[self updateInfoActivity];
|
||||||
break;
|
break;
|
||||||
|
case TAB_TRACKER_TAG:
|
||||||
|
[self updateInfoTracker];
|
||||||
|
break;
|
||||||
case TAB_PEERS_TAG:
|
case TAB_PEERS_TAG:
|
||||||
[self updateInfoPeers];
|
[self updateInfoPeers];
|
||||||
break;
|
break;
|
||||||
@@ -573,6 +599,12 @@ typedef enum
|
|||||||
|
|
||||||
[fPiecesView updateView: YES];
|
[fPiecesView updateView: YES];
|
||||||
break;
|
break;
|
||||||
|
case TAB_TRACKER_TAG:
|
||||||
|
view = fTrackerView;
|
||||||
|
identifier = TAB_TRACKER_IDENT;
|
||||||
|
title = NSLocalizedString(@"Tracker", "Inspector -> title");
|
||||||
|
canResizeVertical = NO;
|
||||||
|
break;
|
||||||
case TAB_PEERS_TAG:
|
case TAB_PEERS_TAG:
|
||||||
view = fPeersView;
|
view = fPeersView;
|
||||||
identifier = TAB_PEERS_IDENT;
|
identifier = TAB_PEERS_IDENT;
|
||||||
@@ -970,8 +1002,7 @@ typedef enum
|
|||||||
|
|
||||||
Torrent * torrent = [fTorrents objectAtIndex: 0];
|
Torrent * torrent = [fTorrents objectAtIndex: 0];
|
||||||
|
|
||||||
NSString * tracker = [[torrent trackerAddress] stringByAppendingString: [torrent trackerAddressAnnounce]];
|
[fTrackerField setStringValue: [torrent trackerAddress]];
|
||||||
[fTrackerField setStringValue: tracker];
|
|
||||||
|
|
||||||
NSString * location = [torrent dataLocation];
|
NSString * location = [torrent dataLocation];
|
||||||
[fDataLocationField setStringValue: [location stringByAbbreviatingWithTildeInPath]];
|
[fDataLocationField setStringValue: [location stringByAbbreviatingWithTildeInPath]];
|
||||||
@@ -1033,6 +1064,40 @@ typedef enum
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void) updateInfoTracker
|
||||||
|
{
|
||||||
|
if ([fTorrents count] != 1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Torrent * torrent = [fTorrents objectAtIndex: 0];
|
||||||
|
|
||||||
|
//announce fields
|
||||||
|
NSString * announceAddress = [[torrent trackerAddress] stringByAppendingString: [torrent trackerAddressAnnounce]];
|
||||||
|
[fAnnounceAddressField setStringValue: announceAddress];
|
||||||
|
[fAnnounceAddressField setToolTip: announceAddress];
|
||||||
|
|
||||||
|
[fAnnounceLastField setObjectValue: [torrent lastAnnounceTime]];
|
||||||
|
#warning make selectable/tooltip
|
||||||
|
[fAnnounceResponseField setStringValue: [torrent announceResponse]];
|
||||||
|
|
||||||
|
#warning format into minutes, etc.
|
||||||
|
int announceNext = [torrent nextAnnounceTime];
|
||||||
|
[fAnnounceNextField setStringValue: announceNext > 0 ? [NSString stringWithFormat: @"%d sec", announceNext] : @""];
|
||||||
|
|
||||||
|
[fAnnounceManualField setStringValue: @""];
|
||||||
|
|
||||||
|
//scrape fields
|
||||||
|
NSString * scrapeAddress = [[torrent trackerAddress] stringByAppendingString: [torrent trackerAddressScrape]];
|
||||||
|
[fScrapeAddressField setStringValue: scrapeAddress];
|
||||||
|
[fScrapeAddressField setToolTip: scrapeAddress];
|
||||||
|
|
||||||
|
[fScrapeLastField setObjectValue: [torrent lastScrapeTime]];
|
||||||
|
[fScrapeResponseField setStringValue: [torrent scrapeResponse]];
|
||||||
|
|
||||||
|
int scrapeNext = [torrent nextScrapeTime];
|
||||||
|
[fScrapeNextField setStringValue: scrapeNext > 0 ? [NSString stringWithFormat: @"%d sec", scrapeNext] : @""];
|
||||||
|
}
|
||||||
|
|
||||||
- (void) updateInfoPeers
|
- (void) updateInfoPeers
|
||||||
{
|
{
|
||||||
if ([fTorrents count] != 1)
|
if ([fTorrents count] != 1)
|
||||||
@@ -1106,6 +1171,8 @@ typedef enum
|
|||||||
return fInfoView;
|
return fInfoView;
|
||||||
case TAB_ACTIVITY_TAG:
|
case TAB_ACTIVITY_TAG:
|
||||||
return fActivityView;
|
return fActivityView;
|
||||||
|
case TAB_TRACKER_TAG:
|
||||||
|
return fTrackerView;
|
||||||
case TAB_PEERS_TAG:
|
case TAB_PEERS_TAG:
|
||||||
return fPeersView;
|
return fPeersView;
|
||||||
case TAB_FILES_TAG:
|
case TAB_FILES_TAG:
|
||||||
|
|||||||
@@ -141,8 +141,19 @@ typedef enum
|
|||||||
- (BOOL) folder;
|
- (BOOL) folder;
|
||||||
- (uint64_t) size;
|
- (uint64_t) size;
|
||||||
- (uint64_t) sizeLeft;
|
- (uint64_t) sizeLeft;
|
||||||
|
|
||||||
- (NSString *) trackerAddress;
|
- (NSString *) trackerAddress;
|
||||||
- (NSString *) trackerAddressAnnounce;
|
- (NSString *) trackerAddressAnnounce;
|
||||||
|
- (NSDate *) lastAnnounceTime;
|
||||||
|
- (int) nextAnnounceTime;
|
||||||
|
- (int) manualAnnounceTime;
|
||||||
|
- (NSString *) announceResponse;
|
||||||
|
|
||||||
|
- (NSString *) trackerAddressScrape;
|
||||||
|
- (NSDate *) lastScrapeTime;
|
||||||
|
- (int) nextScrapeTime;
|
||||||
|
- (NSString *) scrapeResponse;
|
||||||
|
|
||||||
- (NSArray *) allTrackers;
|
- (NSArray *) allTrackers;
|
||||||
|
|
||||||
- (NSString *) comment;
|
- (NSString *) comment;
|
||||||
|
|||||||
@@ -688,6 +688,57 @@ void completenessChangeCallback(tr_torrent * torrent, cp_status_t status, void *
|
|||||||
return [NSString stringWithUTF8String: fStat->tracker->announce];
|
return [NSString stringWithUTF8String: fStat->tracker->announce];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (NSDate *) lastAnnounceTime
|
||||||
|
{
|
||||||
|
int date = fStat->tracker_stat.lastAnnounceTime;
|
||||||
|
return date > 0 ? [NSDate dateWithTimeIntervalSince1970: date] : nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (int) nextAnnounceTime
|
||||||
|
{
|
||||||
|
int date = fStat->tracker_stat.nextAnnounceTime;
|
||||||
|
if (date <= 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
NSTimeInterval difference = [[NSDate dateWithTimeIntervalSince1970: date] timeIntervalSinceNow];
|
||||||
|
return difference > 0 ? (int)difference : -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (int) manualAnnounceTime
|
||||||
|
{
|
||||||
|
return 666;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSString *) announceResponse
|
||||||
|
{
|
||||||
|
return [NSString stringWithUTF8String: fStat->tracker_stat.announceResponse];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSString *) trackerAddressScrape
|
||||||
|
{
|
||||||
|
return [NSString stringWithUTF8String: fStat->tracker->scrape];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSDate *) lastScrapeTime
|
||||||
|
{
|
||||||
|
int date = fStat->tracker_stat.lastScrapeTime;
|
||||||
|
return date > 0 ? [NSDate dateWithTimeIntervalSince1970: date] : nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (int) nextScrapeTime
|
||||||
|
{
|
||||||
|
int date = fStat->tracker_stat.nextScrapeTime;
|
||||||
|
if (date <= 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
NSTimeInterval difference = [[NSDate dateWithTimeIntervalSince1970: date] timeIntervalSinceNow];
|
||||||
|
return difference > 0 ? (int)difference : -1;
|
||||||
|
}
|
||||||
|
- (NSString *) scrapeResponse
|
||||||
|
{
|
||||||
|
return [NSString stringWithUTF8String: fStat->tracker_stat.scrapeResponse];
|
||||||
|
}
|
||||||
|
|
||||||
- (NSArray *) allTrackers
|
- (NSArray *) allTrackers
|
||||||
{
|
{
|
||||||
NSMutableArray * trackers = [NSMutableArray arrayWithCapacity: fInfo->trackerTiers], * subTrackers;
|
NSMutableArray * trackers = [NSMutableArray arrayWithCapacity: fInfo->trackerTiers], * subTrackers;
|
||||||
|
|||||||
Reference in New Issue
Block a user