add the ability to set per-torrent number of connections to the inspector
This commit is contained in:
parent
4400406ba0
commit
b39e5e3bfd
File diff suppressed because it is too large
Load Diff
|
@ -61,7 +61,7 @@
|
|||
* fFilePriorityNormal, * fFilePriorityHigh, * fFilePriorityLow;
|
||||
|
||||
IBOutlet NSPopUpButton * fRatioPopUp, * fUploadLimitPopUp, * fDownloadLimitPopUp;
|
||||
IBOutlet NSTextField * fUploadLimitField, * fDownloadLimitField, * fRatioLimitField,
|
||||
IBOutlet NSTextField * fUploadLimitField, * fDownloadLimitField, * fRatioLimitField, * fPeersConnectField,
|
||||
* fUploadLimitLabel, * fDownloadLimitLabel;
|
||||
IBOutlet NSButton * fPexCheck;
|
||||
}
|
||||
|
@ -94,4 +94,6 @@
|
|||
|
||||
- (void) setPex: (id) sender;
|
||||
|
||||
- (void) setPeersConnectLimit: (id) sender;
|
||||
|
||||
@end
|
||||
|
|
|
@ -243,6 +243,9 @@ typedef enum
|
|||
[fPexCheck setEnabled: NO];
|
||||
[fPexCheck setState: NSOffState];
|
||||
[fPexCheck setToolTip: nil];
|
||||
|
||||
[fPeersConnectField setEnabled: NO];
|
||||
[fPexCheck setStringValue: @""];
|
||||
}
|
||||
|
||||
[fFileOutline setTorrent: nil];
|
||||
|
@ -539,6 +542,25 @@ typedef enum
|
|||
[fRatioLimitField setFloatValue: ratioLimit];
|
||||
else
|
||||
[fRatioLimitField setStringValue: @""];
|
||||
|
||||
//get peer info
|
||||
enumerator = [fTorrents objectEnumerator];
|
||||
torrent = [enumerator nextObject]; //first torrent
|
||||
|
||||
int maxPeers = [torrent maxPeerConnect];
|
||||
|
||||
while ((torrent = [enumerator nextObject]) && maxPeers != INVALID)
|
||||
{
|
||||
if (/*maxPeers != INVALID &&*/ maxPeers != [torrent maxPeerConnect])
|
||||
maxPeers = INVALID;
|
||||
}
|
||||
|
||||
//set peer view
|
||||
[fPeersConnectField setEnabled: YES];
|
||||
if (maxPeers != INVALID)
|
||||
[fPeersConnectField setIntValue: maxPeers];
|
||||
else
|
||||
[fPeersConnectField setStringValue: @""];
|
||||
}
|
||||
|
||||
- (BOOL) validateMenuItem: (NSMenuItem *) menuItem
|
||||
|
@ -1219,7 +1241,7 @@ typedef enum
|
|||
if (![[sender stringValue] isEqualToString: [NSString stringWithFormat: @"%.2f", ratioLimit]] || ratioLimit < 0)
|
||||
{
|
||||
NSBeep();
|
||||
float ratioLimit = [[enumerator nextObject] ratioLimit]; //use first torrent
|
||||
ratioLimit = [[enumerator nextObject] ratioLimit]; //use first torrent
|
||||
while ((torrent = [enumerator nextObject]))
|
||||
if (ratioLimit != [torrent ratioLimit])
|
||||
{
|
||||
|
@ -1234,8 +1256,6 @@ typedef enum
|
|||
while ((torrent = [enumerator nextObject]))
|
||||
[torrent setRatioLimit: ratioLimit];
|
||||
}
|
||||
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName: @"UpdateUI" object: nil];
|
||||
}
|
||||
|
||||
- (void) setPex: (id) sender
|
||||
|
@ -1254,6 +1274,35 @@ typedef enum
|
|||
[torrent setPex: state == NSOnState];
|
||||
}
|
||||
|
||||
#warning not saving between launches
|
||||
- (void) setPeersConnectLimit: (id) sender
|
||||
{
|
||||
Torrent * torrent;
|
||||
NSEnumerator * enumerator = [fTorrents objectEnumerator];
|
||||
|
||||
int limit = [sender intValue];
|
||||
if (![[sender stringValue] isEqualToString: [NSString stringWithFormat: @"%i", limit]] || limit <= 0)
|
||||
{
|
||||
NSBeep();
|
||||
limit = [[enumerator nextObject] maxPeerConnect]; //use first torrent
|
||||
while ((torrent = [enumerator nextObject]))
|
||||
if (limit != [torrent maxPeerConnect])
|
||||
{
|
||||
[sender setStringValue: @""];
|
||||
return;
|
||||
}
|
||||
|
||||
[sender setIntValue: limit];
|
||||
}
|
||||
else
|
||||
{
|
||||
while ((torrent = [enumerator nextObject]))
|
||||
[torrent setMaxPeerConnect: limit];
|
||||
}
|
||||
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName: @"UpdateUI" object: nil];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation InfoWindowController (Private)
|
||||
|
|
|
@ -112,6 +112,9 @@ typedef enum
|
|||
- (int) speedLimit: (BOOL) upload;
|
||||
- (void) setSpeedLimit: (int) limit upload: (BOOL) upload;
|
||||
|
||||
- (void) setMaxPeerConnect: (uint16_t) count;
|
||||
- (uint16_t) maxPeerConnect;
|
||||
|
||||
- (void) setWaitToStart: (BOOL) wait;
|
||||
- (BOOL) waitingToStart;
|
||||
|
||||
|
|
|
@ -374,6 +374,17 @@ void completenessChangeCallback(tr_torrent * torrent, cp_status_t status, void *
|
|||
tr_torrentSetSpeedLimit(fHandle, upload ? TR_UP : TR_DOWN, limit);
|
||||
}
|
||||
|
||||
- (void) setMaxPeerConnect: (uint16_t) count
|
||||
{
|
||||
if (count > 0)
|
||||
tr_torrentSetMaxConnectedPeers(fHandle, count);
|
||||
}
|
||||
|
||||
- (uint16_t) maxPeerConnect
|
||||
{
|
||||
return tr_torrentGetMaxConnectedPeers(fHandle);
|
||||
}
|
||||
|
||||
- (void) setWaitToStart: (BOOL) wait
|
||||
{
|
||||
fWaitToStart = wait;
|
||||
|
|
Loading…
Reference in New Issue