redone options tab of inspector...current settings for "stop at ratio" won't carry over

This commit is contained in:
Mitchell Livingston 2006-12-28 00:29:05 +00:00
parent 4465ea7bc8
commit d7f1933087
13 changed files with 236 additions and 131 deletions

View File

@ -18,6 +18,8 @@
<integer>9090</integer>
<key>CheckDownload</key>
<false/>
<key>CheckDownloadTorrent</key>
<false/>
<key>CheckQuit</key>
<true/>
<key>CheckQuitDownloading</key>
@ -28,6 +30,8 @@
<false/>
<key>CheckUpload</key>
<true/>
<key>CheckUploadTorrent</key>
<false/>
<key>DeleteOriginalTorrent</key>
<false/>
<key>DownloadChoice</key>
@ -36,6 +40,8 @@
<string>~/Desktop</string>
<key>DownloadLimit</key>
<integer>100</integer>
<key>DownloadLimitTorrent</key>
<integer>50</integer>
<key>DownloadSound</key>
<string>Glass</string>
<key>Filter</key>
@ -102,6 +108,8 @@
<string>Daily</string>
<key>UploadLimit</key>
<integer>20</integer>
<key>UploadLimitTorrent</key>
<integer>20</integer>
<key>UseAdvancedBar</key>
<false/>
<key>UseIncompleteDownloadFolder</key>

View File

@ -13,8 +13,10 @@
revealFile = id;
revealTorrentFile = id;
setLimitCheck = id;
setRatioCheck = id;
setLimitCustom = id;
setRatioCustom = id;
setRatioLimit = id;
setRatioSetting = id;
setSpeedLimit = id;
};
CLASS = InfoWindowController;
@ -38,13 +40,15 @@
fHashField = NSTextField;
fImageView = NSImageView;
fLeechersField = NSTextField;
fLimitCustomCheck = NSButton;
fNameField = NSTextField;
fPeerTable = NSTableView;
fPiecesField = NSTextField;
fPiecesView = PiecesView;
fRatioCustomCheck = NSButton;
fRatioField = NSTextField;
fRatioLimitField = NSTextField;
fRatioMatrix = NSMatrix;
fRatioStopCheck = NSButton;
fRevealDataButton = NSButton;
fRevealTorrentButton = NSButton;
fSecureField = NSTextField;

View File

@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>IBDocumentLocation</key>
<string>69 61 356 240 0 0 1152 842 </string>
<string>34 67 356 240 0 0 1152 842 </string>
<key>IBEditorPositions</key>
<dict>
<key>549</key>

View File

