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