root/tags/2C10/JVBehaviorPreferences.m

Revision 1823, 8.1 kB (checked in by timothy, 4 years ago)

Moved Colloquy to a pre-compiled header. Removed all #imports that are part of the Cocoa, WebKit? and AGRegex frameworks. Removed all @class declarations that are part of the Cocoa frameworks.

Line 
1 #import "JVBehaviorPreferences.h"
2 #import "JVChatController.h"
3 #import "JVChatRoom.h"
4
5 @implementation JVBehaviorPreferences
6 - (NSString *) preferencesNibName {
7         return @"JVBehaviorPreferences";
8 }
9
10 - (BOOL) hasChangesPending {
11         return NO;
12 }
13
14 - (NSImage *) imageForPreferenceNamed:(NSString *) name {
15         return [[[NSImage imageNamed:@"BehaviorPreferences"] retain] autorelease];
16 }
17
18 - (BOOL) isResizable {
19         return NO;
20 }
21
22 - (void) initializeFromDefaults {
23         [[newRooms menu] setAutoenablesItems:NO];
24         [[newChats menu] setAutoenablesItems:NO];
25         [[newTranscripts menu] setAutoenablesItems:NO];
26         [[newConsoles menu] setAutoenablesItems:NO];
27
28         int value = [[NSUserDefaults standardUserDefaults] integerForKey:@"JVChatRoomPreferredOpenMode"] & ~32;
29         int index = [newRooms indexOfItemWithTag:value];
30         if( index >= 0 ) [newRooms selectItemAtIndex:index];
31         [self changePreferredWindow:newRooms];
32
33         value = [[NSUserDefaults standardUserDefaults] integerForKey:@"JVDirectChatPreferredOpenMode"] & ~32;
34         index = [newChats indexOfItemWithTag:value];
35         if( index >= 0 ) [newChats selectItemAtIndex:index];
36         [self changePreferredWindow:newChats];
37
38         value = [[NSUserDefaults standardUserDefaults] integerForKey:@"JVChatTranscriptPreferredOpenMode"] & ~32;
39         index = [newTranscripts indexOfItemWithTag:value];
40         if( index >= 0 ) [newTranscripts selectItemAtIndex:index];
41         [self changePreferredWindow:newTranscripts];
42
43         value = [[NSUserDefaults standardUserDefaults] integerForKey:@"JVChatConsolePreferredOpenMode"] & ~32;
44         index = [newConsoles indexOfItemWithTag:value];
45         if( index >= 0 ) [newConsoles selectItemAtIndex:index];
46         [self changePreferredWindow:newConsoles];
47
48         [sortByStatus setState:[[NSUserDefaults standardUserDefaults] boolForKey:@"JVSortRoomMembersByStatus"]];
49         [tabbedWindows setState:[[NSUserDefaults standardUserDefaults] boolForKey:@"JVUseTabbedWindows"]];
50
51         [checkSpelling setState:[[NSUserDefaults standardUserDefaults] boolForKey:@"JVChatSpellChecking"]];
52         [detectNaturalActions setState:[[NSUserDefaults standardUserDefaults] boolForKey:@"MVChatNaturalActions"]];
53
54         if( [[NSUserDefaults standardUserDefaults] boolForKey:@"MVChatSendOnReturn"] )
55                 [returnKeyAction selectItemAtIndex:[returnKeyAction indexOfItemWithTag:0]];
56         else if( [[NSUserDefaults standardUserDefaults] boolForKey:@"MVChatActionOnReturn"] )
57                 [returnKeyAction selectItemAtIndex:[returnKeyAction indexOfItemWithTag:1]];
58         else [returnKeyAction selectItemAtIndex:[returnKeyAction indexOfItemWithTag:2]];
59
60         if( [[NSUserDefaults standardUserDefaults] boolForKey:@"MVChatSendOnEnter"] )
61                 [enterKeyAction selectItemAtIndex:[enterKeyAction indexOfItemWithTag:0]];
62         else if( [[NSUserDefaults standardUserDefaults] boolForKey:@"MVChatActionOnEnter"] )
63                 [enterKeyAction selectItemAtIndex:[enterKeyAction indexOfItemWithTag:1]];
64         else [enterKeyAction selectItemAtIndex:[enterKeyAction indexOfItemWithTag:2]];
65
66         [sendHistory setIntValue:[[NSUserDefaults standardUserDefaults] integerForKey:@"JVChatMaximumHistory"]];
67         [sendHistoryStepper setIntValue:[[NSUserDefaults standardUserDefaults] integerForKey:@"JVChatMaximumHistory"]];
68
69         [messageScrollback setIntValue:[[NSUserDefaults standardUserDefaults] integerForKey:@"JVChatScrollbackLimit"]];
70         [messageScrollbackStepper setIntValue:[[NSUserDefaults standardUserDefaults] integerForKey:@"JVChatScrollbackLimit"]];
71
72         if( NSAppKitVersionNumber >= 700. ) {
73                 [tabKeyComplete setEnabled:YES];
74                 [tabKeyComplete setState:[[NSUserDefaults standardUserDefaults] boolForKey:@"JVUsePantherTextCompleteOnTab"]];
75         } else {
76                 [tabKeyCompleteLabel setObjectValue:@""];
77         }
78 }
79
80
81 #pragma mark -
82
83 - (IBAction) changeSortByStatus:(id) sender {
84         [[NSUserDefaults standardUserDefaults] setBool:(BOOL)[sender state] forKey:@"JVSortRoomMembersByStatus"];
85        
86         NSEnumerator *enumerator = [[[JVChatController defaultManager] chatViewControllersOfClass:[JVChatRoom class]] objectEnumerator];
87         JVChatRoom *room = nil;
88         while( ( room = [enumerator nextObject] ) )
89                 [room resortMembers];
90 }
91
92 - (IBAction) changeTabbedWindows:(id) sender {
93         [[NSUserDefaults standardUserDefaults] setBool:(BOOL)[sender state] forKey:@"JVUseTabbedWindows"];
94         NSRunInformationalAlertPanel( NSLocalizedString( @"Tabs Changed", "changes will take affect title" ), NSLocalizedString( @"Changes will take affect when a new chat window is created. You can detach your existing panels to switch the window behavior without parting the chat.", "new chat windows will reflect this change" ), nil, nil, nil );
95 }
96
97 - (IBAction) changePreferredWindow:(id) sender {
98         NSString *key = nil;
99        
100         if( sender == newRooms ) key = @"JVChatRoomPreferredOpenMode";
101         else if( sender == newChats ) key = @"JVDirectChatPreferredOpenMode";
102         else if( sender == newTranscripts ) key = @"JVChatTranscriptPreferredOpenMode";
103         else if( sender == newConsoles ) key = @"JVChatConsolePreferredOpenMode";
104         else return;
105        
106         int new = [[sender selectedItem] tag];
107         BOOL groupByServer = (BOOL) [[NSUserDefaults standardUserDefaults] integerForKey:key] & 32;
108        
109         if( [[sender selectedItem] tag] == 32 ) {
110                 NSMenuItem *item = [sender selectedItem];
111                 new = [[NSUserDefaults standardUserDefaults] integerForKey:key] & ~32;
112                 groupByServer = ! groupByServer;
113                 [sender selectItemAtIndex:[sender indexOfItemWithTag:new]];
114                 [item setState:( groupByServer ? NSOnState : NSOffState )];
115         } else if( [[sender selectedItem] tag] == 0 || [[sender selectedItem] tag] == 1 || [[sender selectedItem] tag] == 4 ) {
116                 NSMenuItem *item = ( [sender indexOfItemWithTag:32] >= 0 ? [sender itemAtIndex:[sender indexOfItemWithTag:32]] : nil );
117                 [item setState:NSOffState];
118                 [item setEnabled:NO];
119                 groupByServer = NO;
120         } else {
121                 NSMenuItem *item = ( [sender indexOfItemWithTag:32] >= 0 ? [sender itemAtIndex:[sender indexOfItemWithTag:32]] : nil );
122                 [item setState:( groupByServer ? NSOnState : NSOffState )];
123                 [item setEnabled:YES];
124         }
125        
126         if( groupByServer ) new |= 32;
127        
128         [[NSUserDefaults standardUserDefaults] setInteger:new forKey:key];
129 }
130
131 #pragma mark -
132
133 - (IBAction) changeSpellChecking:(id) sender {
134         [[NSUserDefaults standardUserDefaults] setBool:(BOOL)[sender state] forKey:@"JVChatSpellChecking"];
135 }
136
137 - (IBAction) changeNaturalActionDetection:(id) sender {
138         [[NSUserDefaults standardUserDefaults] setBool:(BOOL)[sender state] forKey:@"MVChatNaturalActions"];
139 }
140
141 - (IBAction) changeSendOnReturnAction:(id) sender {
142         if( [[sender selectedItem] tag] == 0 ) {
143                 [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"MVChatSendOnReturn"];
144                 [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"MVChatActionOnReturn"];
145         } else if( [[sender selectedItem] tag] == 1 ) {
146                 [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"MVChatActionOnReturn"];
147                 [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"MVChatSendOnReturn"];
148         } else {
149                 [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"MVChatSendOnReturn"];
150                 [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"MVChatActionOnReturn"];
151         }
152 }
153
154 - (IBAction) changeSendOnEnterAction:(id) sender {
155         if( [[sender selectedItem] tag] == 0 ) {
156                 [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"MVChatSendOnEnter"];
157                 [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"MVChatActionOnEnter"];
158         } else if( [[sender selectedItem] tag] == 1 ) {
159                 [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"MVChatActionOnEnter"];
160                 [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"MVChatSendOnEnter"];
161         } else {
162                 [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"MVChatSendOnEnter"];
163                 [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"MVChatActionOnEnter"];
164         }
165 }
166
167 - (IBAction) changeSendHistory:(id) sender {
168         int size = [sender intValue];
169         [sendHistory setIntValue:size];
170         [sendHistoryStepper setIntValue:size];
171         [[NSUserDefaults standardUserDefaults] setInteger:[sendHistory intValue] forKey:@"JVChatMaximumHistory"];
172 }
173
174 - (IBAction) changeMessageScrollback:(id) sender {
175         int size = [sender intValue];
176         [messageScrollback setIntValue:size];
177         [messageScrollbackStepper setIntValue:size];
178         [[NSUserDefaults standardUserDefaults] setInteger:[messageScrollback intValue] forKey:@"JVChatScrollbackLimit"];
179 }
180
181 - (IBAction) changeTabKeyComplete:(id) sender {
182         [[NSUserDefaults standardUserDefaults] setBool:(BOOL)[sender state] forKey:@"JVUsePantherTextCompleteOnTab"];
183 }
184 @end
Note: See TracBrowser for help on using the browser.