@ -6,6 +6,7 @@
{
ACTIONS = {
applySpeedSettings = id;
applyTorrentSpeedSetting = id;
folderSheetShow = id;
helpForNetwork = id;
importFolderSheetShow = id;

View File

@ -3,17 +3,17 @@
<plist version="1.0">
<dict>
<key>IBDocumentLocation</key>
<string>19 87 356 240 0 0 1152 842 </string>
<string>19 79 356 240 0 0 1152 842 </string>
<key>IBEditorPositions</key>
<dict>
<key>153</key>
<string>235 384 563 267 0 0 1152 842 </string>
<string>180 392 571 335 0 0 1152 842 </string>
<key>28</key>
<string>294 434 563 290 0 0 1152 842 </string>
<string>99 386 571 290 0 0 1152 842 </string>
<key>41</key>
<string>161 288 563 305 0 0 1152 842 </string>
<string>290 426 571 305 0 0 1152 842 </string>
<key>66</key>
<string>294 507 563 144 0 0 1152 842 </string>
<string>139 501 571 144 0 0 1152 842 </string>
</dict>
<key>IBFramework Version</key>
<string>446.1</string>
@ -24,7 +24,6 @@
<key>IBOpenObjects</key>
<array>
<integer>153</integer>
<integer>41</integer>
</array>
<key>IBSystem Version</key>
<string>8L127</string>

View File

@ -56,8 +56,8 @@
IBOutlet NSTableView * fFileTable;
IBOutlet NSTextField * fFileTableStatusField;
IBOutlet NSButton * fUploadLimitCheck, * fDownloadLimitCheck;
IBOutlet NSMatrix * fRatioMatrix;
IBOutlet NSButton * fRatioCustomCheck, * fRatioStopCheck,
* fLimitCustomCheck, * fUploadLimitCheck, * fDownloadLimitCheck;
IBOutlet NSTextField * fUploadLimitField, * fDownloadLimitField, * fRatioLimitField;
}
@ -71,10 +71,12 @@
- (void) revealDataFile: (id) sender;
- (void) revealFile: (id) sender;
- (void) setLimitCustom: (id) sender;
- (void) setLimitCheck: (id) sender;
- (void) setSpeedLimit: (id) sender;
- (void) setRatioCheck: (id) sender;
- (void) setRatioCustom: (id) sender;
- (void) setRatioSetting: (id) sender;
- (void) setRatioLimit: (id) sender;
@end

View File

@ -25,10 +25,6 @@
#import "InfoWindowController.h"
#import "StringAdditions.h"
#define RATIO_GLOBAL_TAG 0
#define RATIO_NO_CHECK_TAG 1
#define RATIO_CHECK_TAG 2
#define MIN_WINDOW_WIDTH 300
#define MAX_WINDOW_WIDTH 5000
@ -43,7 +39,7 @@
#define TAB_ACTIVITY_HEIGHT 170.0
#define TAB_PEERS_HEIGHT 268.0
#define TAB_FILES_HEIGHT 268.0
#define TAB_OPTIONS_HEIGHT 147.0
#define TAB_OPTIONS_HEIGHT 157.0
#define INVALID -99
@ -384,15 +380,20 @@
NSEnumerator * enumerator = [fTorrents objectEnumerator];
torrent = [enumerator nextObject]; //first torrent
int checkUpload = [torrent checkUpload] ? 1 : 0,
int limitCustom = [torrent customLimitSetting] ? 1 : 0,
checkUpload = [torrent checkUpload] ? 1 : 0,
checkDownload = [torrent checkDownload] ? 1 : 0,
uploadLimit = [torrent uploadLimit],
downloadLimit = [torrent downloadLimit];
while ((checkUpload != INVALID || uploadLimit != INVALID
while ((limitCustom != INVALID
|| checkUpload != INVALID || uploadLimit != INVALID
|| checkDownload != INVALID || downloadLimit != INVALID)
&& (torrent = [enumerator nextObject]))
{
if (limitCustom != INVALID && limitCustom != ([torrent customLimitSetting] ? 1 : 0))
limitCustom = INVALID;
if (checkUpload != INVALID && checkUpload != ([torrent checkUpload] ? 1 : 0))
checkUpload = INVALID;
@ -406,23 +407,25 @@
downloadLimit = INVALID;
}
[fUploadLimitCheck setEnabled: YES];
[fDownloadLimitCheck setEnabled: YES];
[fUploadLimitField setEnabled: checkUpload != 0];
[fDownloadLimitField setEnabled: checkDownload != 0];
[fLimitCustomCheck setEnabled: YES];
[fLimitCustomCheck setState: limitCustom == INVALID ? NSMixedState
: (limitCustom == 1 ? NSOnState : NSOffState)];
[fUploadLimitCheck setEnabled: limitCustom == 1];
[fUploadLimitCheck setState: checkUpload == INVALID ? NSMixedState
: (checkUpload == 1 ? NSOnState : NSOffState)];
[fDownloadLimitCheck setEnabled: limitCustom == 1];
[fDownloadLimitCheck setState: checkDownload == INVALID ? NSMixedState
: (checkDownload == 1 ? NSOnState : NSOffState)];
[fUploadLimitField setEnabled: limitCustom == 1 && checkUpload == 1];
if (uploadLimit != INVALID)
[fUploadLimitField setIntValue: uploadLimit];
else
[fUploadLimitField setStringValue: @""];
[fDownloadLimitCheck setState: checkDownload == INVALID ? NSMixedState
: (checkDownload == 1 ? NSOnState : NSOffState)];
[fDownloadLimitField setEnabled: limitCustom == 1 && checkDownload == 1];
if (downloadLimit != INVALID)
[fDownloadLimitField setIntValue: downloadLimit];
else
@ -432,38 +435,32 @@
enumerator = [fTorrents objectEnumerator];
torrent = [enumerator nextObject]; //first torrent
int ratioSetting = [torrent stopRatioSetting];
int ratioCustom = [torrent customRatioSetting] ? 1 : 0,
ratioStop = [torrent shouldStopAtRatio];
float ratioLimit = [torrent ratioLimit];
while ((ratioSetting != INVALID || ratioLimit != INVALID)
while ((ratioCustom != INVALID || ratioStop != INVALID || ratioLimit != INVALID)
&& (torrent = [enumerator nextObject]))
{
if (ratioSetting != INVALID && ratioSetting != [torrent stopRatioSetting])
ratioSetting = INVALID;
if (ratioCustom != INVALID && ratioCustom != ([torrent customRatioSetting] ? 1 : 0))
ratioCustom = INVALID;
if (ratioStop != INVALID && ratioStop != ([torrent shouldStopAtRatio] ? 1 : 0))
ratioStop = INVALID;
if (ratioLimit != INVALID && ratioLimit != [torrent ratioLimit])
ratioLimit = INVALID;
}
[fRatioMatrix setEnabled: YES];
[fRatioCustomCheck setEnabled: YES];
[fRatioCustomCheck setState: ratioCustom == INVALID ? NSMixedState
: (ratioCustom == 1 ? NSOnState : NSOffState)];
if (ratioSetting == RATIO_CHECK)
{
[fRatioMatrix selectCellWithTag: RATIO_CHECK_TAG];
[fRatioLimitField setEnabled: YES];
}
else
{
if (ratioSetting == RATIO_NO_CHECK)
[fRatioMatrix selectCellWithTag: RATIO_NO_CHECK_TAG];
else if (ratioSetting == RATIO_GLOBAL)
[fRatioMatrix selectCellWithTag: RATIO_GLOBAL_TAG];
else
[fRatioMatrix deselectAllCells];
[fRatioLimitField setEnabled: NO];
}
[fRatioStopCheck setEnabled: ratioCustom == 1];
[fRatioStopCheck setState: ratioStop == INVALID ? NSMixedState
: (ratioStop == 1 ? NSOnState : NSOffState)];
[fRatioLimitField setEnabled: ratioCustom == 1 && ratioStop == 1];
if (ratioLimit != INVALID)
[fRatioLimitField setFloatValue: ratioLimit];
else
@ -471,21 +468,25 @@
}
else
{
[fRatioMatrix deselectAllCells];
[fRatioMatrix setEnabled: NO];
[fLimitCustomCheck setEnabled: NO];
[fLimitCustomCheck setState: NSOffState];
[fRatioLimitField setEnabled: NO];
[fRatioLimitField setStringValue: @""];
[fUploadLimitCheck setState: NSOffState];
[fUploadLimitCheck setEnabled: NO];
[fUploadLimitCheck setState: NSOffState];
[fUploadLimitField setEnabled: NO];
[fUploadLimitField setStringValue: @""];
[fDownloadLimitCheck setState: NSOffState];
[fDownloadLimitCheck setEnabled: NO];
[fDownloadLimitCheck setState: NSOffState];
[fDownloadLimitField setEnabled: NO];
[fDownloadLimitField setStringValue: @""];
[fRatioCustomCheck setEnabled: NO];
[fRatioCustomCheck setState: NSOffState];
[fRatioStopCheck setEnabled: NO];
[fRatioStopCheck setState: NSOffState];
[fRatioLimitField setEnabled: NO];
[fRatioLimitField setStringValue: @""];
}
[self updateInfoStats];
@ -691,6 +692,24 @@
inFileViewerRootedAtPath: nil];
}
- (void) setLimitCustom: (id) sender
{
BOOL custom = [sender state] != NSOffState;
if (custom)
[sender setState: NSOnState];
Torrent * torrent;
NSEnumerator * enumerator = [fTorrents objectEnumerator];
while ((torrent = [enumerator nextObject]))
[torrent setCustomLimitSetting: custom];
[fUploadLimitCheck setEnabled: custom];
[fUploadLimitField setEnabled: custom && [fUploadLimitCheck state] == NSOnState];
[fDownloadLimitCheck setEnabled: custom];
[fDownloadLimitField setEnabled: custom && [fDownloadLimitCheck state] == NSOnState];
}
- (void) setLimitCheck: (id) sender
{
BOOL upload = sender == fUploadLimitCheck,
@ -706,9 +725,6 @@
NSTextField * field = upload ? fUploadLimitField : fDownloadLimitField;
if (![[field stringValue] isEqualToString: @""])
[self setSpeedLimit: field];
[field setEnabled: limit];
}
@ -743,23 +759,33 @@
}
}
- (void) setRatioCheck: (id) sender
- (void) setRatioCustom: (id) sender
{
int ratioSetting, tag = [[fRatioMatrix selectedCell] tag];
if (tag == RATIO_CHECK_TAG)
ratioSetting = RATIO_CHECK;
else if (tag == RATIO_NO_CHECK_TAG)
ratioSetting = RATIO_NO_CHECK;
else
ratioSetting = RATIO_GLOBAL;
BOOL custom = [sender state] != NSOffState;
if (custom)
[sender setState: NSOnState];
Torrent * torrent;
NSEnumerator * enumerator = [fTorrents objectEnumerator];
while ((torrent = [enumerator nextObject]))
[torrent setStopRatioSetting: ratioSetting];
[torrent setCustomRatioSetting: custom];
[self setRatioLimit: fRatioLimitField];
[fRatioLimitField setEnabled: tag == RATIO_CHECK_TAG];
[fRatioStopCheck setEnabled: custom];
[fRatioLimitField setEnabled: custom && [fRatioStopCheck state] == NSOnState];
}
- (void) setRatioSetting: (id) sender
{
BOOL enabled = [sender state] != NSOffState;
if (enabled)
[sender setState: NSOnState];
Torrent * torrent;
NSEnumerator * enumerator = [fTorrents objectEnumerator];
while ((torrent = [enumerator nextObject]))
[torrent setShouldStopAtRatio: enabled];
[fRatioLimitField setEnabled: enabled && [fRatioCustomCheck state] == NSOnState];
}
- (void) setRatioLimit: (id) sender

