| 1 |
#import "JVBehaviorPreferences.h" |
|---|
| 2 |
#import "JVChatController.h" |
|---|
| 3 |
#import "JVChatRoomPanel.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:@"JVChatRoomPanelPreferredOpenMode"] & ~32; |
|---|
| 29 |
int index = [newRooms indexOfItemWithTag:value]; |
|---|
| 30 |
if( index >= 0 ) [newRooms selectItemAtIndex:index]; |
|---|
| 31 |
[self changePreferredWindow:newRooms]; |
|---|
| 32 |
|
|---|
| 33 |
value = [[NSUserDefaults standardUserDefaults] integerForKey:@"JVDirectChatPanelPreferredOpenMode"] & ~32; |
|---|
| 34 |
index = [newChats indexOfItemWithTag:value]; |
|---|
| 35 |
if( index >= 0 ) [newChats selectItemAtIndex:index]; |
|---|
| 36 |
[self changePreferredWindow:newChats]; |
|---|
| 37 |
|
|---|
| 38 |
value = [[NSUserDefaults standardUserDefaults] integerForKey:@"JVChatTranscriptPanelPreferredOpenMode"] & ~32; |
|---|
| 39 |
index = [newTranscripts indexOfItemWithTag:value]; |
|---|
| 40 |
if( index >= 0 ) [newTranscripts selectItemAtIndex:index]; |
|---|
| 41 |
[self changePreferredWindow:newTranscripts]; |
|---|
| 42 |
|
|---|
| 43 |
value = [[NSUserDefaults standardUserDefaults] integerForKey:@"JVChatConsolePanelPreferredOpenMode"] & ~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 |
#pragma mark - |
|---|
| 81 |
|
|---|
| 82 |
- (IBAction) changeSortByStatus:(id) sender { |
|---|
| 83 |
[[NSUserDefaults standardUserDefaults] setBool:(BOOL)[sender state] forKey:@"JVSortRoomMembersByStatus"]; |
|---|
| 84 |
|
|---|
| 85 |
NSEnumerator *enumerator = [[[JVChatController defaultController] chatViewControllersOfClass:[JVChatRoomPanel class]] objectEnumerator]; |
|---|
| 86 |
JVChatRoomPanel *room = nil; |
|---|
| 87 |
while( ( room = [enumerator nextObject] ) ) |
|---|
| 88 |
[room resortMembers]; |
|---|
| 89 |
} |
|---|
| 90 |
|
|---|
| 91 |
- (IBAction) changeTabbedWindows:(id) sender { |
|---|
| 92 |
[[NSUserDefaults standardUserDefaults] setBool:(BOOL)[sender state] forKey:@"JVUseTabbedWindows"]; |
|---|
| 93 |
} |
|---|
| 94 |
|
|---|
| 95 |
- (IBAction) changePreferredWindow:(id) sender { |
|---|
| 96 |
NSString *key = nil; |
|---|
| 97 |
|
|---|
| 98 |
if( sender == newRooms ) key = @"JVChatRoomPanelPreferredOpenMode"; |
|---|
| 99 |
else if( sender == newChats ) key = @"JVDirectChatPanelPreferredOpenMode"; |
|---|
| 100 |
else if( sender == newTranscripts ) key = @"JVChatTranscriptPanelPreferredOpenMode"; |
|---|
| 101 |
else if( sender == newConsoles ) key = @"JVChatConsolePanelPreferredOpenMode"; |
|---|
| 102 |
else return; |
|---|
| 103 |
|
|---|
| 104 |
int new = [[sender selectedItem] tag]; |
|---|
| 105 |
BOOL groupByServer = (BOOL) [[NSUserDefaults standardUserDefaults] integerForKey:key] & 32; |
|---|
| 106 |
|
|---|
| 107 |
if( [[sender selectedItem] tag] == 32 ) { |
|---|
| 108 |
NSMenuItem *item = [sender selectedItem]; |
|---|
| 109 |
new = [[NSUserDefaults standardUserDefaults] integerForKey:key] & ~32; |
|---|
| 110 |
groupByServer = ! groupByServer; |
|---|
| 111 |
[sender selectItemAtIndex:[sender indexOfItemWithTag:new]]; |
|---|
| 112 |
[item setState:( groupByServer ? NSOnState : NSOffState )]; |
|---|
| 113 |
} else if( [[sender selectedItem] tag] == 0 || [[sender selectedItem] tag] == 1 || [[sender selectedItem] tag] == 4 ) { |
|---|
| 114 |
NSMenuItem *item = ( [sender indexOfItemWithTag:32] >= 0 ? [sender itemAtIndex:[sender indexOfItemWithTag:32]] : nil ); |
|---|
| 115 |
[item setState:NSOffState]; |
|---|
| 116 |
[item setEnabled:NO]; |
|---|
| 117 |
groupByServer = NO; |
|---|
| 118 |
} else { |
|---|
| 119 |
NSMenuItem *item = ( [sender indexOfItemWithTag:32] >= 0 ? [sender itemAtIndex:[sender indexOfItemWithTag:32]] : nil ); |
|---|
| 120 |
[item setState:( groupByServer ? NSOnState : NSOffState )]; |
|---|
| 121 |
[item setEnabled:YES]; |
|---|
| 122 |
} |
|---|
| 123 |
|
|---|
| 124 |
if( groupByServer ) new |= 32; |
|---|
| 125 |
|
|---|
| 126 |
[[NSUserDefaults standardUserDefaults] setInteger:new forKey:key]; |
|---|
| 127 |
} |
|---|
| 128 |
|
|---|
| 129 |
#pragma mark - |
|---|
| 130 |
|
|---|
| 131 |
- (IBAction) changeSpellChecking:(id) sender { |
|---|
| 132 |
[[NSUserDefaults standardUserDefaults] setBool:(BOOL)[sender state] forKey:@"JVChatSpellChecking"]; |
|---|
| 133 |
} |
|---|
| 134 |
|
|---|
| 135 |
- (IBAction) changeNaturalActionDetection:(id) sender { |
|---|
| 136 |
[[NSUserDefaults standardUserDefaults] setBool:(BOOL)[sender state] forKey:@"MVChatNaturalActions"]; |
|---|
| 137 |
} |
|---|
| 138 |
|
|---|
| 139 |
- (IBAction) changeSendOnReturnAction:(id) sender { |
|---|
| 140 |
if( [[sender selectedItem] tag] == 0 ) { |
|---|
| 141 |
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"MVChatSendOnReturn"]; |
|---|
| 142 |
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"MVChatActionOnReturn"]; |
|---|
| 143 |
} else if( [[sender selectedItem] tag] == 1 ) { |
|---|
| 144 |
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"MVChatActionOnReturn"]; |
|---|
| 145 |
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"MVChatSendOnReturn"]; |
|---|
| 146 |
} else { |
|---|
| 147 |
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"MVChatSendOnReturn"]; |
|---|
| 148 |
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"MVChatActionOnReturn"]; |
|---|
| 149 |
} |
|---|
| 150 |
} |
|---|
| 151 |
|
|---|
| 152 |
- (IBAction) changeSendOnEnterAction:(id) sender { |
|---|
| 153 |
if( [[sender selectedItem] tag] == 0 ) { |
|---|
| 154 |
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"MVChatSendOnEnter"]; |
|---|
| 155 |
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"MVChatActionOnEnter"]; |
|---|
| 156 |
} else if( [[sender selectedItem] tag] == 1 ) { |
|---|
| 157 |
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"MVChatActionOnEnter"]; |
|---|
| 158 |
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"MVChatSendOnEnter"]; |
|---|
| 159 |
} else { |
|---|
| 160 |
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"MVChatSendOnEnter"]; |
|---|
| 161 |
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"MVChatActionOnEnter"]; |
|---|
| 162 |
} |
|---|
| 163 |
} |
|---|
| 164 |
|
|---|
| 165 |
- (IBAction) changeSendHistory:(id) sender { |
|---|
| 166 |
int size = [sender intValue]; |
|---|
| 167 |
[sendHistory setIntValue:size]; |
|---|
| 168 |
[sendHistoryStepper setIntValue:size]; |
|---|
| 169 |
[[NSUserDefaults standardUserDefaults] setInteger:[sendHistory intValue] forKey:@"JVChatMaximumHistory"]; |
|---|
| 170 |
} |
|---|
| 171 |
|
|---|
| 172 |
- (IBAction) changeMessageScrollback:(id) sender { |
|---|
| 173 |
int size = [sender intValue]; |
|---|
| 174 |
[messageScrollback setIntValue:size]; |
|---|
| 175 |
[messageScrollbackStepper setIntValue:size]; |
|---|
| 176 |
[[NSUserDefaults standardUserDefaults] setInteger:[messageScrollback intValue] forKey:@"JVChatScrollbackLimit"]; |
|---|
| 177 |
} |
|---|
| 178 |
|
|---|
| 179 |
- (IBAction) changeTabKeyComplete:(id) sender { |
|---|
| 180 |
[[NSUserDefaults standardUserDefaults] setBool:(BOOL)[sender state] forKey:@"JVUsePantherTextCompleteOnTab"]; |
|---|
| 181 |
} |
|---|
| 182 |
@end |
|---|