mirror of
https://github.com/transmission/transmission
synced 2025-03-04 10:38:13 +00:00
reload the inspector when the magnet link is retrieved
This commit is contained in:
parent
54741eb20a
commit
ba9f83aede
2 changed files with 228 additions and 220 deletions
|
@ -76,6 +76,8 @@ typedef enum
|
|||
|
||||
@interface InfoWindowController (Private)
|
||||
|
||||
- (void) resetInfo;
|
||||
|
||||
- (void) updateInfoGeneral;
|
||||
- (void) updateInfoActivity;
|
||||
- (void) updateInfoTracker;
|
||||
|
@ -205,6 +207,7 @@ typedef enum
|
|||
|
||||
//allow for update notifications
|
||||
NSNotificationCenter * nc = [NSNotificationCenter defaultCenter];
|
||||
[nc addObserver: self selector: @selector(resetInfo) name: @"ResetInspector" object: nil];
|
||||
[nc addObserver: self selector: @selector(updateInfoStats) name: @"UpdateStats" object: nil];
|
||||
[nc addObserver: self selector: @selector(updateOptions) name: @"UpdateOptions" object: nil];
|
||||
}
|
||||
|
@ -252,225 +255,7 @@ typedef enum
|
|||
[fTorrents release];
|
||||
fTorrents = [torrents retain];
|
||||
|
||||
NSUInteger numberSelected = [fTorrents count];
|
||||
if (numberSelected != 1)
|
||||
{
|
||||
if (numberSelected > 0)
|
||||
{
|
||||
[fImageView setImage: [NSImage imageNamed: NSImageNameMultipleDocuments]];
|
||||
|
||||
[fNameField setStringValue: [NSString stringWithFormat: NSLocalizedString(@"%d Torrents Selected",
|
||||
"Inspector -> selected torrents"), numberSelected]];
|
||||
|
||||
uint64_t size = 0;
|
||||
NSInteger fileCount = 0;
|
||||
for (Torrent * torrent in torrents)
|
||||
{
|
||||
size += [torrent size];
|
||||
fileCount += [torrent fileCount];
|
||||
}
|
||||
|
||||
[fBasicInfoField setStringValue: [NSString stringWithFormat: @"%@, %@",
|
||||
[NSString stringWithFormat: NSLocalizedString(@"%d files", "Inspector -> selected torrents"), fileCount],
|
||||
[NSString stringWithFormat: NSLocalizedString(@"%@ total", "Inspector -> selected torrents"),
|
||||
[NSString stringForFileSize: size]]]];
|
||||
[fBasicInfoField setToolTip: [NSString stringWithFormat: NSLocalizedString(@"%llu bytes", "Inspector -> selected torrents"),
|
||||
size]];
|
||||
}
|
||||
else
|
||||
{
|
||||
[fImageView setImage: [NSImage imageNamed: @"NSApplicationIcon"]];
|
||||
|
||||
[fNameField setStringValue: NSLocalizedString(@"No Torrents Selected", "Inspector -> selected torrents")];
|
||||
[fBasicInfoField setStringValue: @""];
|
||||
[fBasicInfoField setToolTip: @""];
|
||||
|
||||
[fHaveField setStringValue: @""];
|
||||
[fDownloadedTotalField setStringValue: @""];
|
||||
[fUploadedTotalField setStringValue: @""];
|
||||
[fFailedHashField setStringValue: @""];
|
||||
[fDateActivityField setStringValue: @""];
|
||||
[fRatioField setStringValue: @""];
|
||||
|
||||
//options fields
|
||||
[fUploadLimitCheck setEnabled: NO];
|
||||
[fUploadLimitCheck setState: NSOffState];
|
||||
[fUploadLimitField setEnabled: NO];
|
||||
[fUploadLimitLabel setEnabled: NO];
|
||||
[fUploadLimitField setStringValue: @""];
|
||||
|
||||
[fDownloadLimitCheck setEnabled: NO];
|
||||
[fDownloadLimitCheck setState: NSOffState];
|
||||
[fDownloadLimitField setEnabled: NO];
|
||||
[fDownloadLimitLabel setEnabled: NO];
|
||||
[fDownloadLimitField setStringValue: @""];
|
||||
|
||||
[fGlobalLimitCheck setEnabled: NO];
|
||||
[fGlobalLimitCheck setState: NSOffState];
|
||||
|
||||
[fPriorityPopUp setEnabled: NO];
|
||||
[fPriorityPopUp selectItemAtIndex: -1];
|
||||
|
||||
[fRatioPopUp setEnabled: NO];
|
||||
[fRatioPopUp selectItemAtIndex: -1];
|
||||
[fRatioLimitField setHidden: YES];
|
||||
[fRatioLimitField setStringValue: @""];
|
||||
|
||||
[fPeersConnectField setEnabled: NO];
|
||||
[fPeersConnectField setStringValue: @""];
|
||||
[fPeersConnectLabel setEnabled: NO];
|
||||
}
|
||||
|
||||
[fFileController setTorrent: nil];
|
||||
|
||||
[fNameField setToolTip: nil];
|
||||
|
||||
[fPiecesField setStringValue: @""];
|
||||
[fHashField setStringValue: @""];
|
||||
[fHashField setToolTip: nil];
|
||||
[fSecureField setStringValue: @""];
|
||||
[fCommentView setString: @""];
|
||||
|
||||
[fCreatorField setStringValue: @""];
|
||||
[fDateCreatedField setStringValue: @""];
|
||||
[fCommentView setSelectable: NO];
|
||||
|
||||
[fDataLocationField setStringValue: @""];
|
||||
[fDataLocationField setToolTip: nil];
|
||||
|
||||
[fRevealDataButton setHidden: YES];
|
||||
|
||||
//don't allow empty fields to be selected
|
||||
[fHashField setSelectable: NO];
|
||||
[fCreatorField setSelectable: NO];
|
||||
[fDataLocationField setSelectable: NO];
|
||||
|
||||
[fStateField setStringValue: @""];
|
||||
[fProgressField setStringValue: @""];
|
||||
|
||||
[fErrorMessageView setString: @""];
|
||||
[fErrorMessageView setSelectable: NO];
|
||||
|
||||
[fConnectedPeersField setStringValue: @""];
|
||||
|
||||
[fDateAddedField setStringValue: @""];
|
||||
[fDateCompletedField setStringValue: @""];
|
||||
|
||||
[fPiecesControl setSelected: NO forSegment: PIECES_CONTROL_AVAILABLE];
|
||||
[fPiecesControl setSelected: NO forSegment: PIECES_CONTROL_PROGRESS];
|
||||
[fPiecesControl setEnabled: NO];
|
||||
[fPiecesView setTorrent: nil];
|
||||
|
||||
[fPeers release];
|
||||
fPeers = nil;
|
||||
[fPeerTable reloadData];
|
||||
|
||||
[fWebSeeds release];
|
||||
fWebSeeds = nil;
|
||||
[fWebSeedTable reloadData];
|
||||
[self setWebSeedTableHidden: YES animate: YES];
|
||||
|
||||
[fTrackerTable setTorrent: nil];
|
||||
|
||||
[fTrackers release];
|
||||
fTrackers = nil;
|
||||
|
||||
[fTrackerTable setTrackers: fTrackers];
|
||||
[fTrackerTable reloadData];
|
||||
|
||||
[fTrackerAddRemoveControl setEnabled: NO forSegment: TRACKER_ADD_TAG];
|
||||
[fTrackerAddRemoveControl setEnabled: NO forSegment: TRACKER_REMOVE_TAG];
|
||||
|
||||
[fFileFilterField setEnabled: NO];
|
||||
}
|
||||
else
|
||||
{
|
||||
Torrent * torrent = [fTorrents objectAtIndex: 0];
|
||||
|
||||
[fFileController setTorrent: torrent];
|
||||
|
||||
if ([NSApp isOnSnowLeopardOrBetter])
|
||||
[fImageView setImage: [torrent icon]];
|
||||
else
|
||||
{
|
||||
NSImage * icon = [[torrent icon] copy];
|
||||
[icon setFlipped: NO];
|
||||
[fImageView setImage: icon];
|
||||
[icon release];
|
||||
}
|
||||
|
||||
NSString * name = [torrent name];
|
||||
[fNameField setStringValue: name];
|
||||
[fNameField setToolTip: name];
|
||||
|
||||
NSString * basicString = [NSString stringForFileSize: [torrent size]];
|
||||
if ([torrent isFolder])
|
||||
{
|
||||
NSString * fileString;
|
||||
NSInteger fileCount = [torrent fileCount];
|
||||
if (fileCount == 1)
|
||||
fileString = NSLocalizedString(@"1 file", "Inspector -> selected torrents");
|
||||
else
|
||||
fileString= [NSString stringWithFormat: NSLocalizedString(@"%d files", "Inspector -> selected torrents"), fileCount];
|
||||
basicString = [NSString stringWithFormat: @"%@, %@", fileString, basicString];
|
||||
}
|
||||
[fBasicInfoField setStringValue: basicString];
|
||||
[fBasicInfoField setToolTip: [NSString stringWithFormat: NSLocalizedString(@"%llu bytes", "Inspector -> selected torrents"),
|
||||
[torrent size]]];
|
||||
|
||||
NSString * hashString = [torrent hashString];
|
||||
[fPiecesField setStringValue: [NSString stringWithFormat: @"%d, %@", [torrent pieceCount],
|
||||
[NSString stringForFileSize: [torrent pieceSize]]]];
|
||||
[fHashField setStringValue: hashString];
|
||||
[fHashField setToolTip: hashString];
|
||||
[fSecureField setStringValue: [torrent privateTorrent]
|
||||
? NSLocalizedString(@"Private Torrent, PEX and DHT automatically disabled", "Inspector -> private torrent")
|
||||
: NSLocalizedString(@"Public Torrent", "Inspector -> private torrent")];
|
||||
|
||||
NSString * commentString = [torrent comment];
|
||||
[fCommentView setString: commentString];
|
||||
|
||||
NSString * creatorString = [torrent creator];
|
||||
[fCreatorField setStringValue: creatorString];
|
||||
[fDateCreatedField setObjectValue: [torrent dateCreated]];
|
||||
|
||||
[fDateAddedField setObjectValue: [torrent dateAdded]];
|
||||
|
||||
//allow these fields to be selected
|
||||
[fHashField setSelectable: YES];
|
||||
[fCommentView setSelectable: ![commentString isEqualToString: @""]];
|
||||
[fCreatorField setSelectable: ![creatorString isEqualToString: @""]];
|
||||
|
||||
//set pieces view
|
||||
BOOL piecesAvailableSegment = [[NSUserDefaults standardUserDefaults] boolForKey: @"PiecesViewShowAvailability"];
|
||||
[fPiecesControl setSelected: piecesAvailableSegment forSegment: PIECES_CONTROL_AVAILABLE];
|
||||
[fPiecesControl setSelected: !piecesAvailableSegment forSegment: PIECES_CONTROL_PROGRESS];
|
||||
[fPiecesControl setEnabled: YES];
|
||||
[fPiecesView setTorrent: torrent];
|
||||
|
||||
//get webseeds for table - if no webseeds for this torrent, clear the table
|
||||
BOOL hasWebSeeds = [torrent webSeedCount] > 0;
|
||||
[self setWebSeedTableHidden: !hasWebSeeds animate: YES];
|
||||
if (!hasWebSeeds)
|
||||
{
|
||||
[fWebSeeds release];
|
||||
fWebSeeds = nil;
|
||||
[fWebSeedTable reloadData];
|
||||
}
|
||||
|
||||
[fTrackerTable setTorrent: torrent];
|
||||
[fTrackerTable deselectAll: self];
|
||||
[fTrackerAddRemoveControl setEnabled: YES forSegment: TRACKER_ADD_TAG];
|
||||
[fTrackerAddRemoveControl setEnabled: NO forSegment: TRACKER_REMOVE_TAG];
|
||||
|
||||
[fFileFilterField setEnabled: [torrent isFolder]];
|
||||
}
|
||||
|
||||
[fFileFilterField setStringValue: @""];
|
||||
|
||||
//update stats and settings
|
||||
[self updateInfoStats];
|
||||
[self updateOptions];
|
||||
[self resetInfo];
|
||||
}
|
||||
|
||||
- (void) updateInfoStats
|
||||
|
@ -1353,6 +1138,229 @@ typedef enum
|
|||
|
||||
@implementation InfoWindowController (Private)
|
||||
|
||||
- (void) resetInfo
|
||||
{
|
||||
NSUInteger numberSelected = [fTorrents count];
|
||||
if (numberSelected != 1)
|
||||
{
|
||||
if (numberSelected > 0)
|
||||
{
|
||||
[fImageView setImage: [NSImage imageNamed: NSImageNameMultipleDocuments]];
|
||||
|
||||
[fNameField setStringValue: [NSString stringWithFormat: NSLocalizedString(@"%d Torrents Selected",
|
||||
"Inspector -> selected torrents"), numberSelected]];
|
||||
|
||||
uint64_t size = 0;
|
||||
NSInteger fileCount = 0;
|
||||
for (Torrent * torrent in fTorrents)
|
||||
{
|
||||
size += [torrent size];
|
||||
fileCount += [torrent fileCount];
|
||||
}
|
||||
|
||||
[fBasicInfoField setStringValue: [NSString stringWithFormat: @"%@, %@",
|
||||
[NSString stringWithFormat: NSLocalizedString(@"%d files", "Inspector -> selected torrents"), fileCount],
|
||||
[NSString stringWithFormat: NSLocalizedString(@"%@ total", "Inspector -> selected torrents"),
|
||||
[NSString stringForFileSize: size]]]];
|
||||
[fBasicInfoField setToolTip: [NSString stringWithFormat: NSLocalizedString(@"%llu bytes", "Inspector -> selected torrents"),
|
||||
size]];
|
||||
}
|
||||
else
|
||||
{
|
||||
[fImageView setImage: [NSImage imageNamed: @"NSApplicationIcon"]];
|
||||
|
||||
[fNameField setStringValue: NSLocalizedString(@"No Torrents Selected", "Inspector -> selected torrents")];
|
||||
[fBasicInfoField setStringValue: @""];
|
||||
[fBasicInfoField setToolTip: @""];
|
||||
|
||||
[fHaveField setStringValue: @""];
|
||||
[fDownloadedTotalField setStringValue: @""];
|
||||
[fUploadedTotalField setStringValue: @""];
|
||||
[fFailedHashField setStringValue: @""];
|
||||
[fDateActivityField setStringValue: @""];
|
||||
[fRatioField setStringValue: @""];
|
||||
|
||||
//options fields
|
||||
[fUploadLimitCheck setEnabled: NO];
|
||||
[fUploadLimitCheck setState: NSOffState];
|
||||
[fUploadLimitField setEnabled: NO];
|
||||
[fUploadLimitLabel setEnabled: NO];
|
||||
[fUploadLimitField setStringValue: @""];
|
||||
|
||||
[fDownloadLimitCheck setEnabled: NO];
|
||||
[fDownloadLimitCheck setState: NSOffState];
|
||||
[fDownloadLimitField setEnabled: NO];
|
||||
[fDownloadLimitLabel setEnabled: NO];
|
||||
[fDownloadLimitField setStringValue: @""];
|
||||
|
||||
[fGlobalLimitCheck setEnabled: NO];
|
||||
[fGlobalLimitCheck setState: NSOffState];
|
||||
|
||||
[fPriorityPopUp setEnabled: NO];
|
||||
[fPriorityPopUp selectItemAtIndex: -1];
|
||||
|
||||
[fRatioPopUp setEnabled: NO];
|
||||
[fRatioPopUp selectItemAtIndex: -1];
|
||||
[fRatioLimitField setHidden: YES];
|
||||
[fRatioLimitField setStringValue: @""];
|
||||
|
||||
[fPeersConnectField setEnabled: NO];
|
||||
[fPeersConnectField setStringValue: @""];
|
||||
[fPeersConnectLabel setEnabled: NO];
|
||||
}
|
||||
|
||||
[fFileController setTorrent: nil];
|
||||
|
||||
[fNameField setToolTip: nil];
|
||||
|
||||
[fPiecesField setStringValue: @""];
|
||||
[fHashField setStringValue: @""];
|
||||
[fHashField setToolTip: nil];
|
||||
[fSecureField setStringValue: @""];
|
||||
[fCommentView setString: @""];
|
||||
|
||||
[fCreatorField setStringValue: @""];
|
||||
[fDateCreatedField setStringValue: @""];
|
||||
[fCommentView setSelectable: NO];
|
||||
|
||||
[fDataLocationField setStringValue: @""];
|
||||
[fDataLocationField setToolTip: nil];
|
||||
|
||||
[fRevealDataButton setHidden: YES];
|
||||
|
||||
//don't allow empty fields to be selected
|
||||
[fHashField setSelectable: NO];
|
||||
[fCreatorField setSelectable: NO];
|
||||
[fDataLocationField setSelectable: NO];
|
||||
|
||||
[fStateField setStringValue: @""];
|
||||
[fProgressField setStringValue: @""];
|
||||
|
||||
[fErrorMessageView setString: @""];
|
||||
[fErrorMessageView setSelectable: NO];
|
||||
|
||||
[fConnectedPeersField setStringValue: @""];
|
||||
|
||||
[fDateAddedField setStringValue: @""];
|
||||
[fDateCompletedField setStringValue: @""];
|
||||
|
||||
[fPiecesControl setSelected: NO forSegment: PIECES_CONTROL_AVAILABLE];
|
||||
[fPiecesControl setSelected: NO forSegment: PIECES_CONTROL_PROGRESS];
|
||||
[fPiecesControl setEnabled: NO];
|
||||
[fPiecesView setTorrent: nil];
|
||||
|
||||
[fPeers release];
|
||||
fPeers = nil;
|
||||
[fPeerTable reloadData];
|
||||
|
||||
[fWebSeeds release];
|
||||
fWebSeeds = nil;
|
||||
[fWebSeedTable reloadData];
|
||||
[self setWebSeedTableHidden: YES animate: YES];
|
||||
|
||||
[fTrackerTable setTorrent: nil];
|
||||
|
||||
[fTrackers release];
|
||||
fTrackers = nil;
|
||||
|
||||
[fTrackerTable setTrackers: fTrackers];
|
||||
[fTrackerTable reloadData];
|
||||
|
||||
[fTrackerAddRemoveControl setEnabled: NO forSegment: TRACKER_ADD_TAG];
|
||||
[fTrackerAddRemoveControl setEnabled: NO forSegment: TRACKER_REMOVE_TAG];
|
||||
|
||||
[fFileFilterField setEnabled: NO];
|
||||
}
|
||||
else
|
||||
{
|
||||
Torrent * torrent = [fTorrents objectAtIndex: 0];
|
||||
|
||||
[fFileController setTorrent: torrent];
|
||||
|
||||
if ([NSApp isOnSnowLeopardOrBetter])
|
||||
[fImageView setImage: [torrent icon]];
|
||||
else
|
||||
{
|
||||
NSImage * icon = [[torrent icon] copy];
|
||||
[icon setFlipped: NO];
|
||||
[fImageView setImage: icon];
|
||||
[icon release];
|
||||
}
|
||||
|
||||
NSString * name = [torrent name];
|
||||
[fNameField setStringValue: name];
|
||||
[fNameField setToolTip: name];
|
||||
|
||||
NSString * basicString = [NSString stringForFileSize: [torrent size]];
|
||||
if ([torrent isFolder])
|
||||
{
|
||||
NSString * fileString;
|
||||
NSInteger fileCount = [torrent fileCount];
|
||||
if (fileCount == 1)
|
||||
fileString = NSLocalizedString(@"1 file", "Inspector -> selected torrents");
|
||||
else
|
||||
fileString= [NSString stringWithFormat: NSLocalizedString(@"%d files", "Inspector -> selected torrents"), fileCount];
|
||||
basicString = [NSString stringWithFormat: @"%@, %@", fileString, basicString];
|
||||
}
|
||||
[fBasicInfoField setStringValue: basicString];
|
||||
[fBasicInfoField setToolTip: [NSString stringWithFormat: NSLocalizedString(@"%llu bytes", "Inspector -> selected torrents"),
|
||||
[torrent size]]];
|
||||
|
||||
NSString * hashString = [torrent hashString];
|
||||
[fPiecesField setStringValue: [NSString stringWithFormat: @"%d, %@", [torrent pieceCount],
|
||||
[NSString stringForFileSize: [torrent pieceSize]]]];
|
||||
[fHashField setStringValue: hashString];
|
||||
[fHashField setToolTip: hashString];
|
||||
[fSecureField setStringValue: [torrent privateTorrent]
|
||||
? NSLocalizedString(@"Private Torrent, PEX and DHT automatically disabled", "Inspector -> private torrent")
|
||||
: NSLocalizedString(@"Public Torrent", "Inspector -> private torrent")];
|
||||
|
||||
NSString * commentString = [torrent comment];
|
||||
[fCommentView setString: commentString];
|
||||
|
||||
NSString * creatorString = [torrent creator];
|
||||
[fCreatorField setStringValue: creatorString];
|
||||
[fDateCreatedField setObjectValue: [torrent dateCreated]];
|
||||
|
||||
[fDateAddedField setObjectValue: [torrent dateAdded]];
|
||||
|
||||
//allow these fields to be selected
|
||||
[fHashField setSelectable: YES];
|
||||
[fCommentView setSelectable: ![commentString isEqualToString: @""]];
|
||||
[fCreatorField setSelectable: ![creatorString isEqualToString: @""]];
|
||||
|
||||
//set pieces view
|
||||
BOOL piecesAvailableSegment = [[NSUserDefaults standardUserDefaults] boolForKey: @"PiecesViewShowAvailability"];
|
||||
[fPiecesControl setSelected: piecesAvailableSegment forSegment: PIECES_CONTROL_AVAILABLE];
|
||||
[fPiecesControl setSelected: !piecesAvailableSegment forSegment: PIECES_CONTROL_PROGRESS];
|
||||
[fPiecesControl setEnabled: YES];
|
||||
[fPiecesView setTorrent: torrent];
|
||||
|
||||
//get webseeds for table - if no webseeds for this torrent, clear the table
|
||||
BOOL hasWebSeeds = [torrent webSeedCount] > 0;
|
||||
[self setWebSeedTableHidden: !hasWebSeeds animate: YES];
|
||||
if (!hasWebSeeds)
|
||||
{
|
||||
[fWebSeeds release];
|
||||
fWebSeeds = nil;
|
||||
[fWebSeedTable reloadData];
|
||||
}
|
||||
|
||||
[fTrackerTable setTorrent: torrent];
|
||||
[fTrackerTable deselectAll: self];
|
||||
[fTrackerAddRemoveControl setEnabled: YES forSegment: TRACKER_ADD_TAG];
|
||||
[fTrackerAddRemoveControl setEnabled: NO forSegment: TRACKER_REMOVE_TAG];
|
||||
|
||||
[fFileFilterField setEnabled: [torrent isFolder]];
|
||||
}
|
||||
|
||||
[fFileFilterField setStringValue: @""];
|
||||
|
||||
//update stats and settings
|
||||
[self updateInfoStats];
|
||||
[self updateOptions];
|
||||
}
|
||||
|
||||
- (void) updateInfoGeneral
|
||||
{
|
||||
if ([fTorrents count] != 1)
|
||||
|
|
|
@ -1745,7 +1745,7 @@ int trashDataFile(const char * filename)
|
|||
|
||||
[self createFileList];
|
||||
|
||||
#warning update inspector
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName: @"ResetInspector" object: self];
|
||||
}
|
||||
|
||||
- (NSString *) etaString
|
||||
|
|
Loading…
Add table
Reference in a new issue