View File

@ -79,6 +79,7 @@
- (void) setAutoSpeedLimit: (id) sender;
- (void) applySpeedSettings: (id) sender;
- (void) applyTorrentSpeedSetting: (id) sender;
- (void) setAutoImport: (id) sender;
- (void) importFolderSheetShow: (id) sender;

View File

@ -313,6 +313,11 @@
}
}
- (void) applyTorrentSpeedSetting: (id) sender
{
[[NSNotificationCenter defaultCenter] postNotificationName: @"UpdateSpeedSetting" object: self];
}
- (void) setAutoSpeedLimit: (id) sender
{
[[NSNotificationCenter defaultCenter] postNotificationName: @"AutoSpeedLimitChange" object: self];

View File

@ -25,10 +25,6 @@
#import <Cocoa/Cocoa.h>
#import <transmission.h>
#define RATIO_CHECK 1
#define RATIO_GLOBAL -1
#define RATIO_NO_CHECK 0
@interface Torrent : NSObject
{
tr_handle_t * fLib;
@ -51,9 +47,11 @@
NSMutableString * fNameString, * fProgressString, * fStatusString, * fShortStatusString, * fRemainingTimeString;
int fUploadLimit, fDownloadLimit, fStopRatioSetting;
int fUploadLimit, fDownloadLimit;
float fRatioLimit;
BOOL fCheckUpload, fCheckDownload, fFinishedSeeding, fWaitToStart, fError;
BOOL fLimitCustom, fCheckUpload, fCheckDownload,
fRatioCustom, fShouldStopAtRatio,
fFinishedSeeding, fWaitToStart, fError;
int fOrderValue;
@ -85,19 +83,25 @@
- (NSDate *) announceDate;
- (float) ratio;
- (int) stopRatioSetting;
- (void) setStopRatioSetting: (int) setting;
- (BOOL) customRatioSetting;
- (void) setCustomRatioSetting: (BOOL) setting;
- (BOOL) shouldStopAtRatio;
- (void) setShouldStopAtRatio: (BOOL) setting;
- (float) ratioLimit;
- (void) setRatioLimit: (float) limit;
- (void) setLimitUpload: (BOOL) limit;
- (void) setUploadLimit: (int) limit;
- (void) setLimitDownload: (BOOL) limit;
- (void) setDownloadLimit: (int) limit;
- (BOOL) checkUpload;
- (int) uploadLimit;
- (BOOL) checkDownload;
- (int) downloadLimit;
- (BOOL) checkUpload;
- (void) setLimitUpload: (BOOL) limit;
- (int) uploadLimit;
- (void) setUploadLimit: (int) limit;
- (BOOL) checkDownload;
- (void) setLimitDownload: (BOOL) limit;
- (int) downloadLimit;
- (void) setDownloadLimit: (int) limit;
- (BOOL) customLimitSetting;
- (void) setCustomLimitSetting: (BOOL) setting;
- (void) updateSpeedSetting: (NSNotification *) notification;
- (void) setWaitToStart: (BOOL) wait;
- (BOOL) waitingToStart;

View File

@ -34,8 +34,11 @@
- (id) initWithHash: (NSString *) hashString path: (NSString *) path lib: (tr_handle_t *) lib
publicTorrent: (NSNumber *) publicTorrent
date: (NSDate *) date stopRatioSetting: (NSNumber *) stopRatioSetting
date: (NSDate *) date
stopRatioCustom: (NSNumber *) ratioCustom
shouldStopAtRatio: (NSNumber *) shouldStopAtRatio
ratioLimit: (NSNumber *) ratioLimit
limitSpeedCustom: (NSNumber *) limitCustom
checkUpload: (NSNumber *) checkUpload uploadLimit: (NSNumber *) uploadLimit
checkDownload: (NSNumber *) checkDownload downloadLimit: (NSNumber *) downloadLimit
waitToStart: (NSNumber *) waitToStart orderValue: (NSNumber *) orderValue;
@ -64,7 +67,9 @@ static uint32_t kRed = BE(0xFF6450FF), //255, 100, 80
{
self = [self initWithHash: nil path: path lib: lib
publicTorrent: delete ? [NSNumber numberWithBool: NO] : nil
date: nil stopRatioSetting: nil ratioLimit: nil
date: nil
stopRatioCustom: nil shouldStopAtRatio: nil ratioLimit: nil
limitSpeedCustom: nil
checkUpload: nil uploadLimit: nil
checkDownload: nil downloadLimit: nil
waitToStart: nil orderValue: nil];
@ -86,8 +91,10 @@ static uint32_t kRed = BE(0xFF6450FF), //255, 100, 80
path: [history objectForKey: @"TorrentPath"] lib: lib
publicTorrent: [history objectForKey: @"PublicCopy"]
date: [history objectForKey: @"Date"]
stopRatioSetting: [history objectForKey: @"StopRatioSetting"]
stopRatioCustom: [history objectForKey: @"StopRatioCustom"]
shouldStopAtRatio: [history objectForKey: @"ShouldStopAtRatio"]
ratioLimit: [history objectForKey: @"RatioLimit"]
limitSpeedCustom: [history objectForKey: @"LimitSpeedCustom"]
checkUpload: [history objectForKey: @"CheckUpload"]
uploadLimit: [history objectForKey: @"UploadLimit"]
checkDownload: [history objectForKey: @"CheckDownload"]
@ -139,8 +146,10 @@ static uint32_t kRed = BE(0xFF6450FF), //255, 100, 80
[NSNumber numberWithBool: fUseIncompleteFolder], @"UseIncompleteFolder",
[self isActive] ? @"NO" : @"YES", @"Paused",
[self date], @"Date",
[NSNumber numberWithInt: fStopRatioSetting], @"StopRatioSetting",
[NSNumber numberWithBool: fRatioCustom], @"StopRatioCustom",
[NSNumber numberWithBool: fShouldStopAtRatio], @"ShouldStopAtRatio",
[NSNumber numberWithFloat: fRatioLimit], @"RatioLimit",
[NSNumber numberWithBool: fLimitCustom], @"LimitSpeedCustom",
[NSNumber numberWithBool: fCheckUpload], @"CheckUpload",
[NSNumber numberWithInt: fUploadLimit], @"UploadLimit",
[NSNumber numberWithBool: fCheckDownload], @"CheckDownload",
@ -163,6 +172,8 @@ static uint32_t kRed = BE(0xFF6450FF), //255, 100, 80
{
tr_torrentClose(fLib, fHandle);
[[NSNotificationCenter defaultCenter] removeObserver: self];
if (fDownloadFolder)
[fDownloadFolder release];
if (fIncompleteFolder)
@ -253,12 +264,12 @@ static uint32_t kRed = BE(0xFF6450FF), //255, 100, 80
}
//check to stop for ratio
if ([self isSeeding] && ((fStopRatioSetting == RATIO_CHECK && [self ratio] >= fRatioLimit)
|| (fStopRatioSetting == RATIO_GLOBAL && [fDefaults boolForKey: @"RatioCheck"]
&& [self ratio] >= [fDefaults floatForKey: @"RatioLimit"])))
if ([self isSeeding] && ((fRatioCustom && fShouldStopAtRatio && [self ratio] >= fRatioLimit)
|| (!fRatioCustom && [fDefaults boolForKey: @"RatioCheck"]
&& [self ratio] >= [fDefaults floatForKey: @"RatioLimit"])))
{
[self stopTransfer];
[self setStopRatioSetting: RATIO_NO_CHECK];
fFinishedSeeding = YES;
fStat = tr_torrentStat(fHandle);
@ -498,14 +509,24 @@ static uint32_t kRed = BE(0xFF6450FF), //255, 100, 80
return downloaded > 0 ? (float)[self uploadedTotal] / downloaded : -1;
}
- (int) stopRatioSetting
- (BOOL) customRatioSetting
{
return fStopRatioSetting;
return fRatioCustom;
}
- (void) setStopRatioSetting: (int) setting
- (void) setCustomRatioSetting: (BOOL) setting
{
fStopRatioSetting = setting;
fRatioCustom = setting;
}
- (BOOL) shouldStopAtRatio
{
return fShouldStopAtRatio;
}
- (void) setShouldStopAtRatio: (BOOL) setting
{
fShouldStopAtRatio = setting;
}
- (float) ratioLimit
@ -519,50 +540,77 @@ static uint32_t kRed = BE(0xFF6450FF), //255, 100, 80
fRatioLimit = limit;
}
- (void) setLimitUpload: (BOOL) limit
{
fCheckUpload = limit;
tr_setUploadLimit(fHandle, fCheckUpload ? fUploadLimit : -1);
}
- (void) setUploadLimit: (int) limit
{
fUploadLimit = limit;
tr_setUploadLimit(fHandle, fCheckUpload ? fUploadLimit : -1);
}
- (void) setLimitDownload: (BOOL) limit
{
fCheckDownload = limit;
tr_setDownloadLimit(fHandle, fCheckDownload ? fDownloadLimit : -1);
}
- (void) setDownloadLimit: (int) limit
{
fDownloadLimit = limit;
tr_setDownloadLimit(fHandle, fCheckDownload ? fDownloadLimit : -1);
}
- (BOOL) checkUpload
{
return fCheckUpload;
}
- (void) setLimitUpload: (BOOL) limit
{
fCheckUpload = limit;
[self updateSpeedSetting: nil];
}
- (int) uploadLimit
{
return fUploadLimit;
}
- (void) setUploadLimit: (int) limit
{
fUploadLimit = limit;
[self updateSpeedSetting: nil];
}
- (BOOL) checkDownload
{
return fCheckDownload;
}
- (void) setLimitDownload: (BOOL) limit
{
fCheckDownload = limit;
[self updateSpeedSetting: nil];
}
- (int) downloadLimit
{
return fDownloadLimit;
}
- (void) setDownloadLimit: (int) limit
{
fDownloadLimit = limit;
[self updateSpeedSetting: nil];
}
- (BOOL) customLimitSetting
{
return fLimitCustom;
}
- (void) setCustomLimitSetting: (BOOL) setting
{
fLimitCustom = setting;
[self updateSpeedSetting: nil];
}
- (void) updateSpeedSetting: (NSNotification *) notification
{
if (fLimitCustom)
{
tr_setUploadLimit(fHandle, fCheckUpload ? fUploadLimit : -1);
tr_setDownloadLimit(fHandle, fCheckDownload ? fDownloadLimit : -1);
}
else
{
tr_setUploadLimit(fHandle, [fDefaults boolForKey: @"CheckUploadTorrent"]
? [fDefaults integerForKey: @"UploadLimitTorrent"] : -1);
tr_setDownloadLimit(fHandle, [fDefaults boolForKey: @"CheckDownloadTorrent"]
? [fDefaults integerForKey: @"DownloadLimitTorrent"] : -1);
}
}
- (void) setWaitToStart: (BOOL) wait
{
fWaitToStart = wait;
@ -1093,8 +1141,11 @@ static uint32_t kRed = BE(0xFF6450FF), //255, 100, 80
//if a hash is given, attempt to load that; otherwise, attempt to open file at path
- (id) initWithHash: (NSString *) hashString path: (NSString *) path lib: (tr_handle_t *) lib
publicTorrent: (NSNumber *) publicTorrent
date: (NSDate *) date stopRatioSetting: (NSNumber *) stopRatioSetting
date: (NSDate *) date
stopRatioCustom: (NSNumber *) ratioCustom
shouldStopAtRatio: (NSNumber *) shouldStopAtRatio
ratioLimit: (NSNumber *) ratioLimit
limitSpeedCustom: (NSNumber *) limitCustom
checkUpload: (NSNumber *) checkUpload uploadLimit: (NSNumber *) uploadLimit
checkDownload: (NSNumber *) checkDownload downloadLimit: (NSNumber *) downloadLimit
waitToStart: (NSNumber *) waitToStart orderValue: (NSNumber *) orderValue
@ -1122,21 +1173,25 @@ static uint32_t kRed = BE(0xFF6450FF), //255, 100, 80
return nil;
}
NSNotificationCenter * nc = [NSNotificationCenter defaultCenter];
[nc addObserver: self selector: @selector(updateSpeedSetting:)
name: @"UpdateSpeedSetting" object: nil];
fInfo = tr_torrentInfo( fHandle );
fDate = date ? [date retain] : [[NSDate alloc] init];
fStopRatioSetting = stopRatioSetting ? [stopRatioSetting intValue] : -1;
fRatioCustom = ratioCustom ? [ratioCustom boolValue] : NO;
fShouldStopAtRatio = shouldStopAtRatio ? [shouldStopAtRatio boolValue] : [fDefaults boolForKey: @"RatioCheck"];
fRatioLimit = ratioLimit ? [ratioLimit floatValue] : [fDefaults floatForKey: @"RatioLimit"];
fFinishedSeeding = NO;
fCheckUpload = checkUpload && [checkUpload boolValue];
fUploadLimit = uploadLimit ? [uploadLimit intValue] : 10;
tr_setUploadLimit(fHandle, fCheckUpload ? fUploadLimit : -1);
fCheckDownload = checkDownload && [checkDownload boolValue];
fDownloadLimit = downloadLimit ? [downloadLimit intValue] : 10;
tr_setDownloadLimit(fHandle, fCheckDownload ? fDownloadLimit : -1);
fLimitCustom = limitCustom ? [limitCustom boolValue] : NO;
fCheckUpload = checkUpload ? [checkUpload boolValue] : [fDefaults boolForKey: @"CheckUploadTorrent"];
fUploadLimit = uploadLimit ? [uploadLimit intValue] : [fDefaults integerForKey: @"UploadLimitTorrent"];
fCheckDownload = checkDownload ? [checkDownload boolValue] : [fDefaults boolForKey: @"CheckDownloadTorrent"];
fDownloadLimit = downloadLimit ? [downloadLimit intValue] : [fDefaults integerForKey: @"DownloadLimitTorrent"];
[self updateSpeedSetting: nil];
fWaitToStart = waitToStart ? [waitToStart boolValue] : [fDefaults boolForKey: @"AutoStartDownload"];
fOrderValue = orderValue ? [orderValue intValue] : tr_torrentCount(fLib) - 1;