1// 2// FileTypeViewOwner.mm 3// LDView 4// 5// Created by Travis Cobbs on 10/27/07. 6// Copyright 2007 __MyCompanyName__. All rights reserved. 7// 8 9#import "FileTypeViewOwner.h" 10#import "LDViewCategories.h" 11#import "OCUserDefaults.h" 12 13#include <LDLib/LDUserDefaultsKeys.h> 14#include <LDLib/LDSnapshotTaker.h> 15#include <TCFoundation/TCUserDefaults.h> 16 17@implementation FileTypeViewOwner 18 19- (id)init 20{ 21 self = [super init]; 22 if (self) 23 { 24 fileTypes = [[NSMutableArray alloc] init]; 25 extensions = [[NSMutableArray alloc] init]; 26 } 27 return self; 28} 29 30- (void) dealloc 31{ 32 [savePanel release]; 33 if (![self haveTopLevelObjectsArray]) 34 { 35 [accessoryView release]; 36 } 37 [fileTypes release]; 38 [udTypeKey release]; 39 [super dealloc]; 40} 41 42- (NSArray *)allowedFileTypes 43{ 44 return fileTypes; 45} 46 47- (NSString *)requiredFileType 48{ 49 return [extensions objectAtIndex:[fileTypePopUp indexOfSelectedItem]]; 50} 51 52- (void)updateRequiredFileType 53{ 54 NSString *requiredFileType = [self requiredFileType]; 55 56 savePanel.allowedFileTypes = [NSArray arrayWithObject:requiredFileType]; 57 [savePanel validateVisibleColumns]; 58 [fileTypeOptionsButton setEnabled:[self haveOptions]]; 59} 60 61- (void)setFileTypeExtension:(NSString *)extension 62{ 63 NSUInteger index = NSNotFound; 64 65 if (extension != nil) 66 { 67 index = [extensions indexOfObject:extension]; 68 } 69 if (index == NSNotFound) 70 { 71 index = 0; 72 } 73 [fileTypePopUp selectItemAtIndex:index]; 74} 75 76- (void)setSavePanel:(NSSavePanel *)aSavePanel 77{ 78 if (aSavePanel != nil) 79 { 80 // IB won't let you remove all items, so there's one dummy item. 81 [fileTypePopUp removeAllItems]; 82 [fileTypePopUp addItemsWithTitles:fileTypes]; 83 if (udTypeKey != nil) 84 { 85 NSString *extension = [OCUserDefaults stringForKey:udTypeKey defaultValue:nil sessionSpecific:NO]; 86 87 [self setFileTypeExtension:extension]; 88 } 89 } 90 if (aSavePanel != savePanel) 91 { 92 [savePanel release]; 93 savePanel = [aSavePanel retain]; 94 } 95 if (savePanel != nil) 96 { 97 [savePanel setAccessoryView:accessoryView]; 98 } 99 [self updateRequiredFileType]; 100} 101 102- (void)saveSettings 103{ 104 if (udTypeKey) 105 { 106 [OCUserDefaults setString:[self requiredFileType] forKey:udTypeKey sessionSpecific:NO]; 107 } 108} 109 110- (IBAction)fileType:(id)sender 111{ 112 [self updateRequiredFileType]; 113} 114 115- (IBAction)fileTypeOptions:(id)sender 116{ 117} 118 119- (BOOL)haveOptions 120{ 121 return NO; 122} 123 124@end 125