⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 preferencecache.mm

📁 lumaqq
💻 MM
📖 第 1 页 / 共 3 页
字号:
/* * LumaQQ - Cross platform QQ client, special edition for Mac * * Copyright (C) 2007 luma <stubma@163.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */#import "PreferenceCache.h"#import "PreferenceConstants.h"#import "PreferenceManager.h"#import "KeyTool.h"#import "Constants.h"static NSMutableDictionary* caches = nil;@implementation PreferenceCache+ (void)initialize {	caches = [[NSMutableDictionary dictionary] retain];}+ (PreferenceCache*)cache:(UInt32)QQ {	PreferenceCache* cache = [caches objectForKey:[NSNumber numberWithUnsignedInt:QQ]];	if(!cache)		cache = [[PreferenceCache alloc] initWithQQ:QQ];	return cache;}- (id)initWithQQ:(UInt32)QQ {	self = [super init];	if (self) {				m_QQ = QQ;		m_dirty = NO;				// default value		m_windowFrame = NSMakeRect(0, 0, 0, 0);		m_showLargeUserHead = YES;		m_showClusterNameCard = YES;		m_showRealName = YES;		m_showNickName = YES;		m_showLevel = YES;		m_showSignature = YES;		m_showUserProperty = YES;		m_showStatusMessage = YES;		m_showOnlineOnly = NO;		m_alternatingRowBackground = NO;		m_showHorizontalLine = NO;		m_backgroundRed = 1.0;		m_backgroundGreen = 1.0;		m_backgroundBlue = 1.0;		m_chatFontColorRed = 0.0;		m_chatFontColorGreen = 0.0;		m_chatFontColorBlue = 0.0;		m_chatFontSize = [NSFont systemFontSize];		m_chatFontStyleBold = NO;		m_chatFontStyleItalic = NO;		m_chatFontStyleUnderline = NO;		m_chatFontName = @"Helvetica";		m_showTabStyleIMWindow = NO;		m_nickFontName = @"Lucida Grande";		m_nickFontSize = [NSFont systemFontSize];		m_nickFontStyleBold = NO;		m_nickFontStyleItalic = NO;		m_nickFontColorRed = 0.0;		m_nickFontColorGreen = 0.0;		m_nickFontColorBlue = 0.0;		m_signatureFontName = @"Lucida Grande";		m_signatureFontSize = [NSFont systemFontSize];		m_signatureFontStyleBold = NO;		m_signatureFontStyleItalic = NO;		m_signatureFontColorRed = 0.5;		m_signatureFontColorGreen = 0.5;		m_signatureFontColorBlue = 0.5;		m_hideToolbar = NO;		m_disableDockIconAnimation = NO;		m_showFakeCamera = NO;		m_disableOutlineTooltip = NO;				m_newLineKey = [[KeyTool key2String:NSCommandKeyMask character:NSCarriageReturnCharacter] retain];		m_closeKey = [[KeyTool key2String:NSAlternateKeyMask character:'C'] retain];		m_historyKey = [[KeyTool key2String:NSAlternateKeyMask character:'H'] retain];		m_switchTabKey = [[KeyTool key2String:NSAlternateKeyMask character:'Q'] retain];		m_sendKey = [[KeyTool key2String:0 character:NSCarriageReturnCharacter] retain];				m_extractMessageHotKey = [[KeyTool key2String:(NSCommandKeyMask | NSControlKeyMask) character:'Z'] retain];		m_screenscrapHotKey = [[KeyTool key2String:(NSCommandKeyMask | NSControlKeyMask) character:'A'] retain];				m_enableSound = YES;		m_baseSoundSchema = kStringEmpty;		m_userMessageSoundFile = m_clusterMessageSoundFile = m_mobileMessageSoundFile = m_systemMessageSoundFile =			m_badSystemMessageSoundFile = m_goodSystemMessageSoundFile = m_loginSoundFile = m_logoutSoundFile =			m_kickedOutSoundFile = m_userOnlineSoundFile = m_messageBlockedSoundFile = kStringEmpty;				m_alwaysOnTop = NO;		m_autoEjectMessage = NO;		m_autoHideMainWindow = NO;		m_useTabStyleIMWindow = NO;		m_disableUserOnlineTip = YES;		m_hideOnClose = YES;		m_rejectStrangerMessage = NO;		m_displayUnreadCountOnDock = YES;		m_jumpIconWhenReceivedIM = YES;		m_uploadFriendGroupMode = kLQUploadAsk;		m_statusMessage = kStringEmpty;		m_statusHistory = [[NSMutableArray array] retain];				m_keepStrangerInRecentContact = YES;		m_maxRecentContact = 20;				m_activeQBarName = kStringEmpty;				// reload		[self reload];				// cache it		[caches setObject:self forKey:[NSNumber numberWithUnsignedInt:QQ]];	}	return self;}- (void) dealloc {	if(m_dirty)		[self sync];	[m_chatFontName release];	[m_nickFontName release];	[m_signatureFontName release];	[m_newLineKey release];	[m_closeKey release];	[m_historyKey release];	[m_switchTabKey release];	[m_sendKey release];	[m_extractMessageHotKey release];	[m_userMessageSoundFile release];	[m_clusterMessageSoundFile release];	[m_mobileMessageSoundFile release];	[m_systemMessageSoundFile release];	[m_userOnlineSoundFile release];	[m_activeQBarName release];	[m_statusMessage release];	[m_statusHistory release];	[super dealloc];}- (void)reload {		// load system preference	if([PreferenceManager isPerferenceExist:m_QQ file:kLQFileSystem]) {		PreferenceManager* prefSystem = [PreferenceManager managerWithQQ:m_QQ file:kLQFileSystem];		m_showLargeUserHead = [prefSystem boolForKey:kLQUIShowLargeUserHead];		m_showClusterNameCard = [prefSystem boolForKey:kLQUIShowClusterNameCard];		m_showRealName = [prefSystem boolForKey:kLQUIShowRealName];		m_showNickName = [prefSystem boolForKey:kLQUIShowNickName];		m_showLevel = [prefSystem boolForKey:kLQUIShowLevel];		m_showOnlineOnly = [prefSystem boolForKey:kLQUIShowOnlineOnly];		m_showSignature = [prefSystem boolForKey:kLQUIShowSignature];		m_showUserProperty = [prefSystem boolForKey:kLQUIShowUserProperty];		m_showStatusMessage = [prefSystem boolForKey:kLQUIShowStatusMessage];		m_alternatingRowBackground = [prefSystem boolForKey:kLQUIAlternatingRowBackground];		m_showHorizontalLine = [prefSystem boolForKey:kLQUIShowHorizontalLine];		m_windowFrame.origin.x = [prefSystem integerForKey:kLQUIWindowX];		m_windowFrame.origin.y = [prefSystem integerForKey:kLQUIWindowY];		m_windowFrame.size.width = [prefSystem integerForKey:kLQUIWindowWidth];		m_windowFrame.size.height = [prefSystem integerForKey:kLQUIWindowHeight];		m_backgroundRed = [prefSystem floatForKey:kLQUIBackgroundRed];		m_backgroundGreen = [prefSystem floatForKey:kLQUIBackgroundGreen];		m_backgroundBlue = [prefSystem floatForKey:kLQUIBackgroundBlue];		m_chatFontColorRed = [prefSystem floatForKey:kLQUIChatFontColorRed];		m_chatFontColorGreen = [prefSystem floatForKey:kLQUIChatFontColorGreen];		m_chatFontColorBlue = [prefSystem floatForKey:kLQUIChatFontColorBlue];		m_chatFontStyleBold = [prefSystem boolForKey:kLQUIChatFontStyleBold];		m_chatFontStyleItalic = [prefSystem boolForKey:kLQUIChatFontStyleItalic];		m_chatFontStyleUnderline = [prefSystem boolForKey:kLQUIChatFontStyleUnderline];		m_chatFontSize = [prefSystem integerForKey:kLQUIChatFontSize];		m_nickFontColorRed = [prefSystem floatForKey:kLQUINickFontColorRed];		m_nickFontColorGreen = [prefSystem floatForKey:kLQUINickFontColorGreen];		m_nickFontColorBlue = [prefSystem floatForKey:kLQUINickFontColorBlue];		m_nickFontStyleBold = [prefSystem boolForKey:kLQUINickFontStyleBold];		m_nickFontStyleItalic = [prefSystem boolForKey:kLQUINickFontStyleItalic];		m_nickFontSize = [prefSystem integerForKey:kLQUINickFontSize];		m_signatureFontColorRed = [prefSystem floatForKey:kLQUISignatureFontColorRed];		m_signatureFontColorGreen = [prefSystem floatForKey:kLQUISignatureFontColorGreen];		m_signatureFontColorBlue = [prefSystem floatForKey:kLQUISignatureFontColorBlue];			m_signatureFontStyleBold = [prefSystem boolForKey:kLQUISignatureFontStyleBold];		m_signatureFontStyleItalic = [prefSystem boolForKey:kLQUISignatureFontStyleItalic];		m_signatureFontSize = [prefSystem integerForKey:kLQUISignatureFontSize];		m_hideToolbar = [prefSystem boolForKey:kLQUIHideToolbar];		m_disableDockIconAnimation = [prefSystem boolForKey:kLQUIDisableDockIconAnimation];		m_showFakeCamera = [prefSystem boolForKey:kLQUIShowFakeCamera];		m_disableOutlineTooltip = [prefSystem boolForKey:kLQUIDisableOutlineTooltip];		NSString* s = [prefSystem stringForKey:kLQUIChatFontName];		if(s)			[self setChatFontName:s];		s = [prefSystem stringForKey:kLQUINickFontName];		if(s)			[self setNickFontName:s];		s = [prefSystem stringForKey:kLQUISignatureFontName];		if(s)			[self setSignatureFontName:s];		m_showTabStyleIMWindow = [prefSystem boolForKey:kLQUIShowTabStyleIMWindow];		s = [prefSystem stringForKey:kLQKeyNewLine];		if(s)			[self setNewLineKey:s];		s = [prefSystem stringForKey:kLQKeyClose];		if(s)			[self setCloseKey:s];		s = [prefSystem stringForKey:kLQKeyHistory];		if(s)			[self setHistoryKey:s];		s = [prefSystem stringForKey:kLQKeySwitchTab];		if(s)			[self setSwitchTabKey:s];		s = [prefSystem stringForKey:kLQKeySend];		if(s)			[self setSendKey:s];		s = [prefSystem stringForKey:kLQHotKeyExtractMessage];		if(s)			[self setExtractMessageHotKey:s];		s = [prefSystem stringForKey:kLQHotKeyScreenscrap];		if(s)			[self setScreenscrapHotKey:s];				m_enableSound = [prefSystem boolForKey:kLQSoundEnabled];		s = [prefSystem stringForKey:kLQSoundBaseSchema];		if(s)			[self setBaseSoundSchema:s];		s = [prefSystem stringForKey:kLQSoundUserMessage];		if(s)			[self setUserMessageSoundFile:s];		s = [prefSystem stringForKey:kLQSoundClusterMessage];		if(s)			[self setClusterMessageSoundFile:s];		s = [prefSystem stringForKey:kLQSoundMobileMessage];		if(s)			[self setMobileMessageSoundFile:s];		s = [prefSystem stringForKey:kLQSoundSystemMessage];		if(s)			[self setSystemMessageSoundFile:s];		s = [prefSystem stringForKey:kLQSoundUserOnline];		if(s)			[self setUserOnlineSoundFile:s];		s = [prefSystem stringForKey:kLQSoundBadSystemMessage];		if(s)			[self setBadSystemMessageSoundFile:s];		s = [prefSystem stringForKey:kLQSoundGoodSystemMessage];		if(s)			[self setGoodSystemMessageSoundFile:s];		s = [prefSystem stringForKey:kLQSoundLogin];		if(s)			[self setLoginSoundFile:s];		s = [prefSystem stringForKey:kLQSoundLogout];		if(s)			[self setLogoutSoundFile:s];		s = [prefSystem stringForKey:kLQSoundKickedOut];		if(s)			[self setKickedOutSoundFile:s];		s = [prefSystem stringForKey:kLQSoundMessageBlocked];		if(s)			[self setMessageBlockedSoundFile:s];				m_alwaysOnTop = [prefSystem boolForKey:kLQBasicAlwaysOnTop];		m_autoEjectMessage = [prefSystem boolForKey:kLQBasicAutoEjectMessage];		m_autoHideMainWindow = [prefSystem boolForKey:kLQBasicAutoHideMainWindow];		m_useTabStyleIMWindow = [prefSystem boolForKey:kLQBasicUseTabIMStyleWindow];		m_disableUserOnlineTip = [prefSystem boolForKey:kLQBasicDisableUserOnlineTip];		m_hideOnClose = [prefSystem boolForKey:kLQBasicHideOnClose];		m_rejectStrangerMessage = [prefSystem boolForKey:kLQBasicRejectStranger];		m_displayUnreadCountOnDock = [prefSystem boolForKey:kLQBasicDisplayUnreadCountOnDock];		m_jumpIconWhenReceivedIM = [prefSystem boolForKey:kLQBasicJumpIconWhenReceivedIM];		m_uploadFriendGroupMode = [prefSystem integerForKey:kLQBasicUploadFriendGroup];		s = [prefSystem stringForKey:kLQBasicStatusMessage];		if(s)			[self setStatusMessage:s];		NSMutableArray* tempArray = [prefSystem objectForKey:kLQBasicStatusHistory];		if(tempArray != m_statusHistory) {			[self clearStatusHistory];			[m_statusHistory addObjectsFromArray:tempArray];		}				m_keepStrangerInRecentContact = [prefSystem boolForKey:kLQRecentKeepStranger];		int temp = [prefSystem integerForKey:kLQRecentMax];		if(temp != 0)			m_maxRecentContact = temp;				s = [prefSystem objectForKey:kLQPluginActiveQBarName];		if(s)			[self setActiveQBarName:s];	} }- (void)sync {	if(!m_dirty)		return;		// load file	PreferenceManager* prefSystem = [PreferenceManager managerWithQQ:m_QQ file:kLQFileSystem];		// initialize values	[prefSystem setInteger:m_windowFrame.origin.x forKey:kLQUIWindowX];	[prefSystem setInteger:m_windowFrame.origin.y forKey:kLQUIWindowY];	[prefSystem setInteger:m_windowFrame.size.width forKey:kLQUIWindowWidth];	[prefSystem setInteger:m_windowFrame.size.height forKey:kLQUIWindowHeight];	[prefSystem setBool:m_showLargeUserHead forKey:kLQUIShowLargeUserHead];	[prefSystem setBool:m_showClusterNameCard forKey:kLQUIShowClusterNameCard];	[prefSystem setBool:m_showRealName forKey:kLQUIShowRealName];	[prefSystem setBool:m_showNickName forKey:kLQUIShowNickName];	[prefSystem setBool:m_showLevel forKey:kLQUIShowLevel];	[prefSystem setBool:m_showSignature forKey:kLQUIShowSignature];	[prefSystem setBool:m_showOnlineOnly forKey:kLQUIShowOnlineOnly];	[prefSystem setBool:m_showUserProperty forKey:kLQUIShowUserProperty];	[prefSystem setBool:m_showStatusMessage forKey:kLQUIShowStatusMessage];	[prefSystem setBool:m_alternatingRowBackground forKey:kLQUIAlternatingRowBackground];	[prefSystem setBool:m_showHorizontalLine forKey:kLQUIShowHorizontalLine];	[prefSystem setFloat:m_backgroundRed forKey:kLQUIBackgroundRed];	[prefSystem setFloat:m_backgroundGreen forKey:kLQUIBackgroundGreen];	[prefSystem setFloat:m_backgroundBlue forKey:kLQUIBackgroundBlue];	[prefSystem setFloat:m_chatFontColorRed forKey:kLQUIChatFontColorRed];	[prefSystem setFloat:m_chatFontColorGreen forKey:kLQUIChatFontColorGreen];	[prefSystem setFloat:m_chatFontColorBlue forKey:kLQUIChatFontColorBlue];	[prefSystem setBool:m_chatFontStyleBold forKey:kLQUIChatFontStyleBold];	[prefSystem setBool:m_chatFontStyleItalic forKey:kLQUIChatFontStyleItalic];	[prefSystem setBool:m_chatFontStyleUnderline forKey:kLQUIChatFontStyleUnderline];	[prefSystem setInteger:m_chatFontSize forKey:kLQUIChatFontSize];	[prefSystem setObject:m_chatFontName forKey:kLQUIChatFontName];	[prefSystem setObject:m_nickFontName forKey:kLQUINickFontName];	[prefSystem setFloat:m_nickFontColorRed forKey:kLQUINickFontColorRed];	[prefSystem setFloat:m_nickFontColorGreen forKey:kLQUINickFontColorGreen];	[prefSystem setFloat:m_nickFontColorBlue forKey:kLQUINickFontColorBlue];	[prefSystem setBool:m_nickFontStyleBold forKey:kLQUINickFontStyleBold];	[prefSystem setBool:m_nickFontStyleItalic forKey:kLQUINickFontStyleItalic];	[prefSystem setInteger:m_nickFontSize forKey:kLQUINickFontSize];	[prefSystem setObject:m_signatureFontName forKey:kLQUISignatureFontName];	[prefSystem setFloat:m_signatureFontColorRed forKey:kLQUISignatureFontColorRed];	[prefSystem setFloat:m_signatureFontColorGreen forKey:kLQUISignatureFontColorGreen];	[prefSystem setFloat:m_signatureFontColorBlue forKey:kLQUISignatureFontColorBlue];	[prefSystem setBool:m_signatureFontStyleBold forKey:kLQUISignatureFontStyleBold];	[prefSystem setBool:m_signatureFontStyleItalic forKey:kLQUISignatureFontStyleItalic];	[prefSystem setInteger:m_signatureFontSize forKey:kLQUISignatureFontSize];	[prefSystem setBool:m_showTabStyleIMWindow forKey:kLQUIShowTabStyleIMWindow];	[prefSystem setBool:m_hideToolbar forKey:kLQUIHideToolbar];	[prefSystem setBool:m_disableDockIconAnimation forKey:kLQUIDisableDockIconAnimation];	[prefSystem setBool:m_showFakeCamera forKey:kLQUIShowFakeCamera];	[prefSystem setBool:m_disableOutlineTooltip forKey:kLQUIDisableOutlineTooltip];		[prefSystem setObject:m_newLineKey forKey:kLQKeyNewLine];	[prefSystem setObject:m_closeKey forKey:kLQKeyClose];	[prefSystem setObject:m_historyKey forKey:kLQKeyHistory];	[prefSystem setObject:m_switchTabKey forKey:kLQKeySwitchTab];	[prefSystem setObject:m_sendKey forKey:kLQKeySend];		[prefSystem setObject:m_extractMessageHotKey forKey:kLQHotKeyExtractMessage];	[prefSystem setObject:m_screenscrapHotKey forKey:kLQHotKeyScreenscrap];		[prefSystem setBool:m_enableSound forKey:kLQSoundEnabled];	[prefSystem setObject:m_baseSoundSchema forKey:kLQSoundBaseSchema];	[prefSystem setObject:m_userMessageSoundFile forKey:kLQSoundUserMessage];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -