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;
|
||||
|
||||
IBOutlet NSView * fInfoView, * fActivityView, * fPeersView, * fFilesView, * fOptionsView;
|
||||
IBOutlet NSView * fInfoView, * fActivityView, * fTrackerView, * fPeersView, * fFilesView, * fOptionsView;
|
||||
int fCurrentTabTag;
|
||||
IBOutlet NSMatrix * fTabMatrix;
|
||||
|
||||
@@ -48,6 +48,10 @@
|
||||
* fRatioField, * fSwarmSpeedField;
|
||||
IBOutlet NSTextView * fCommentView;
|
||||
IBOutlet NSButton * fRevealDataButton, * fRevealTorrentButton;
|
||||
|
||||
IBOutlet NSTextField * fAnnounceAddressField, * fAnnounceLastField, * fAnnounceResponseField,
|
||||
* fAnnounceNextField, * fAnnounceManualField,
|
||||
* fScrapeAddressField, * fScrapeLastField, * fScrapeResponseField, * fScrapeNextField;
|
||||
|
||||
IBOutlet NSTableView * fPeerTable;
|
||||
IBOutlet NSTextField * fConnectedPeersField, * fDownloadingFromField, * fUploadingToField, * fKnownField,
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
|
||||
#define TAB_INFO_IDENT @"Info"
|
||||
#define TAB_ACTIVITY_IDENT @"Activity"
|
||||
#define TAB_TRACKER_IDENT @"Tracker"
|
||||
#define TAB_PEERS_IDENT @"Peers"
|
||||
#define TAB_FILES_IDENT @"Files"
|
||||
#define TAB_OPTIONS_IDENT @"Options"
|
||||
@@ -48,15 +49,17 @@ typedef enum
|
||||
{
|
||||
TAB_INFO_TAG = 0,
|
||||
TAB_ACTIVITY_TAG = 1,
|
||||
TAB_PEERS_TAG = 2,
|
||||
TAB_FILES_TAG = 3,
|
||||
TAB_OPTIONS_TAG = 4
|
||||
TAB_TRACKER_TAG = 2,
|
||||
TAB_PEERS_TAG = 3,
|
||||
TAB_FILES_TAG = 4,
|
||||
TAB_OPTIONS_TAG = 5
|
||||
} tabTag;
|
||||
|
||||
@interface InfoWindowController (Private)
|
||||
|
||||
- (void) updateInfoGeneral;
|
||||
- (void) updateInfoActivity;
|
||||
- (void) updateInfoTracker;
|
||||
- (void) updateInfoPeers;
|
||||
- (void) updateInfoFiles;
|
||||
|
||||
@@ -92,6 +95,7 @@ typedef enum
|
||||
//set tab images and tooltips
|
||||
[[fTabMatrix cellWithTag: TAB_INFO_TAG] setIcon: [NSImage imageNamed: @"InfoGeneral.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_FILES_TAG] setIcon: [NSImage imageNamed: @"InfoFiles.png"]];
|
||||
[[fTabMatrix cellWithTag: TAB_OPTIONS_TAG] setIcon: [NSImage imageNamed: @"InfoOptions.png"]];
|
||||
@@ -104,6 +108,8 @@ typedef enum
|
||||
tag = TAB_INFO_TAG;
|
||||
else if ([identifier isEqualToString: TAB_ACTIVITY_IDENT])
|
||||
tag = TAB_ACTIVITY_TAG;
|
||||
else if ([identifier isEqualToString: TAB_TRACKER_IDENT])
|
||||
tag = TAB_TRACKER_TAG;
|
||||
else if ([identifier isEqualToString: TAB_PEERS_IDENT])
|
||||
tag = TAB_PEERS_TAG;
|
||||
else if ([identifier isEqualToString: TAB_FILES_IDENT])
|
||||
@@ -279,6 +285,21 @@ typedef enum
|
||||
[fErrorMessageView setString: @""];
|
||||
[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")];
|
||||
[fDownloadingFromField setStringValue: @""];
|
||||
[fUploadingToField setStringValue: @""];
|
||||
@@ -378,6 +399,8 @@ typedef enum
|
||||
[fCreatorField setSelectable: ![creatorString isEqualToString: @""]];
|
||||
[fTorrentLocationField setSelectable: YES];
|
||||
[fDataLocationField setSelectable: YES];
|
||||
[fAnnounceAddressField setSelectable: YES];
|
||||
[fScrapeAddressField setSelectable: YES];
|
||||
|
||||
//set pieces view
|
||||
BOOL piecesAvailableSegment = [[NSUserDefaults standardUserDefaults] boolForKey: @"PiecesViewShowAvailability"];
|
||||
@@ -404,6 +427,9 @@ typedef enum
|
||||
case TAB_ACTIVITY_TAG:
|
||||
[self updateInfoActivity];
|
||||
break;
|
||||
case TAB_TRACKER_TAG:
|
||||
[self updateInfoTracker];
|
||||
break;
|
||||
case TAB_PEERS_TAG:
|
||||
[self updateInfoPeers];
|
||||
break;
|
||||
@@ -573,6 +599,12 @@ typedef enum
|
||||
|
||||
[fPiecesView updateView: YES];
|
||||
break;
|
||||
case TAB_TRACKER_TAG:
|
||||
view = fTrackerView;
|
||||
identifier = TAB_TRACKER_IDENT;
|
||||
title = NSLocalizedString(@"Tracker", "Inspector -> title");
|
||||
canResizeVertical = NO;
|
||||
break;
|
||||
case TAB_PEERS_TAG:
|
||||
view = fPeersView;
|
||||
identifier = TAB_PEERS_IDENT;
|
||||
@@ -970,8 +1002,7 @@ typedef enum
|
||||
|
||||
Torrent * torrent = [fTorrents objectAtIndex: 0];
|
||||
|
||||
NSString * tracker = [[torrent trackerAddress] stringByAppendingString: [torrent trackerAddressAnnounce]];
|
||||
[fTrackerField setStringValue: tracker];
|
||||
[fTrackerField setStringValue: [torrent trackerAddress]];
|
||||
|
||||
NSString * location = [torrent dataLocation];
|
||||
[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
|
||||
{
|
||||
if ([fTorrents count] != 1)
|
||||
@@ -1106,6 +1171,8 @@ typedef enum
|
||||
return fInfoView;
|
||||
case TAB_ACTIVITY_TAG:
|
||||
return fActivityView;
|
||||
case TAB_TRACKER_TAG:
|
||||
return fTrackerView;
|
||||
case TAB_PEERS_TAG:
|
||||
return fPeersView;
|
||||
case TAB_FILES_TAG:
|
||||
|
||||
@@ -141,8 +141,19 @@ typedef enum
|
||||
- (BOOL) folder;
|
||||
- (uint64_t) size;
|
||||
- (uint64_t) sizeLeft;
|
||||
|
||||
- (NSString *) trackerAddress;
|
||||
- (NSString *) trackerAddressAnnounce;
|
||||
- (NSDate *) lastAnnounceTime;
|
||||
- (int) nextAnnounceTime;
|
||||
- (int) manualAnnounceTime;
|
||||
- (NSString *) announceResponse;
|
||||
|
||||
- (NSString *) trackerAddressScrape;
|
||||
- (NSDate *) lastScrapeTime;
|
||||
- (int) nextScrapeTime;
|
||||
- (NSString *) scrapeResponse;
|
||||
|
||||
- (NSArray *) allTrackers;
|
||||
|
||||
- (NSString *) comment;
|
||||
|
||||
@@ -688,6 +688,57 @@ void completenessChangeCallback(tr_torrent * torrent, cp_status_t status, void *
|
||||
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
|
||||
{
|
||||
NSMutableArray * trackers = [NSMutableArray arrayWithCapacity: fInfo->trackerTiers], * subTrackers;
|
||||
|
||||
Reference in New Issue
Block a user