// // BPAppController.m // Attempt2 // // Created by Bea on 12/05/05. // Copyright 2005 __MyCompanyName__. All rights reserved. // #import "BPAppController.h" #import "BPDocument.h" #import "BPPilesDataController.h" #import "BPDocumentGroup.h" #import "BPPerson.h" #import "BPEmailDocument.h" #import "BPMailAppData.h" #import "BPDocumentViewer.h" #import "BPUtil.h" #import "BPPilesDisplay.h" #import "BPWorkspaceLoader.h" #import "BPNewMailGetter.h" #import "BPToolbarController.h" @implementation BPAppController - (id)init { [super init]; mainWindowUndoManager = [[NSUndoManager alloc] init]; rootSavePath = [[@"~/Library/Application Support/MailStacker/" stringByExpandingTildeInPath] retain]; return self; } - (void)awakeFromNib { [[NSApplication sharedApplication] setDelegate:self]; [[NSApplication sharedApplication] setApplicationIconImage:[NSImage imageNamed:@"appIcon"]]; //[mainWindowUndoManager setLevelsOfUndo:1]; [mainWindowUndoManager setGroupsByEvent:NO]; } - (NSString *)rootSavePath { return rootSavePath; } - (NSString *)pathForDataFile { NSFileManager *fileManager = [NSFileManager defaultManager]; NSString *folder = [self rootSavePath]; if ([fileManager fileExistsAtPath: folder] == NO) { [fileManager createDirectoryAtPath: folder attributes:nil]; } NSString *dateStr = [[NSDate date] descriptionWithCalendarFormat:@"%e-%b-%y %H-%M-%S" timeZone:nil locale:nil]; NSString *fileName = [NSString stringWithFormat:@"%@.piles", dateStr]; return [folder stringByAppendingPathComponent:fileName]; } - (NSString *)pathForFaviconsFile { NSFileManager *fileManager = [NSFileManager defaultManager]; NSString *folder = [self rootSavePath]; if ([fileManager fileExistsAtPath: folder] == NO) { [fileManager createDirectoryAtPath: folder attributes:nil]; } return [folder stringByAppendingPathComponent:@"savedFavicons"]; } - (void)saveFavicons { NSString *path = [self pathForFaviconsFile]; NSMutableDictionary *rootObject = [NSMutableDictionary dictionary]; [BPPerson saveFaviconsToDict:rootObject]; [NSKeyedArchiver archiveRootObject:rootObject toFile:path]; } - (void)savePiles { NSString *path = [self pathForDataFile]; NSMutableDictionary *rootObject = [NSMutableDictionary dictionary]; [dataController savePileDataToDict:rootObject]; int result = [NSKeyedArchiver archiveRootObject:rootObject toFile:path]; [workspaceLoader reloadDisplay]; } - (IBAction)saveAppState:(id)sender { [self savePiles]; // favicons [self saveFavicons]; } - (void)loadAppStateAtPath:(NSString *)path { NSDictionary *rootObject = [NSKeyedUnarchiver unarchiveObjectWithFile:path]; [dataController loadPileDataFromDict:rootObject]; } - (void)loadAppState:(id)sender { [self loadAppStateAtPath:[self pathForDataFile]]; } - (void)applicationWillTerminate:(NSNotification *)aNotification { [self saveFavicons]; [self savePiles]; } - (void)applicationDidResignActive:(NSNotification *)aNotification { //[self saveAppState:nil]; } - (void)applicationDidHide:(NSNotification *)aNotification { //[self saveAppState:nil]; } - (void)timeToSave { [self saveAppState:nil]; } - (void)applicationWillFinishLaunching:(NSNotification *)aNotification { //[[pilesDisplay window] setBackgroundColor:[NSColor whiteColor]]; [[pilesDisplay window] setToolbar:[toolbarController mainWindowToolbar]]; [[pilesDisplay window] performZoom:nil]; // load favicons NSDictionary *rootObject = [NSKeyedUnarchiver unarchiveObjectWithFile:[self pathForFaviconsFile]]; [BPPerson loadFaviconsFromDict:rootObject]; [[pilesDisplay window] makeFirstResponder:nil]; [BPPerson personThatsMe]; // set up 'me' [workspaceLoader showLoaderPanel:nil]; [NSTimer scheduledTimerWithTimeInterval:360 target:self selector:@selector(timeToSave) userInfo:nil repeats:YES]; } // delegate method for main piles display's window - (NSUndoManager *)windowWillReturnUndoManager:(NSWindow *)sender { return mainWindowUndoManager; } @end