when adding new files and the download/incomplete folder doesn't exist, give a sheet to choose new location/cancel

This commit is contained in:
Mitchell Livingston
2007-01-15 18:36:08 +00:00
parent a768ecf0d2
commit fbeb566c2f
3 changed files with 99 additions and 18 deletions

View File

@@ -100,6 +100,7 @@
- (void) openFiles: (NSArray *) filenames;
- (void) openFiles: (NSArray *) filenames ignoreDownloadFolder: (BOOL) ignore forceDeleteTorrent: (BOOL) delete;
- (void) openFilesWithDict: (NSDictionary *) dictionary;
- (void) openFilesAsk: (NSMutableArray *) files forceDeleteTorrent: (BOOL) delete;
- (void) openFilesAskWithDict: (NSDictionary *) dictionary;
- (void) openShowSheet: (id) sender;

View File

@@ -575,6 +575,55 @@ static void sleepCallBack(void * controller, io_service_t y, natural_t messageTy
return;
}
if ([fDefaults boolForKey: @"UseIncompleteDownloadFolder"]
&& access([[[fDefaults stringForKey: @"IncompleteDownloadFolder"] stringByExpandingTildeInPath] UTF8String], 0))
{
NSOpenPanel * panel = [NSOpenPanel openPanel];
[panel setPrompt: @"Select"];
[panel setAllowsMultipleSelection: NO];
[panel setCanChooseFiles: NO];
[panel setCanChooseDirectories: YES];
[panel setCanCreateDirectories: YES];
[panel setMessage: NSLocalizedString(@"The incomplete download folder cannot be found."
" Choose a new incomplete folder or cancel to not use an incomplete folder.",
"Default incomplete folder cannot be found alert -> message")];
NSDictionary * dict = [[NSDictionary alloc] initWithObjectsAndKeys:
filenames, @"Filenames",
[NSNumber numberWithBool: ignore], @"Ignore",
[NSNumber numberWithBool: delete], @"Delete", nil];
[panel beginSheetForDirectory: nil file: nil types: nil modalForWindow: fWindow modalDelegate: self
didEndSelector: @selector(incompleteChoiceClosed:returnCode:contextInfo:) contextInfo: dict];
return;
}
if ([downloadChoice isEqualToString: @"Constant"]
&& access([[[fDefaults stringForKey: @"DownloadFolder"] stringByExpandingTildeInPath] UTF8String], 0))
{
NSOpenPanel * panel = [NSOpenPanel openPanel];
[panel setPrompt: @"Select"];
[panel setAllowsMultipleSelection: NO];
[panel setCanChooseFiles: NO];
[panel setCanChooseDirectories: YES];
[panel setCanCreateDirectories: YES];
[panel setMessage: NSLocalizedString(@"The download folder cannot be found."
" Choose a new download folder to start the transfer.",
"Default incomplete folder cannot be found alert -> message")];
NSDictionary * dict = [[NSDictionary alloc] initWithObjectsAndKeys:
filenames, @"Filenames",
[NSNumber numberWithBool: ignore], @"Ignore",
[NSNumber numberWithBool: delete], @"Delete", nil];
[panel beginSheetForDirectory: nil file: nil types: nil modalForWindow: fWindow modalDelegate: self
didEndSelector: @selector(downloadChoiceClosed:returnCode:contextInfo:) contextInfo: dict];
return;
}
Torrent * torrent;
NSString * torrentPath;
NSEnumerator * enumerator = [filenames objectEnumerator];
@@ -600,6 +649,36 @@ static void sleepCallBack(void * controller, io_service_t y, natural_t messageTy
[self updateTorrentsInQueue];
}
- (void) incompleteChoiceClosed: (NSOpenPanel *) openPanel returnCode: (int) code contextInfo: (NSDictionary *) dictionary
{
if (code == NSOKButton)
[fDefaults setObject: [[openPanel filenames] objectAtIndex: 0] forKey: @"IncompleteDownloadFolder"];
else
[fDefaults setBool: NO forKey: @"UseIncompleteDownloadFolder"];
[self performSelectorOnMainThread: @selector(openFilesWithDict:) withObject: dictionary waitUntilDone: NO];
}
- (void) downloadChoiceClosed: (NSOpenPanel *) openPanel returnCode: (int) code contextInfo: (NSDictionary *) dictionary
{
if (code == NSOKButton)
{
[fDefaults setObject: [[openPanel filenames] objectAtIndex: 0] forKey: @"DownloadFolder"];
[self performSelectorOnMainThread: @selector(openFilesWithDict:) withObject: dictionary waitUntilDone: NO];
}
else
[dictionary release];
}
- (void) openFilesWithDict: (NSDictionary *) dictionary
{
[self openFiles: [dictionary objectForKey: @"Filenames"]
ignoreDownloadFolder: [[dictionary objectForKey: @"Ignore"] boolValue]
forceDeleteTorrent: [[dictionary objectForKey: @"Delete"] boolValue]];
[dictionary release];
}
//called by the main open method to show sheet for choosing download location
- (void) openFilesAsk: (NSMutableArray *) files forceDeleteTorrent: (BOOL) delete
{

View File

@@ -700,6 +700,7 @@ static uint32_t kRed = BE(0xFF6450FF), //255, 100, 80
[panel setAllowsMultipleSelection: NO];
[panel setCanChooseFiles: NO];
[panel setCanChooseDirectories: YES];
[panel setCanCreateDirectories: YES];
[panel setMessage: [NSString stringWithFormat: NSLocalizedString(@"Select the download folder for \"%@\"",
"Open torrent -> select destination folder"), [self name]]];
@@ -719,27 +720,27 @@ static uint32_t kRed = BE(0xFF6450FF), //255, 100, 80
- (void) destinationChoiceClosed: (NSOpenPanel *) openPanel returnCode: (int) code contextInfo: (void *) context
{
if (code != NSOKButton)
return;
NSString * folder = [[openPanel filenames] objectAtIndex: 0];
if (code == NSOKButton)
if (fUseIncompleteFolder)
{
if (fUseIncompleteFolder)
{
[fIncompleteFolder release];
fIncompleteFolder = [folder retain];
[self setDownloadFolder: nil];
}
else
{
[fDownloadFolder release];
fDownloadFolder = folder;
[self setDownloadFolder: fDownloadFolder];
}
[self startTransfer];
[self update];
[[NSNotificationCenter defaultCenter] postNotificationName: @"UpdateInfoSettings" object: nil];
[fIncompleteFolder release];
fIncompleteFolder = [folder retain];
[self setDownloadFolder: nil];
}
else
{
[fDownloadFolder release];
fDownloadFolder = folder;
[self setDownloadFolder: fDownloadFolder];
}
[self startTransfer];
[self update];
[[NSNotificationCenter defaultCenter] postNotificationName: @"UpdateInfoSettings" object: nil];
}
- (BOOL) alertForMoveFolderAvailable