// // OMLAppDelegate.m // OML // #import "OMLAppDelegate.h" @interface WebPreferences (WebPreferencesPrivate) - (void)_setLocalStorageDatabasePath:(NSString *)path; - (void) setLocalStorageEnabled: (BOOL) localStorageEnabled; @end @implementation OMLAppDelegate @synthesize window; @synthesize webView; - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { NSFileManager *fileManager = [[NSFileManager alloc] init]; NSString *basePath = [@"~/Library/Application Support/Open Media Library" stringByExpandingTildeInPath]; BOOL exists; if ([fileManager fileExistsAtPath:basePath isDirectory: &exists] && exists) { NSTask *task = [[NSTask alloc] init]; task.launchPath = [basePath stringByAppendingString:@"/ctl"]; task.arguments = @[@"start"]; [task launch]; NSString* dbPath = [WebStorageManager _storageDirectoryPath]; WebPreferences* prefs = [webView preferences]; //[prefs _setLocalStorageDatabasePath:[basePath stringByAppendingString:@"/localStorage"]]; NSString* localDBPath = [prefs _localStorageDatabasePath]; // PATHS MUST MATCH!!!! otherwise localstorage file is erased when starting program if( [localDBPath isEqualToString:dbPath] == NO) { [prefs setAutosaves:YES]; //SET PREFS AUTOSAVE FIRST otherwise settings aren't saved. // Define application cache quota static const unsigned long long defaultTotalQuota = 10 * 1024 * 1024; // 10MB static const unsigned long long defaultOriginQuota = 5 * 1024 * 1024; // 5MB [prefs setApplicationCacheTotalQuota:defaultTotalQuota]; [prefs setApplicationCacheDefaultOriginQuota:defaultOriginQuota]; [prefs setWebGLEnabled:YES]; [prefs setFullScreenEnabled:YES]; [prefs setOfflineWebApplicationCacheEnabled:YES]; [prefs setDatabasesEnabled:YES]; //[prefs setDeveloperExtrasEnabled:[[NSUserDefaults standardUserDefaults] boolForKey: @"developer"]]; [prefs _setLocalStorageDatabasePath:dbPath]; [prefs setLocalStorageEnabled:YES]; [webView setPreferences:prefs]; } NSString *htmlPath = [basePath stringByAppendingString:@"/openmedialibrary/static/html/load.html"]; [[webView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:htmlPath]]]; } else { NSTask *task = [[NSTask alloc] init]; NSString *resourcesPath = [[NSBundle mainBundle] resourcePath]; task.launchPath = @"/usr/bin/python"; task.arguments = @[[resourcesPath stringByAppendingString:@"/install.py"]]; [task launch]; NSString *htmlPath = [resourcesPath stringByAppendingString:@"/install.html"]; [[webView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:htmlPath]]]; } [window setContentView: webView]; } - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender { NSString *basePath = [@"~/Library/Application Support/Open Media Library" stringByExpandingTildeInPath]; NSTask *task = [[NSTask alloc] init]; task.launchPath = [basePath stringByAppendingString:@"/ctl"]; task.arguments = @[@"stop"]; [task launch]; return YES; } - (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)app { return YES; } @end