mirror of
https://github.com/arsenetar/dupeguru.git
synced 2024-11-14 11:39:03 +00:00
159 lines
5.3 KiB
Mathematica
159 lines
5.3 KiB
Mathematica
|
#import "AppDelegate.h"
|
||
|
#import "cocoalib/ProgressController.h"
|
||
|
#import "cocoalib/RegistrationInterface.h"
|
||
|
#import "cocoalib/Utils.h"
|
||
|
#import "cocoalib/ValueTransformers.h"
|
||
|
#import "cocoalib/Dialogs.h"
|
||
|
#import "Consts.h"
|
||
|
|
||
|
@implementation AppDelegate
|
||
|
+ (void)initialize
|
||
|
{
|
||
|
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
|
||
|
NSMutableDictionary *d = [NSMutableDictionary dictionaryWithCapacity:10];
|
||
|
[d setObject:i2n(3) forKey:@"scanType"];
|
||
|
[d setObject:i2n(80) forKey:@"minMatchPercentage"];
|
||
|
[d setObject:i2n(1) forKey:@"recreatePathType"];
|
||
|
[d setObject:b2n(NO) forKey:@"wordWeighting"];
|
||
|
[d setObject:b2n(NO) forKey:@"matchSimilarWords"];
|
||
|
[d setObject:b2n(YES) forKey:@"mixFileKind"];
|
||
|
[d setObject:b2n(NO) forKey:@"useRegexpFilter"];
|
||
|
[d setObject:b2n(NO) forKey:@"removeEmptyFolders"];
|
||
|
[d setObject:b2n(NO) forKey:@"debug"];
|
||
|
[d setObject:b2n(NO) forKey:@"scanTagTrack"];
|
||
|
[d setObject:b2n(YES) forKey:@"scanTagArtist"];
|
||
|
[d setObject:b2n(YES) forKey:@"scanTagAlbum"];
|
||
|
[d setObject:b2n(YES) forKey:@"scanTagTitle"];
|
||
|
[d setObject:b2n(NO) forKey:@"scanTagGenre"];
|
||
|
[d setObject:b2n(NO) forKey:@"scanTagYear"];
|
||
|
[d setObject:[NSArray array] forKey:@"recentDirectories"];
|
||
|
[d setObject:[NSArray array] forKey:@"columnsOrder"];
|
||
|
[d setObject:[NSDictionary dictionary] forKey:@"columnsWidth"];
|
||
|
[[NSUserDefaultsController sharedUserDefaultsController] setInitialValues:d];
|
||
|
[ud registerDefaults:d];
|
||
|
}
|
||
|
|
||
|
- (id)init
|
||
|
{
|
||
|
self = [super init];
|
||
|
NSMutableIndexSet *i = [NSMutableIndexSet indexSetWithIndex:4];
|
||
|
[i addIndex:5];
|
||
|
VTIsIntIn *vtScanTypeIsNotContent = [[[VTIsIntIn alloc] initWithValues:i reverse:YES] autorelease];
|
||
|
[NSValueTransformer setValueTransformer:vtScanTypeIsNotContent forName:@"vtScanTypeIsNotContent"];
|
||
|
VTIsIntIn *vtScanTypeIsTag = [[[VTIsIntIn alloc] initWithValues:[NSIndexSet indexSetWithIndex:3] reverse:NO] autorelease];
|
||
|
[NSValueTransformer setValueTransformer:vtScanTypeIsTag forName:@"vtScanTypeIsTag"];
|
||
|
_directoryPanel = nil;
|
||
|
_appName = APPNAME;
|
||
|
return self;
|
||
|
}
|
||
|
|
||
|
- (IBAction)openWebsite:(id)sender
|
||
|
{
|
||
|
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"http://www.hardcoded.net/dupeguru_me"]];
|
||
|
}
|
||
|
|
||
|
- (IBAction)popupPresets:(id)sender
|
||
|
{
|
||
|
[presetsPopup selectItem: nil];
|
||
|
[[presetsPopup cell] performClickWithFrame:[sender frame] inView:[sender superview]];
|
||
|
}
|
||
|
|
||
|
- (IBAction)toggleDirectories:(id)sender
|
||
|
{
|
||
|
[[self directoryPanel] toggleVisible:sender];
|
||
|
}
|
||
|
|
||
|
- (IBAction)usePreset:(id)sender
|
||
|
{
|
||
|
NSUserDefaultsController *ud = [NSUserDefaultsController sharedUserDefaultsController];
|
||
|
[ud revertToInitialValues:nil];
|
||
|
NSUserDefaults *d = [ud defaults];
|
||
|
switch ([sender tag])
|
||
|
{
|
||
|
case 0:
|
||
|
{
|
||
|
[d setInteger:5 forKey:@"scanType"];
|
||
|
break;
|
||
|
}
|
||
|
//case 1 is defaults
|
||
|
case 2:
|
||
|
{
|
||
|
[d setInteger:2 forKey:@"scanType"];
|
||
|
break;
|
||
|
}
|
||
|
case 3:
|
||
|
{
|
||
|
[d setInteger:0 forKey:@"scanType"];
|
||
|
[d setInteger:50 forKey:@"minMatchPercentage"];
|
||
|
break;
|
||
|
}
|
||
|
case 4:
|
||
|
{
|
||
|
[d setInteger:0 forKey:@"scanType"];
|
||
|
[d setInteger:50 forKey:@"minMatchPercentage"];
|
||
|
[d setBool:YES forKey:@"matchSimilarWords"];
|
||
|
[d setBool:YES forKey:@"wordWeighting"];
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
- (DirectoryPanel *)directoryPanel
|
||
|
{
|
||
|
if (!_directoryPanel)
|
||
|
_directoryPanel = [[DirectoryPanel alloc] initWithParentApp:self];
|
||
|
return _directoryPanel;
|
||
|
}
|
||
|
- (PyDupeGuru *)py { return (PyDupeGuru *)py; }
|
||
|
|
||
|
//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];
|
||
|
//Reg stuff
|
||
|
if ([RegistrationInterface showNagWithApp:[self py] name:APPNAME limitDescription:LIMIT_DESC])
|
||
|
[unlockMenuItem setTitle:@"Thanks for buying dupeGuru ME!"];
|
||
|
//Restore results
|
||
|
[py loadIgnoreList];
|
||
|
[py loadResults];
|
||
|
}
|
||
|
|
||
|
- (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"];
|
||
|
[py saveIgnoreList];
|
||
|
[py saveResults];
|
||
|
int 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];
|
||
|
}
|
||
|
@end
|