deleteData: (BOOL) deleteData deleteTorrent: (BOOL) deleteData;
- (void) removeSheetDidEnd: (NSWindow *) sheet returnCode: (int) returnCode
contextInfo: (NSDictionary *) dict;
-- (void) confirmRemoveTorrents: (NSArray *) torrents
- deleteData: (BOOL) deleteData deleteTorrent: (BOOL) deleteTorrent;
+- (void) confirmRemoveTorrents: (NSArray *) torrents deleteData: (BOOL) deleteData deleteTorrent: (BOOL) deleteTorrent
+ fromRPC: (BOOL) rpc;
- (void) removeNoDelete: (id) sender;
- (void) removeDeleteData: (id) sender;
- (void) removeDeleteTorrent: (id) sender;
}
}
- [self confirmRemoveTorrents: torrents deleteData: deleteData deleteTorrent: deleteTorrent];
+ [self confirmRemoveTorrents: torrents deleteData: deleteData deleteTorrent: deleteTorrent fromRPC: NO];
}
- (void) removeSheetDidEnd: (NSWindow *) sheet returnCode: (int) returnCode contextInfo: (NSDictionary *) dict
NSArray * torrents = [dict objectForKey: @"Torrents"];
if (returnCode == NSAlertDefaultReturn)
[self confirmRemoveTorrents: torrents deleteData: [[dict objectForKey: @"DeleteData"] boolValue]
- deleteTorrent: [[dict objectForKey: @"DeleteTorrent"] boolValue]];
+ deleteTorrent: [[dict objectForKey: @"DeleteTorrent"] boolValue] fromRPC: NO];
else
[torrents release];
}
- (void) confirmRemoveTorrents: (NSArray *) torrents deleteData: (BOOL) deleteData deleteTorrent: (BOOL) deleteTorrent
+ fromRPC: (BOOL) rpc
{
//don't want any of these starting then stopping
NSEnumerator * enumerator = [torrents objectEnumerator];
lowestOrderValue = MIN(lowestOrderValue, [torrent orderValue]);
- [torrent closeRemoveTorrent];
+ if (rpc)
+ [torrent closeRemoveTorrentInterface];
+ else
+ [torrent closeRemoveTorrent];
}
[torrents release];
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
//get the torrent
+ Torrent * torrent;
if (torrentStruct != NULL && (type != TR_RPC_TORRENT_ADDED && type != TR_RPC_SESSION_CHANGED))
{
NSEnumerator * enumerator = [fTorrents objectEnumerator];
- Torrent * torrent;
while ((torrent = [enumerator nextObject]))
if (torrentStruct == [torrent torrentStruct])
break;
NSLog(@"No torrent found matching the given torrent struct from the RPC callback!");
return;
}
+
+ [torrent retain];
}
switch (type)
case TR_RPC_TORRENT_STOPPED:
break;
case TR_RPC_TORRENT_REMOVING:
+ [self performSelectorOnMainThread: @selector(rpcRemoveTorrent:) withObject: torrent waitUntilDone: NO];
break;
case TR_RPC_TORRENT_CHANGED:
break;
[self updateTorrentsInQueue];
}
+- (void) rpcRemoveTorrent: (Torrent *) torrent
+{
+ [self confirmRemoveTorrents: [[NSArray arrayWithObject: torrent] retain] deleteData: NO deleteTorrent: NO fromRPC: YES];
+ [torrent release];
+}
+
@end
return [@"Torrent: " stringByAppendingString: [self name]];
}
-- (void) closeRemoveTorrent
+- (void) closeRemoveTorrentInterface
{
//allow the file to be index by Time Machine
[self setTimeMachineExclude: NO forPath: [[self downloadFolder] stringByAppendingPathComponent: [self name]]];
+}
+
+- (void) closeRemoveTorrent
+{
+ [self closeRemoveTorrentInterface];
tr_torrentRemove(fHandle);
}