📄 preferencewindowcontroller.mm
字号:
break; case kSoundIdSystemMessage: [cache setSystemMessageSoundFile:file]; break; case kSoundIdGoodSystemMessage: [cache setGoodSystemMessageSoundFile:file]; break; case kSoundIdBadSystemMessage: [cache setBadSystemMessageSoundFile:file]; break; case kSoundIdUserOnline: [cache setUserOnlineSoundFile:file]; break; case kSoundIdLogin: [cache setLoginSoundFile:file]; break; case kSoundIdLogout: [cache setLogoutSoundFile:file]; break; case kSoundIdKickedOut: [cache setKickedOutSoundFile:file]; break; case kSoundIdMessageBlocked: [cache setMessageBlockedSoundFile:file]; break; } } } // save window setting NSEnumerator* e = [[m_mxWindow cells] objectEnumerator]; while(NSCell* cell = [e nextObject]) { switch([cell tag]) { case _kTagAlwaysOnTop: [cache setAlwaysOnTop:[cell state]]; [[m_mainWindowController window] setLevel:([cache alwaysOnTop] ? NSScreenSaverWindowLevel : NSNormalWindowLevel)]; break; case _kTagAutoEjectMessage: [cache setAutoEjectMessage:[cell state]]; break; case _kTagAutoHideMainWindow: [cache setAutoHideMainWindow:[cell state]]; break; case _kTagUseTabStyleIMWindow: [cache setUseTabStyleIMWindow:[cell state]]; break; case _kTagHideMainWindowWhenClose: [cache setHideOnClose:[cell state]]; break; case _kTagDisableOutlineTooltip: [cache setDisableOutlineTooltip:[cell state]]; break; } } // save overall setting e = [[m_mxOverall cells] objectEnumerator]; while(NSCell* cell = [e nextObject]) { switch([cell tag]) { case _kTagRejectStrangerMessage: [cache setRejectStrangerMessage:[cell state]]; break; case _kTagDisableUserOnlineTip: [cache enableUserOnlineTip:![cell state]]; break; case _kTagDisplayUnreadCountOnDock: [cache setDisplayUnreadCountOnDock:[cell state]]; break; case _kTagJumpIconWhenReceivedIM: [cache setJumpIconWhenReceivedIM:[cell state]]; break; case _kTagDisableDockIconAnimation: [cache setDisableDockIconAnimation:[cell state]]; break; } } // save friend group setting [cache setUploadFriendGroupMode:[m_mxUpload selectedTag]]; // save recent contact setting [cache setKeepStrangerInRecentContact:[m_chkKeepStrangerInRecentContactList state]]; [cache setMaxRecentContact:[[m_txtMaxRecentContact stringValue] intValue]]; // remove old key and register new key NSString* oldKey = [cache extractMessageHotKey]; [cache setExtractMessageHotKey:[m_hotKeyExtractMessage string]]; [[HotKeyManager sharedHotKeyManager] unregisterHotKeyByString:oldKey owner:[[m_mainWindowController me] QQ]]; [m_mainWindowController registerExtractMessageHotKey]; oldKey = [cache screenscrapHotKey]; [cache setScreenscrapHotKey:[m_hotKeyScreenscrap string]]; [[HotKeyManager sharedHotKeyManager] unregisterHotKeyByString:oldKey owner:[[m_mainWindowController me] QQ]]; [m_mainWindowController registerScreenscrapHotKey];}- (void)setupToolbar { [self addView:m_basicView label:L(@"LQBasic", @"Preference") image:[NSImage imageNamed:kImageBasic]]; [self addView:m_hotKeyView label:L(@"LQHotKey", @"Preference") image:[NSImage imageNamed:kImageHotKey]]; [self addView:m_soundView label:L(@"LQSound", @"Preference") image:[NSImage imageNamed:kImageSound]]; [self addView:m_recentContactView label:L(@"LQRecentContact", @"Preference") image:[NSImage imageNamed:kImageRecentContact]];}#pragma mark -#pragma mark actions- (IBAction)onEnableSound:(id)sender { [self enableSoundBox:[m_chkEnableSound state]];}- (IBAction)onSoundSchemaChanged:(id)sender { // get plugin int schema = [m_pbSoundSchema indexOfSelectedItem]; id<SoundSchemaPlugin> plugin = schema > 0 ? [[m_mainWindowController pluginManager] soundPluginAtIndex:(schema - 1)] : nil; if(plugin) { [m_soundFiles removeAllObjects]; for(int i = kSoundIdUserMessage; i <= kSoundIdMessageBlocked; i++) [m_soundFiles setObject:[plugin soundPath:i] forKey:[NSNumber numberWithInt:i]]; [self onSoundTypeChanged:m_pbSoundType]; } }- (IBAction)onSoundTypeChanged:(id)sender { // get preference PreferenceCache* cache = [PreferenceCache cache:[[m_mainWindowController me] QQ]]; NSString* file = [m_soundFiles objectForKey:[NSNumber numberWithInt:[[m_pbSoundType selectedItem] tag]]]; if(file) [m_txtSoundFile setString:file]; else { switch([[m_pbSoundType selectedItem] tag]) { case kSoundIdUserMessage: [m_txtSoundFile setString:[cache userMessageSoundFile]]; break; case kSoundIdClusterMessage: [m_txtSoundFile setString:[cache clusterMessageSoundFile]]; break; case kSoundIdMobileMessage: [m_txtSoundFile setString:[cache mobileMessageSoundFile]]; break; case kSoundIdSystemMessage: [m_txtSoundFile setString:[cache systemMessageSoundFile]]; break; case kSoundIdGoodSystemMessage: [m_txtSoundFile setString:[cache goodSystemMessageSoundFile]]; break; case kSoundIdBadSystemMessage: [m_txtSoundFile setString:[cache badSystemMessageSoundFile]]; break; case kSoundIdUserOnline: [m_txtSoundFile setString:[cache userOnlineSoundFile]]; break; case kSoundIdLogin: [m_txtSoundFile setString:[cache loginSoundFile]]; break; case kSoundIdLogout: [m_txtSoundFile setString:[cache logoutSoundFile]]; break; case kSoundIdKickedOut: [m_txtSoundFile setString:[cache kickedOutSoundFile]]; break; case kSoundIdMessageBlocked: [m_txtSoundFile setString:[cache messageBlockedSoundFile]]; break; } }}- (IBAction)onOK:(id)sender { // validate NSString* error = [self validate]; if(error) { [AlertTool showWarning:[self window] message:error]; } else { [self savePreference]; [self close]; }}- (IBAction)onCancel:(id)sender { [self close];}- (IBAction)onBrowse:(id)sender { // get container path NSString* file = [m_txtSoundFile string]; file = [file stringByDeletingLastPathComponent]; if([file isEmpty]) { file = @"~"; file = [file stringByExpandingTildeInPath]; } // open open file panel NSOpenPanel* panel = [NSOpenPanel openPanel]; [panel setCanChooseDirectories:NO]; [panel setAllowsMultipleSelection:NO]; [panel beginSheetForDirectory:file file:nil modalForWindow:[self window] modalDelegate:self didEndSelector:@selector(openPanelDidEnd:returnCode:contextInfo:) contextInfo:nil];}- (IBAction)onPlay:(id)sender { NSSound* sound = [[[NSSound alloc] initWithContentsOfFile:[m_txtSoundFile string] byReference:YES] autorelease]; [sound play];}#pragma mark -#pragma mark text field delegate- (void)textDidChange:(NSNotification *)aNotification { id control = [aNotification object]; if(control == m_txtSoundFile) [m_soundFiles setObject:[m_txtSoundFile string] forKey:[NSNumber numberWithInt:[[m_pbSoundType selectedItem] tag]]]; }#pragma mark -#pragma mark open panel delegate- (void)openPanelDidEnd:(NSOpenPanel*)panel returnCode:(int)returnCode contextInfo:(void*)contextInfo { if(returnCode = NSOKButton) { [m_txtSoundFile setString:[panel filename]]; [m_soundFiles setObject:[panel filename] forKey:[NSNumber numberWithInt:[[m_pbSoundType selectedItem] tag]]]; }}@end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -