iSightを使ってBooklog,MediaMarkerインポート用CSVファイルを生成するアプリ
Rev. | deec2c46d1e4b89d37ea473242737695cab87712 |
---|---|
크기 | 6,369 bytes |
Time | 2012-03-25 16:55:28 |
Author | masakih |
Log Message | [Mod] PPCサポートをやめた
|
//
// BEApplicationDelegate.m
// BooksExporter
//
// Created by Hori,Masaki on 11/02/28.
// Copyright 2011 masakih. All rights reserved.
//
#import "BEApplicationDelegate.h"
#import "BEPreferencePanel.h"
#import "BERegisterSite.h"
#import "BEPreference.h"
@implementation BEApplicationDelegate
+ (void)initialize
{
NSDictionary *userDefaultsValuesDict;
NSNumber *yes = [NSNumber numberWithBool:YES];
userDefaultsValuesDict = [NSDictionary dictionaryWithObjectsAndKeys:yes, BEAutoLookup, nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:userDefaultsValuesDict];
[[NSUserDefaultsController sharedUserDefaultsController] setInitialValues:userDefaultsValuesDict];
}
/**
Returns the support folder for the application, used to store the Core Data
store file. This code uses a folder named "XspfManager" for
the content, either in the NSApplicationSupportDirectory location or (if the
former cannot be found), the system's temporary directory.
*/
- (NSString *)applicationSupportFolder
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : NSTemporaryDirectory();
return [basePath stringByAppendingPathComponent:@"BooksExporter"];
}
/**
Creates, retains, and returns the managed object model for the application
by merging all of the models found in the application bundle.
*/
- (NSManagedObjectModel *)managedObjectModel
{
if(managedObjectModel != nil) {
return managedObjectModel;
}
managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];
// HMLog(HMLogLevelDebug, @"ManagedObjectModel -> %@", managedObjectModel);
return managedObjectModel;
}
- (NSURL *)storeURL
{
NSFileManager *fileManager;
NSString *applicationSupportFolder = nil;
NSURL *url;
fileManager = [NSFileManager defaultManager];
applicationSupportFolder = [self applicationSupportFolder];
if(![fileManager fileExistsAtPath:applicationSupportFolder isDirectory:NULL]) {
[fileManager createDirectoryAtPath:applicationSupportFolder attributes:nil];
}
url = [NSURL fileURLWithPath: [applicationSupportFolder stringByAppendingPathComponent: @"BooksExporter.qdb"]];
return url;
}
/**
Returns the persistent store coordinator for the application. This
implementation will create and return a coordinator, having added the
store for the application to it. (The folder for the store is created,
if necessary.)
*/
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
if(persistentStoreCoordinator != nil) {
return persistentStoreCoordinator;
}
NSError *error;
NSURL *url = [self storeURL];
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]];
if(!persistentStoreCoordinator) {
NSLog(@"Could not create store coordinator");
exit(-1);
}
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
nil];
if(![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:url options:options error:&error]){
[[NSApplication sharedApplication] presentError:error];
NSLog(@"Error -> %@", error);// localizedDescription]);
}
return persistentStoreCoordinator;
}
/**
Returns the managed object context for the application (which is already
bound to the persistent store coordinator for the application.)
*/
- (NSManagedObjectContext *)managedObjectContext
{
if(managedObjectContext != nil) {
return managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if(coordinator != nil) {
managedObjectContext = [[NSManagedObjectContext alloc] init];
[managedObjectContext setPersistentStoreCoordinator: coordinator];
}
return managedObjectContext;
}
/**
Performs the save action for the application, which is to send the save:
message to the application's managed object context. Any encountered errors
are presented to the user.
*/
- (IBAction)saveAction:(id)sender
{
NSError *error = nil;
if(![[self managedObjectContext] save:&error]) {
[[NSApplication sharedApplication] presentError:error];
}
}
- (IBAction)showPreference:(id)sender
{
BEPreferencePanel *panel = [[[BEPreferencePanel alloc] init] autorelease];
panel.viewControllerClassNames = [NSArray arrayWithObjects:@"BEGeneralPreference", nil];
[panel showWindow:nil];
}
/**
Implementation of the applicationShouldTerminate: method, used here to
handle the saving of changes in the application managed object context
before the application terminates.
*/
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
{
NSError *error;
NSUInteger reply = NSTerminateNow;
if(managedObjectContext != nil) {
if([managedObjectContext commitEditing]) {
if([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) {
// This error handling simply presents error information in a panel with an
// "Ok" button, which does not include any attempt at error recovery (meaning,
// attempting to fix the error.) As a result, this implementation will
// present the information to the user and then follow up with a panel asking
// if the user wishes to "Quit Anyway", without saving the changes.
// Typically, this process should be altered to include application-specific
// recovery steps.
BOOL errorResult = [[NSApplication sharedApplication] presentError:error];
if(errorResult == YES) {
reply = NSTerminateCancel;
} else {
NSInteger alertReturn = NSRunAlertPanel(nil, @"Could not save changes while quitting. Quit anyway?" , @"Quit anyway", @"Cancel", nil);
if(alertReturn == NSAlertAlternateReturn) {
reply = NSTerminateCancel;
}
}
}
} else {
reply = NSTerminateCancel;
}
}
return reply;
}
- (void)applicationDidFinishLaunching:(id)notification
{
mainWindowContoller = [[BEMainWindowController alloc] init];
[mainWindowContoller showWindow:self];
}
- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender
{
return YES;
}
@end