first go at bringing the libT queue to the Mac client

This commit is contained in:
Mitchell Livingston 2011-08-02 12:43:26 +00:00
parent 307754e807
commit cd5b9b16fd
7 changed files with 134 additions and 161 deletions

View File

@ -199,9 +199,11 @@
- (void) confirmAdd
{
[fTorrent setWaitToStart: [fStartCheck state] == NSOnState];
[fTorrent setGroupValue: fGroupValue];
if ([fStartCheck state] == NSOnState)
[fTorrent startTransfer];
[self close];
[fController askOpenMagnetConfirmed: self add: YES]; //ensure last, since it releases this controller
}

View File

@ -287,13 +287,14 @@
{
[fTimer invalidate];
fTimer = nil;
[fTorrent setWaitToStart: [fStartCheck state] == NSOnState];
[fTorrent setGroupValue: fGroupValue];
if (fTorrentFile && [fDeleteCheck state] == NSOnState)
[Torrent trashFile: fTorrentFile];
if ([fStartCheck state] == NSOnState)
[fTorrent startTransfer];
[fFileController setTorrent: nil]; //avoid a crash when window tries to update
[self close];

View File

@ -185,7 +185,6 @@ typedef enum
- (void) setBottomCountText: (BOOL) filtering;
- (void) updateTorrentsInQueue;
- (NSUInteger) numToStartFromQueue: (BOOL) downloadQueue;
- (void) torrentFinishedDownloading: (NSNotification *) notification;
- (void) torrentRestartedDownloading: (NSNotification *) notification;

View File

@ -286,6 +286,8 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
tr_bencDictAddBool(&settings, TR_PREFS_KEY_DHT_ENABLED, [fDefaults boolForKey: @"DHTGlobal"]);
tr_bencDictAddStr(&settings, TR_PREFS_KEY_DOWNLOAD_DIR, [[[fDefaults stringForKey: @"DownloadFolder"]
stringByExpandingTildeInPath] UTF8String]);
tr_bencDictAddBool(&settings, TR_PREFS_KEY_DOWNLOAD_QUEUE_ENABLED, [fDefaults boolForKey: @"Queue"]);
tr_bencDictAddInt(&settings, TR_PREFS_KEY_DOWNLOAD_QUEUE_SIZE, [fDefaults integerForKey: @"QueueDownloadNumber"]);
tr_bencDictAddInt(&settings, TR_PREFS_KEY_IDLE_LIMIT, [fDefaults integerForKey: @"IdleLimitMinutes"]);
tr_bencDictAddBool(&settings, TR_PREFS_KEY_IDLE_LIMIT_ENABLED, [fDefaults boolForKey: @"IdleLimitCheck"]);
tr_bencDictAddStr(&settings, TR_PREFS_KEY_INCOMPLETE_DIR, [[[fDefaults stringForKey: @"IncompleteDownloadFolder"]
@ -307,6 +309,7 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
tr_bencDictAddBool(&settings, TR_PREFS_KEY_PEX_ENABLED, [fDefaults boolForKey: @"PEXGlobal"]);
tr_bencDictAddBool(&settings, TR_PREFS_KEY_PORT_FORWARDING, [fDefaults boolForKey: @"NatTraversal"]);
tr_bencDictAddInt(&settings, TR_PREFS_KEY_QUEUE_STALLED_MINUTES, [fDefaults integerForKey: @"StalledMinutes"]);
tr_bencDictAddReal(&settings, TR_PREFS_KEY_RATIO, [fDefaults floatForKey: @"RatioLimit"]);
tr_bencDictAddBool(&settings, TR_PREFS_KEY_RATIO_ENABLED, [fDefaults boolForKey: @"RatioCheck"]);
tr_bencDictAddBool(&settings, TR_PREFS_KEY_RENAME_PARTIAL_FILES, [fDefaults boolForKey: @"RenamePartialFiles"]);
@ -315,6 +318,8 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
tr_bencDictAddInt(&settings, TR_PREFS_KEY_RPC_PORT, [fDefaults integerForKey: @"RPCPort"]);
tr_bencDictAddStr(&settings, TR_PREFS_KEY_RPC_USERNAME, [[fDefaults stringForKey: @"RPCUsername"] UTF8String]);
tr_bencDictAddBool(&settings, TR_PREFS_KEY_RPC_WHITELIST_ENABLED, [fDefaults boolForKey: @"RPCUseWhitelist"]);
tr_bencDictAddBool(&settings, TR_PREFS_KEY_SEED_QUEUE_ENABLED, [fDefaults boolForKey: @"QueueSeed"]);
tr_bencDictAddInt(&settings, TR_PREFS_KEY_SEED_QUEUE_SIZE, [fDefaults integerForKey: @"QueueSeedNumber"]);
tr_bencDictAddBool(&settings, TR_PREFS_KEY_START, [fDefaults boolForKey: @"AutoStartDownload"]);
tr_bencDictAddBool(&settings, TR_PREFS_KEY_SCRIPT_TORRENT_DONE_ENABLED, [fDefaults boolForKey: @"DoneScriptEnabled"]);
tr_bencDictAddStr(&settings, TR_PREFS_KEY_SCRIPT_TORRENT_DONE_FILENAME, [[fDefaults stringForKey: @"DoneScriptPath"] UTF8String]);
@ -446,15 +451,26 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
if (history)
{
NSMutableArray * waitToStartTorrents = [NSMutableArray arrayWithCapacity: (([history count] > 0 && !fPauseOnLaunch) ? [history count]-1 : 0)]; //theoretical max without doing a lot of work
for (NSDictionary * historyItem in history)
{
Torrent * torrent;
if ((torrent = [[Torrent alloc] initWithHistory: historyItem lib: fLib forcePause: fPauseOnLaunch]))
{
[fTorrents addObject: torrent];
NSNumber * waitToStart;
if (!fPauseOnLaunch && (waitToStart = [historyItem objectForKey: @"WaitToStart"]) && [waitToStart boolValue])
[waitToStartTorrents addObject: torrent];
[torrent release];
}
}
//now that all are loaded, let's set those in the queue to waiting
for (Torrent * torrent in waitToStartTorrents)
[torrent startTransfer];
}
fBadger = [[Badger alloc] initWithLib: fLib];
@ -490,6 +506,7 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
[nc addObserver: fWindow selector: @selector(makeKeyWindow)
name: @"MakeWindowKey" object: nil];
#warning look at this
[nc addObserver: self selector: @selector(updateTorrentsInQueue)
name: @"UpdateQueue" object: nil];
@ -881,7 +898,8 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
}
else
{
[torrent setWaitToStart: [fDefaults boolForKey: @"AutoStartDownload"]];
if ([fDefaults boolForKey: @"AutoStartDownload"])
[torrent startTransfer];
[torrent update];
[fTorrents addObject: torrent];
@ -950,7 +968,8 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
}
else
{
[torrent setWaitToStart: [fDefaults boolForKey: @"AutoStartDownload"]];
if ([fDefaults boolForKey: @"AutoStartDownload"])
[torrent startTransfer];
[torrent update];
[fTorrents addObject: torrent];
@ -1175,7 +1194,7 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
- (void) resumeTorrents: (NSArray *) torrents
{
for (Torrent * torrent in torrents)
[torrent setWaitToStart: YES];
[torrent startTransfer];
[self updateTorrentsInQueue];
}
@ -1190,7 +1209,7 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
NSMutableArray * torrents = [NSMutableArray arrayWithCapacity: [fTorrents count]];
for (Torrent * torrent in fTorrents)
if (![torrent isActive] && [torrent waitingToStart])
if ([torrent waitingToStart])
[torrents addObject: torrent];
[self resumeTorrentsNoWait: torrents];
@ -1200,11 +1219,9 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
{
//iterate through instead of all at once to ensure no conflicts
for (Torrent * torrent in torrents)
{
tr_inf( "restarting a torrent in resumeTorrentsNoWait" );
[torrent startTransfer];
}
[torrent startTransferNoQueue];
#warning change to updateTorrentsInQueue?
[self updateUI];
[self applyFilter];
[[fWindow toolbar] validateVisibleItems];
@ -1223,9 +1240,10 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
- (void) stopTorrents: (NSArray *) torrents
{
#warning look into stopping all without starting any
//don't want any of these starting then stopping
for (Torrent * torrent in torrents)
[torrent setWaitToStart: NO];
/*for (Torrent * torrent in torrents)
[torrent setWaitToStart: NO];*/
[torrents makeObjectsPerformSelector: @selector(stopTransfer)];
@ -1324,9 +1342,10 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
NSMutableArray * selectedValues = [NSMutableArray arrayWithArray: [fTableView selectedValues]];
[selectedValues removeObjectsInArray: torrents];
#warning look into stopping all without starting any
//don't want any of these starting then stopping
for (Torrent * torrent in torrents)
[torrent setWaitToStart: NO];
/*for (Torrent * torrent in torrents)
[torrent setWaitToStart: NO];*/
[fTorrents removeObjectsInArray: torrents];
@ -1707,74 +1726,15 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
[fTotalTorrentsField setStringValue: totalTorrentsString];
}
#warning rename? remove?
- (void) updateTorrentsInQueue
{
NSUInteger desiredDownloadActive = [fDefaults boolForKey: @"Queue"] ? [self numToStartFromQueue: YES] : NSUIntegerMax,
desiredSeedActive = [fDefaults boolForKey: @"QueueSeed"] ? [self numToStartFromQueue: NO] : NSUIntegerMax;
for (Torrent * torrent in fTorrents)
{
if (desiredDownloadActive == 0 && desiredSeedActive == 0)
break;
if (![torrent isActive] && ![torrent isChecking] && [torrent waitingToStart])
{
if (![torrent allDownloaded])
{
if (desiredDownloadActive > 0)
{
tr_inf( "restarting download torrent in mac queue" );
[torrent startTransfer];
if ([torrent isActive])
--desiredDownloadActive;
[torrent update];
}
}
else
{
if (desiredSeedActive > 0)
{
tr_inf( "restarting seed torrent in mac queue" );
[torrent startTransfer];
if ([torrent isActive])
--desiredSeedActive;
[torrent update];
}
}
}
}
[self updateUI];
[self applyFilter];
[[fWindow toolbar] validateVisibleItems];
[self updateTorrentHistory];
}
- (NSUInteger) numToStartFromQueue: (BOOL) downloadQueue
{
if (![fDefaults boolForKey: downloadQueue ? @"Queue" : @"QueueSeed"])
return 0;
NSUInteger desired = [fDefaults integerForKey: downloadQueue ? @"QueueDownloadNumber" : @"QueueSeedNumber"];
for (Torrent * torrent in fTorrents)
{
if (desired == 0)
break;
if ([torrent isChecking])
--desired;
else if ([torrent isActive] && ![torrent isStalled] && ![torrent isError])
{
if ([torrent allDownloaded] != downloadQueue)
--desired;
}
else;
}
return desired;
}
- (void) torrentFinishedDownloading: (NSNotification *) notification
{
Torrent * torrent = [notification object];
@ -1808,26 +1768,14 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
//bounce download stack
[[NSDistributedNotificationCenter defaultCenter] postNotificationName: @"com.apple.DownloadFileFinished"
object: [torrent dataLocation]];
if ([torrent isActive] && [fDefaults boolForKey: @"QueueSeed"] && [self numToStartFromQueue: NO] == 0)
{
[torrent stopTransfer];
[torrent setWaitToStart: YES];
}
}
[self updateTorrentsInQueue];
}
#warning remove?
- (void) torrentRestartedDownloading: (NSNotification *) notification
{
Torrent * torrent = [notification object];
if ([torrent isActive] && [fDefaults boolForKey: @"Queue"] && [self numToStartFromQueue: YES] == 0)
{
[torrent stopTransfer];
[torrent setWaitToStart: YES];
}
[self updateTorrentsInQueue];
}
@ -2700,6 +2648,8 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
//insert objects at new location
NSUInteger insertIndex = topTorrent ? [fTorrents indexOfObject: topTorrent] + 1 : 0;
NSIndexSet * insertIndexes = [NSIndexSet indexSetWithIndexesInRange: NSMakeRange(insertIndex, [movingTorrents count])];
for (Torrent * torrent in movingTorrents)
[torrent setQueueIndex: insertIndex++];
[fTorrents insertObjects: movingTorrents atIndexes: insertIndexes];
}
@ -4164,6 +4114,7 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
}
}
#warning handle queue state changes
- (void) rpcCallback: (tr_rpc_callback_type) type forTorrentStruct: (struct tr_torrent *) torrentStruct
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

View File

@ -762,24 +762,38 @@ tr_session * fHandle;
- (void) setQueue: (id) sender
{
//let's just do both - easier that way
tr_sessionSetQueueEnabled(fHandle, TR_DOWN, [fDefaults boolForKey: @"Queue"]);
tr_sessionSetQueueEnabled(fHandle, TR_UP, [fDefaults boolForKey: @"QueueSeed"]);
[[NSNotificationCenter defaultCenter] postNotificationName: @"UpdateQueue" object: self];
}
- (void) setQueueNumber: (id) sender
{
[fDefaults setInteger: [sender intValue] forKey: sender == fQueueDownloadField ? @"QueueDownloadNumber" : @"QueueSeedNumber"];
[self setQueue: nil];
const NSInteger number = [sender intValue];
const BOOL seed = sender == fQueueSeedField;
[fDefaults setInteger: number forKey: seed ? @"QueueSeedNumber" : @"QueueDownloadNumber"];
tr_sessionSetQueueSize(fHandle, seed ? TR_UP : TR_DOWN, number);
[[NSNotificationCenter defaultCenter] postNotificationName: @"UpdateQueue" object: self];
}
- (void) setStalled: (id) sender
{
#warning do something here
[[NSNotificationCenter defaultCenter] postNotificationName: @"UpdateQueue" object: self];
}
- (void) setStalledMinutes: (id) sender
{
[fDefaults setInteger: [sender intValue] forKey: @"StalledMinutes"];
[self setStalled: nil];
tr_sessionSetQueueStalledMinutes(fHandle, [fDefaults integerForKey: @"StalledMinutes"]);
[[NSNotificationCenter defaultCenter] postNotificationName: @"UpdateQueue" object: self];
}
- (void) setDownloadLocation: (id) sender
@ -1221,6 +1235,20 @@ tr_session * fHandle;
const NSUInteger idleLimitMin = tr_sessionGetIdleLimit(fHandle);
[fDefaults setInteger: idleLimitMin forKey: @"IdleLimitMinutes"];
//queue
const BOOL downloadQueue = tr_sessionGetQueueEnabled(fHandle, TR_DOWN);
[fDefaults setBool: downloadQueue forKey: @"Queue"];
const int downloadQueueNum = tr_sessionGetQueueSize(fHandle, TR_DOWN);
[fDefaults setInteger: downloadQueueNum forKey: @"QueueDownloadNumber"];
const BOOL seedQueue = tr_sessionGetQueueEnabled(fHandle, TR_UP);
[fDefaults setBool: seedQueue forKey: @"QueueSeed"];
[fDefaults setBool: downloadQueue forKey: @"Queue"];
const int seedQueueNum = tr_sessionGetQueueSize(fHandle, TR_UP);
[fDefaults setInteger: seedQueueNum forKey: @"QueueSeedNumber"];
//done script
const BOOL doneScriptEnabled = tr_sessionIsTorrentDoneScriptEnabled(fHandle);
[fDefaults setBool: doneScriptEnabled forKey: @"DoneScriptEnabled"];

View File

@ -47,8 +47,6 @@
NSIndexSet * fPreviousFinishedIndexes;
NSDate * fPreviousFinishedIndexesDate;
BOOL fWaitToStart, fStalled;
NSInteger fGroupValue;
BOOL fResumeOnWake;
@ -73,15 +71,18 @@
- (void) getAvailability: (int8_t *) tab size: (NSInteger) size;
- (void) getAmountFinished: (float *) tab size: (NSInteger) size;
- (NSIndexSet *) previousFinishedPieces;
-(void) setPreviousFinishedPieces: (NSIndexSet *) indexes;
- (void) setPreviousFinishedPieces: (NSIndexSet *) indexes;
- (void) update;
- (void) startTransferNoQueue;
- (void) startTransfer;
- (void) stopTransfer;
- (void) sleep;
- (void) wakeUp;
- (void) setQueueIndex: (NSUInteger) index;
- (void) manualAnnounce;
- (BOOL) canManualAnnounce;
@ -112,7 +113,6 @@
- (void) setMaxPeerConnect: (uint16_t) count;
- (uint16_t) maxPeerConnect;
- (void) setWaitToStart: (BOOL) wait;
- (BOOL) waitingToStart;
- (tr_priority_t) priority;

View File

@ -37,7 +37,6 @@
- (id) initWithPath: (NSString *) path hash: (NSString *) hashString torrentStruct: (tr_torrent *) torrentStruct
magnetAddress: (NSString *) magnetAddress lib: (tr_session *) lib
waitToStart: (NSNumber *) waitToStart
groupValue: (NSNumber *) groupValue
timeMachineExcludeLocation: (NSString *) timeMachineExclude
downloadFolder: (NSString *) downloadFolder
@ -103,7 +102,7 @@ int trashDataFile(const char * filename)
lib: (tr_session *) lib
{
self = [self initWithPath: path hash: nil torrentStruct: NULL magnetAddress: nil lib: lib
waitToStart: nil groupValue: nil
groupValue: nil
timeMachineExcludeLocation: nil
downloadFolder: location
legacyIncompleteFolder: nil];
@ -119,7 +118,7 @@ int trashDataFile(const char * filename)
- (id) initWithTorrentStruct: (tr_torrent *) torrentStruct location: (NSString *) location lib: (tr_session *) lib
{
self = [self initWithPath: nil hash: nil torrentStruct: torrentStruct magnetAddress: nil lib: lib
waitToStart: nil groupValue: nil
groupValue: nil
timeMachineExcludeLocation: nil
downloadFolder: location
legacyIncompleteFolder: nil];
@ -130,7 +129,7 @@ int trashDataFile(const char * filename)
- (id) initWithMagnetAddress: (NSString *) address location: (NSString *) location lib: (tr_session *) lib
{
self = [self initWithPath: nil hash: nil torrentStruct: nil magnetAddress: address
lib: lib waitToStart: nil groupValue: nil
lib: lib groupValue: nil
timeMachineExcludeLocation: nil
downloadFolder: location legacyIncompleteFolder: nil];
@ -144,7 +143,6 @@ int trashDataFile(const char * filename)
torrentStruct: NULL
magnetAddress: nil
lib: lib
waitToStart: [history objectForKey: @"WaitToStart"]
groupValue: [history objectForKey: @"GroupValue"]
timeMachineExcludeLocation: [history objectForKey: @"TimeMachineExcludeLocation"]
downloadFolder: [history objectForKey: @"DownloadFolder"] //upgrading from versions < 1.80
@ -158,9 +156,12 @@ int trashDataFile(const char * filename)
if (!pause && (active = [history objectForKey: @"Active"]) && [active boolValue])
{
fStat = tr_torrentStat(fHandle);
[self startTransfer];
[self startTransferNoQueue];
}
//fWaitToStart = waitToStart && [waitToStart boolValue];
//upgrading from versions < 1.30: get old added, activity, and done dates
NSDate * date;
if ((date = [history objectForKey: @"Date"]))
@ -194,7 +195,7 @@ int trashDataFile(const char * filename)
[self torrentLocation], @"InternalTorrentPath",
[self hashString], @"TorrentHash",
[NSNumber numberWithBool: [self isActive]], @"Active",
[NSNumber numberWithBool: fWaitToStart], @"WaitToStart",
[NSNumber numberWithBool: [self waitingToStart]], @"WaitToStart",
[NSNumber numberWithInt: fGroupValue], @"GroupValue", nil];
if (fTimeMachineExclude)
@ -289,37 +290,30 @@ int trashDataFile(const char * filename)
- (void) update
{
//get previous status values before update
BOOL wasChecking = NO, wasError = NO, wasStalled = NO;
if (fStat != NULL)
{
wasChecking = [self isChecking];
wasError = [self isError];
wasStalled = fStalled;
}
fStat = tr_torrentStat(fHandle);
//check if stalled (stored because based on time and needs to check if it was previously stalled)
fStalled = [self isActive] && [fDefaults boolForKey: @"CheckStalled"]
&& [self stalledMinutes] > [fDefaults integerForKey: @"StalledMinutes"];
//update queue for checking (from downloading to seeding), stalled, or error
if ((wasChecking && ![self isChecking]) || (wasStalled != fStalled) || (!wasError && [self isError] && [self isActive]))
[[NSNotificationCenter defaultCenter] postNotificationName: @"UpdateQueue" object: self];
//when the data first appears, update time machine exclusion
if (!fTimeMachineExclude)
[self updateTimeMachineExclude];
}
- (void) startTransfer
- (void) startTransferNoQueue
{
fWaitToStart = NO;
if (![self isActive] && [self alertForRemainingDiskSpace])
{
tr_ninf( fInfo->name, "restarting via startTransfer" );
tr_torrentStartNow(fHandle);
[self update];
//capture, specifically, stop-seeding settings changing to unlimited
[[NSNotificationCenter defaultCenter] postNotificationName: @"UpdateOptions" object: nil];
}
}
#warning merge
- (void) startTransfer
{
if (![self isActive] && ![self waitingToStart] && [self alertForRemainingDiskSpace])
{
tr_torrentStart(fHandle);
[self update];
@ -330,13 +324,12 @@ int trashDataFile(const char * filename)
- (void) stopTransfer
{
fWaitToStart = NO;
if ([self isActive])
if ([self isActive] || [self waitingToStart])
{
tr_torrentStop(fHandle);
[self update];
#warning still needed?
[[NSNotificationCenter defaultCenter] postNotificationName: @"UpdateQueue" object: self];
}
}
@ -356,6 +349,11 @@ int trashDataFile(const char * filename)
}
}
- (void) setQueueIndex: (NSUInteger) index
{
tr_torrentSetQueuePosition(fHandle, index);
}
- (void) manualAnnounce
{
tr_torrentManualUpdate(fHandle);
@ -475,15 +473,9 @@ int trashDataFile(const char * filename)
{
return tr_torrentGetPeerLimit(fHandle);
}
- (void) setWaitToStart: (BOOL) wait
{
fWaitToStart = wait;
}
- (BOOL) waitingToStart
{
return fWaitToStart;
return fStat->activity == TR_STATUS_DOWNLOAD_WAIT || fStat->activity == TR_STATUS_SEED_WAIT;
}
- (tr_priority_t) priority
@ -622,6 +614,8 @@ int trashDataFile(const char * filename)
- (NSString *) name
{
#warning remove
//return [NSString stringWithFormat: @"%d %@", fStat->queuePosition, [NSString stringWithUTF8String: fInfo->name]];
return fInfo->name != NULL ? [NSString stringWithUTF8String: fInfo->name] : fHashString;
}
@ -840,7 +834,7 @@ int trashDataFile(const char * filename)
- (BOOL) isActive
{
return fStat->activity != TR_STATUS_STOPPED;
return fStat->activity != TR_STATUS_STOPPED && fStat->activity != TR_STATUS_DOWNLOAD_WAIT && fStat->activity != TR_STATUS_SEED_WAIT;
}
- (BOOL) isSeeding
@ -1050,18 +1044,20 @@ int trashDataFile(const char * filename)
switch (fStat->activity)
{
case TR_STATUS_STOPPED:
if (fWaitToStart)
{
string = ![self allDownloaded]
? [NSLocalizedString(@"Waiting to download", "Torrent -> status string") stringByAppendingEllipsis]
: [NSLocalizedString(@"Waiting to seed", "Torrent -> status string") stringByAppendingEllipsis];
}
else if ([self isFinishedSeeding])
if ([self isFinishedSeeding])
string = NSLocalizedString(@"Seeding complete", "Torrent -> status string");
else
string = NSLocalizedString(@"Paused", "Torrent -> status string");
break;
case TR_STATUS_DOWNLOAD_WAIT:
string = [NSLocalizedString(@"Waiting to download", "Torrent -> status string") stringByAppendingEllipsis];
break;
case TR_STATUS_SEED_WAIT:
string = [NSLocalizedString(@"Waiting to seed", "Torrent -> status string") stringByAppendingEllipsis];
break;
case TR_STATUS_CHECK_WAIT:
string = [NSLocalizedString(@"Waiting to check existing data", "Torrent -> status string") stringByAppendingEllipsis];
break;
@ -1104,7 +1100,7 @@ int trashDataFile(const char * filename)
[self peersGettingFromUs]];
}
if (fStalled)
if ([self isStalled])
string = [NSLocalizedString(@"Stalled", "Torrent -> status string") stringByAppendingFormat: @", %@", string];
}
@ -1130,17 +1126,17 @@ int trashDataFile(const char * filename)
switch (fStat->activity)
{
case TR_STATUS_STOPPED:
if (fWaitToStart)
{
string = ![self allDownloaded]
? [NSLocalizedString(@"Waiting to download", "Torrent -> status string") stringByAppendingEllipsis]
: [NSLocalizedString(@"Waiting to seed", "Torrent -> status string") stringByAppendingEllipsis];
}
else if ([self isFinishedSeeding])
if ([self isFinishedSeeding])
string = NSLocalizedString(@"Seeding complete", "Torrent -> status string");
else
string = NSLocalizedString(@"Paused", "Torrent -> status string");
break;
case TR_STATUS_DOWNLOAD_WAIT:
string = [NSLocalizedString(@"Waiting to download", "Torrent -> status string") stringByAppendingEllipsis];
case TR_STATUS_SEED_WAIT:
string = [NSLocalizedString(@"Waiting to seed", "Torrent -> status string") stringByAppendingEllipsis];
case TR_STATUS_CHECK_WAIT:
string = [NSLocalizedString(@"Waiting to check existing data", "Torrent -> status string") stringByAppendingEllipsis];
@ -1180,13 +1176,15 @@ int trashDataFile(const char * filename)
switch (fStat->activity)
{
case TR_STATUS_STOPPED:
case TR_STATUS_DOWNLOAD_WAIT:
case TR_STATUS_SEED_WAIT:
{
NSString * string = NSLocalizedString(@"Paused", "Torrent -> status string");
NSString * extra = nil;
if (fWaitToStart)
if ([self waitingToStart])
{
extra = ![self allDownloaded]
extra = fStat->activity == TR_STATUS_DOWNLOAD_WAIT
? NSLocalizedString(@"Waiting to download", "Torrent -> status string")
: NSLocalizedString(@"Waiting to seed", "Torrent -> status string");
}
@ -1210,10 +1208,6 @@ int trashDataFile(const char * filename)
case TR_STATUS_SEED:
return NSLocalizedString(@"Seeding", "Torrent -> status string");
default:
NSAssert1(NO, @"Unknown activity %d for state string", fStat->activity);
return nil;
}
}
@ -1536,7 +1530,7 @@ int trashDataFile(const char * filename)
- (BOOL) isStalled
{
return fStalled;
return fStat->isStalled;
}
- (void) updateTimeMachineExclude
@ -1567,7 +1561,7 @@ int trashDataFile(const char * filename)
{
if (![self isActive]) //paused
{
if (fWaitToStart)
if ([self waitingToStart])
return 1;
else
return 0;
@ -1613,7 +1607,6 @@ int trashDataFile(const char * filename)
- (id) initWithPath: (NSString *) path hash: (NSString *) hashString torrentStruct: (tr_torrent *) torrentStruct
magnetAddress: (NSString *) magnetAddress lib: (tr_session *) lib
waitToStart: (NSNumber *) waitToStart
groupValue: (NSNumber *) groupValue
timeMachineExcludeLocation: (NSString *) timeMachineExclude
downloadFolder: (NSString *) downloadFolder
@ -1669,7 +1662,6 @@ int trashDataFile(const char * filename)
fHashString = [[NSString alloc] initWithUTF8String: fInfo->hashString];
fWaitToStart = waitToStart && [waitToStart boolValue];
fResumeOnWake = NO;
//don't do after this point - it messes with auto-group functionality