2009-08-05 08:59:46 +00:00
|
|
|
/*
|
2010-01-01 20:11:34 +00:00
|
|
|
Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
2009-08-05 08:59:46 +00:00
|
|
|
|
2010-09-30 10:17:41 +00:00
|
|
|
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
2009-08-05 08:59:46 +00:00
|
|
|
which should be included with this package. The terms are also available at
|
2010-09-30 10:17:41 +00:00
|
|
|
http://www.hardcoded.net/licenses/bsd_license
|
2009-08-05 08:59:46 +00:00
|
|
|
*/
|
|
|
|
|
2009-06-01 09:55:11 +00:00
|
|
|
#import "AppDelegate.h"
|
|
|
|
#import "ProgressController.h"
|
2010-09-29 14:49:50 +00:00
|
|
|
#import "HSFairwareReminder.h"
|
2009-06-01 09:55:11 +00:00
|
|
|
#import "Utils.h"
|
|
|
|
#import "Consts.h"
|
2010-02-05 15:51:00 +00:00
|
|
|
#import <Sparkle/SUUpdater.h>
|
2009-06-01 09:55:11 +00:00
|
|
|
|
|
|
|
@implementation AppDelegateBase
|
|
|
|
- (PyDupeGuruBase *)py { return py; }
|
|
|
|
- (RecentDirectories *)recentDirectories { return recentDirectories; }
|
2010-02-05 16:05:00 +00:00
|
|
|
- (DirectoryPanel *)directoryPanel
|
|
|
|
{
|
|
|
|
if (!_directoryPanel)
|
|
|
|
_directoryPanel = [[DirectoryPanel alloc] initWithParentApp:self];
|
|
|
|
return _directoryPanel;
|
|
|
|
}
|
|
|
|
|
2010-02-05 16:15:45 +00:00
|
|
|
- (DetailsPanel *)detailsPanel
|
|
|
|
{
|
|
|
|
if (!_detailsPanel)
|
|
|
|
_detailsPanel = [[DetailsPanel alloc] initWithPy:py];
|
|
|
|
return _detailsPanel;
|
|
|
|
}
|
2009-10-30 14:40:17 +00:00
|
|
|
|
2010-02-05 15:51:00 +00:00
|
|
|
- (void)saveResults
|
|
|
|
{
|
|
|
|
if (_savedResults) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
[py saveIgnoreList];
|
|
|
|
[py saveResults];
|
|
|
|
_savedResults = YES;
|
|
|
|
}
|
|
|
|
|
2010-12-30 12:00:44 +00:00
|
|
|
- (IBAction)showAboutBox:(id)sender
|
|
|
|
{
|
|
|
|
if (_aboutBox == nil) {
|
|
|
|
_aboutBox = [[HSAboutBox alloc] initWithApp:py];
|
|
|
|
}
|
|
|
|
[[_aboutBox window] makeKeyAndOrderFront:sender];
|
|
|
|
}
|
|
|
|
|
2009-10-30 14:40:17 +00:00
|
|
|
/* Delegate */
|
|
|
|
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
|
|
|
|
{
|
|
|
|
[[ProgressController mainProgressController] setWorker:py];
|
|
|
|
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
|
|
|
|
//Restore Columns
|
|
|
|
NSArray *columnsOrder = [ud arrayForKey:@"columnsOrder"];
|
|
|
|
NSDictionary *columnsWidth = [ud dictionaryForKey:@"columnsWidth"];
|
|
|
|
if ([columnsOrder count])
|
|
|
|
[result restoreColumnsPosition:columnsOrder widths:columnsWidth];
|
|
|
|
else
|
|
|
|
[result resetColumnsToDefault:nil];
|
2010-09-29 14:49:50 +00:00
|
|
|
[HSFairwareReminder showNagWithApp:[self py]];
|
2009-10-30 14:40:17 +00:00
|
|
|
//Restore results
|
|
|
|
[py loadIgnoreList];
|
|
|
|
[py loadResults];
|
2010-02-05 15:51:00 +00:00
|
|
|
_savedResults = NO;
|
2009-10-30 14:40:17 +00:00
|
|
|
}
|
2010-02-05 15:31:09 +00:00
|
|
|
|
|
|
|
- (void)applicationWillBecomeActive:(NSNotification *)aNotification
|
|
|
|
{
|
|
|
|
if (![[result window] isVisible])
|
|
|
|
[result showWindow:NSApp];
|
|
|
|
}
|
|
|
|
|
|
|
|
- (void)applicationWillTerminate:(NSNotification *)aNotification
|
|
|
|
{
|
|
|
|
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
|
|
|
|
[ud setObject: [result getColumnsOrder] forKey:@"columnsOrder"];
|
|
|
|
[ud setObject: [result getColumnsWidth] forKey:@"columnsWidth"];
|
2010-02-05 15:51:00 +00:00
|
|
|
[self saveResults];
|
2010-02-05 15:31:09 +00:00
|
|
|
NSInteger sc = [ud integerForKey:@"sessionCountSinceLastIgnorePurge"];
|
|
|
|
if (sc >= 10)
|
|
|
|
{
|
|
|
|
sc = -1;
|
|
|
|
[py purgeIgnoreList];
|
|
|
|
}
|
|
|
|
sc++;
|
|
|
|
[ud setInteger:sc forKey:@"sessionCountSinceLastIgnorePurge"];
|
|
|
|
// NSApplication does not release nib instances objects, we must do it manually
|
|
|
|
// Well, it isn't needed because the memory is freed anyway (we are quitting the application
|
|
|
|
// But I need to release RecentDirectories so it saves the user defaults
|
|
|
|
[recentDirectories release];
|
|
|
|
}
|
|
|
|
|
|
|
|
- (void)recentDirecoryClicked:(NSString *)directory
|
|
|
|
{
|
|
|
|
[[self directoryPanel] addDirectory:directory];
|
|
|
|
}
|
2010-02-05 15:51:00 +00:00
|
|
|
|
|
|
|
/* SUUpdater delegate */
|
|
|
|
|
|
|
|
- (BOOL)updater:(SUUpdater *)updater shouldPostponeRelaunchForUpdate:(SUAppcastItem *)update untilInvoking:(NSInvocation *)invocation;
|
|
|
|
{
|
|
|
|
/* If results aren't saved now, we might get a weird utf-8 lookup error when saving later.
|
|
|
|
**/
|
|
|
|
[self saveResults];
|
|
|
|
return NO;
|
|
|
|
}
|
2009-06-01 09:55:11 +00:00
|
|
|
@end
|