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

📄 mainwindowcontroller.mm

📁 lumaqq
💻 MM
📖 第 1 页 / 共 5 页
字号:
}- (IBAction)onModifyNickFont:(id)sender {	m_modifyFont = _kFontNick;		NSFontManager* fm = [NSFontManager sharedFontManager];	[fm setDelegate:self];	[fm setAction:@selector(onFontChanged:)];	[fm setSelectedFont:[FontTool nickFontWithPreference:[m_me QQ]] isMultiple:NO];	[fm orderFrontFontPanel:self];}- (IBAction)onModifySignatureFont:(id)sender {	m_modifyFont = _kFontSignature;		NSFontManager* fm = [NSFontManager sharedFontManager];	[fm setDelegate:self];	[fm setAction:@selector(onFontChanged:)];	[fm setSelectedFont:[FontTool signatureFontWithPreference:[m_me QQ]] isMultiple:NO];	[fm orderFrontFontPanel:self];}- (IBAction)onFontChanged:(id)sender {		if(m_modifyFont == -1)		return;		// get font	NSFont* font = [NSFont fontWithName:@"Helvetica" size:[NSFont systemFontSize]];		// get new font	font = [[sender fontPanel:NO] panelConvertFont:font];		// get font trait mask	NSFontTraitMask mask = [sender traitsOfFont:font];		// save font info to preference	PreferenceCache* cache = [PreferenceCache cache:[m_me QQ]];	switch(m_modifyFont) {		case _kFontNick:			[cache setNickFontName:[font familyName]];			[cache setNickFontSize:[font pointSize]];			[cache setNickFontStyleBold:((mask & NSBoldFontMask) != 0)];			[cache setNickFontStyleItalic:((mask & NSItalicFontMask) != 0)];			break;		case _kFontSignature:			[cache setSignatureFontName:[font familyName]];			[cache setSignatureFontSize:[font pointSize]];			[cache setSignatureFontStyleBold:((mask & NSBoldFontMask) != 0)];			[cache setSignatureFontStyleItalic:((mask & NSItalicFontMask) != 0)];			break;	}		// reload to reflect the change	[m_userOutline reloadData];	[m_clusterOutline reloadData];	[m_recentTable reloadData];		[m_mobileTable reloadData];}- (IBAction)onOutlineBackgroundColorWell:(id)sender {	m_modifyColor = _kColorOutlineBackground;		NSColorPanel* panel = [NSColorPanel sharedColorPanel];	[panel setTarget:self];	[panel setAction:@selector(onColorChanged:)];	[panel orderFront:self];}- (IBAction)onNickFontColorWell:(id)sender {	m_modifyColor = _kColorNickFont;		NSColorPanel* panel = [NSColorPanel sharedColorPanel];	[panel setTarget:self];	[panel setAction:@selector(onColorChanged:)];	[panel orderFront:self];}- (IBAction)onSignatureFontColorWell:(id)sender {	m_modifyColor = _kColorSignatureFont;		NSColorPanel* panel = [NSColorPanel sharedColorPanel];	[panel setTarget:self];	[panel setAction:@selector(onColorChanged:)];	[panel orderFront:self];}- (IBAction)onColorChanged:(id)sender {	if(m_modifyColor == -1)		return;		PreferenceCache* cache = [PreferenceCache cache:[m_me QQ]];	switch(m_modifyColor) {		case _kColorOutlineBackground:			[cache setBackground:[m_outlineBackgroundColorWell color]];			[m_userOutline setBackgroundColor:[cache background]];			[m_clusterOutline setBackgroundColor:[cache background]];			[m_recentTable setBackgroundColor:[cache background]];			[m_mobileTable setBackgroundColor:[cache background]];			break;		case _kColorNickFont:			[cache setNickFontColor:[m_outlineDefaultFontColorWell color]];			[m_userOutline reloadData];			[m_clusterOutline reloadData];			[m_recentTable reloadData];			[m_mobileTable reloadData];			break;		case _kColorSignatureFont:			[cache setSignatureFontColor:[m_signatureFontColorWell color]];			[m_userOutline reloadData];			[m_clusterOutline reloadData];			[m_recentTable reloadData];			[m_mobileTable reloadData];			break;	}}- (IBAction)onNewMobile:(id)sender {	m_sheetType = _kSheetNewMobile;	[m_txtMobileName setStringValue:kStringEmpty];	[m_txtMobileNumber setStringValue:kStringEmpty];	[NSApp beginSheet:m_mobileInfoWindow	   modalForWindow:[self window]		modalDelegate:self	   didEndSelector:@selector(inputSheetDidEnd:returnCode:contextInfo:)		  contextInfo:nil];}- (IBAction)onModifyMobile:(id)sender {	int row = [m_mobileTable selectedRow];	if(row != -1) {		Mobile* m = [m_groupManager mobileAtIndex:row];		if(m) {			m_sheetType = _kSheetModifyMobile;			[m_txtMobileName setStringValue:[m name]];			[m_txtMobileNumber setStringValue:[m mobile]];			[NSApp beginSheet:m_mobileInfoWindow			   modalForWindow:[self window]				modalDelegate:self			   didEndSelector:@selector(inputSheetDidEnd:returnCode:contextInfo:)				  contextInfo:nil];		}	}}- (IBAction)onDeleteMobile:(id)sender {	int row = [m_mobileTable selectedRow];	Mobile* mobile = [m_groupManager mobileAtIndex:row];	if(mobile) {		[m_groupManager removeMobile:mobile];		[m_mobileTable reloadData];	}}- (IBAction)onMobileInfoOK:(id)sender {	[NSApp endSheet:m_mobileInfoWindow returnCode:YES];	[m_mobileInfoWindow orderOut:self];}- (IBAction)onMobileInfoCancel:(id)sender {	[NSApp endSheet:m_mobileInfoWindow returnCode:NO];	[m_mobileInfoWindow orderOut:self];}- (IBAction)onSendSMSToQQ:(id)sender {	User* user = [m_userOutline itemAtRow:[m_userOutline selectedRow]];	if(user) {		[m_windowRegistry showMobileIMWindowOrTab:user mainWindow:self];	}}- (IBAction)onSendSMSToMobile:(id)sender {	int row = [m_mobileTable selectedRow];	Mobile* mobile = [m_groupManager mobileAtIndex:row];	if(mobile) {		[m_windowRegistry showMobileIMWindowOrTabByMobile:mobile mainWindow:self];	}}- (IBAction)onRestoreFromAutoHide:(id)sender {	if(m_sideWindow) {		// clear flag		m_autoHided = NO;				// show main window, forbid autoresizing		NSRect frame = [[self window] frame];		[[[self window] contentView] setAutoresizesSubviews:NO];		[[self window] setFrame:[m_sideWindow frame] display:NO];		[[self window] setAlphaValue:0.0];		[[self window] orderFront:self];				// begin animation		m_animationType = _kAnimationRestoreFromAutoHide;		[AnimationHelper moveWindow:[self window]							   from:[m_sideWindow frame]								 to:frame							 fadeIn:nil							fadeOut:m_sideWindow						   delegate:self];	}}- (IBAction)onScreenscrap:(id)sender {	ScreenscrapHelper* helper = [ScreenscrapHelper sharedHelper];	[helper beginScreenscrap];}- (IBAction)onQBarPluginOK:(id)sender {	[NSApp endSheet:m_winQBarPlugins		 returnCode:YES];	[m_winQBarPlugins orderOut:self];}- (IBAction)onQBarPluginCancel:(id)sender {	[NSApp endSheet:m_winQBarPlugins		 returnCode:NO];	[m_winQBarPlugins orderOut:self];}#pragma mark -#pragma mark helpers- (BOOL)validateMenuItem:(id <NSMenuItem>)menuItem {	if([NSStringFromSelector([menuItem action]) isEqualToString:@"performClose:"]) {		PreferenceCache* cache = [PreferenceCache cache:[m_me QQ]];		if([cache hideOnClose])			[menuItem setTitle:L(@"LQHide")];		else			[menuItem setTitle:L(@"LQClose")];		return YES;	} else		return YES;}- (void)changeClusterMessageSetting:(Cluster*)cluster newMessageSetting:(char)newSetting {	// if same, return	if([cluster messageSetting] == newSetting)		return;		// include	[m_messageQueue restoreClusterInUnread:[cluster internalId]];		// change setting	[cluster setMessageSetting:newSetting];	switch(newSetting) {		case kQQClusterMessageAccept:			if([cluster messageCount] > 0)				[[TimerTaskManager sharedManager] addTask:[ModelEffectTask taskWithMainWindow:self object:cluster]];			break;		case kQQClusterMessageAutoEject:		case kQQClusterMessageBlock:			[[TimerTaskManager sharedManager] removeTasks:cluster];			break;		case kQQClusterMessageDisplayCount:		case kQQClusterMessageAcceptNoPrompt:			[m_messageQueue setExcludeClusterInUnread:[cluster internalId]];			[[TimerTaskManager sharedManager] removeTasks:cluster];			[m_clusterOutline reloadItem:cluster];			break;	}}- (void)saveImportantInfo {	// get system perference	PreferenceCache* cache = [PreferenceCache cache:[m_me QQ]];		// only save these when current tab item is Main item	if([[[m_tabMain selectedTabViewItem] label] isEqualToString:_kTabViewItemMain]) {		// save frame, include toolbar size		[cache setWnidowFrame:[[self window] frame]];				// save toolbar visible state		[cache setHideToolbar:![m_toolbar isVisible]];	}	// save frame	[cache sync];		// save group	[m_groupManager saveGroups];		// save face	[m_faceManager save];		// save history	[m_historyManager save];}- (void)refreshDockIcon {	PreferenceCache* cache = [PreferenceCache cache:[m_me QQ]];	NSImage* icon = [ImageTool iconWithMessageCount:[m_me isMM]											 status:[m_me status]											 unread:[LumaQQApplication pendingMessageCount]										 showUnread:[cache displayUnreadCountOnDock]										 hasMessage:([m_messageQueue pendingMessageCount] > 0)];	[NSApp setApplicationIconImage:icon];	if(m_autoHided) {		icon = [ImageTool iconWithMessageCount:[m_me isMM]										status:[m_me status]										unread:[m_messageQueue pendingMessageCount]									showUnread:[cache displayUnreadCountOnDock]									hasMessage:([m_messageQueue pendingMessageCount] > 0)];		[m_ivSide setImage:icon];	}}- (BOOL)registerExtractMessageHotKey {	PreferenceCache* cache = [PreferenceCache cache:[m_me QQ]];	HotKey* hotKey = [HotKey hotKeyWithOwner:[m_me QQ]								   string:[cache extractMessageHotKey]								   target:self								   action:@selector(onExtractMessage:)];	return [[HotKeyManager sharedHotKeyManager] registerHotKey:hotKey];}- (BOOL)registerScreenscrapHotKey {	PreferenceCache* cache = [PreferenceCache cache:[m_me QQ]];	HotKey* hotKey = [HotKey hotKeyWithOwner:[m_me QQ]									  string:[cache screenscrapHotKey]									  target:self									  action:@selector(onScreenscrap:)];	return [[HotKeyManager sharedHotKeyManager] registerHotKey:hotKey];}- (void)removeUserFromOutline:(User*)user {	Group* g = [m_groupManager group:[user groupIndex]];	if([m_groupManager removeUser:user] && g) {		[m_userOutline reloadItem:g reloadChildren:YES];	}}- (void)restoreLastFrameOrigin {	// load file	PreferenceCache* cache = [PreferenceCache cache:[m_me QQ]];		NSRect frame = [cache windowFrame];	if(frame.origin.x != 0)		[[self window] setFrameTopLeftPoint:NSMakePoint(frame.origin.x, frame.origin.y + frame.size.height)];}- (void)restoreLastFrame {	// load file	PreferenceCache* cache = [PreferenceCache cache:[m_me QQ]];		NSRect frame = [cache windowFrame];	if(frame.origin.x != 0)		[[self window] setFrame:frame display:YES];}- (void)shutdownNetwork {		// play sound	PreferenceCache* cache = [PreferenceCache cache:[m_me QQ]];	if([cache isEnableSound])		[[SoundHelper shared] playSound:kLQSoundLogout QQ:[m_me QQ]];		// growl	if([[m_client user] logged])		[[GrowlApplicationBridge growlDelegate] logout:m_me];		// logout	[m_client logout];		// shutdown network	[m_client shutdownNetworkLayer];}- (void)restartNetwork {	// show window, start animate, set hint	[m_tabMain selectTabViewItemAtIndex:0];	[self setToolbarVisibility:NO];	[[self window] setShowsToolbarButton:NO];	[[self window] setTitle:[NSString stringWithFormat:@"%d", [m_me QQ]]];	[m_piLogin startAnimation:self];	[m_txtHint setStringValue:L(@"LQHintInitialize", @"MainWindow")];		// create qq client object	if(m_client) {		[m_client release];		[m_client dealloc];		m_client = nil;	}	m_client = [[QQClient alloc] initWithConnection:m_connection];	[m_client setDelegate:self];		// add self as a qq listener	[m_client addQQListener:m_mainQQListener];		// create qq user	QQUser* user = [[QQUser alloc] initWithQQ:[m_me QQ] passwordKey:m_password passwordMd5:m_passwordMd5];	[user setLoginStatus:m_loginStatus];	[m_client setQQUser:user];	[user release];		// re-activate qbar plugin because we created a new qq client	id<QBarPlugin> plugin = [m_qbarView plugin];	if(plugin)		[plugin pluginReactivated];		// start network layer	[m_client startNetworkLayer];}- (void)returnToLogin {		// reset control status	[m_piLogin stopAnimation:self];		// close main window, reopen login window	[self close];	LoginWindowController* loginWindowController = [[LoginWindowController alloc] init];	[loginWindowController showWindow:self];	[[loginWindowController window] center];}- (void)refreshStatusUI {	[m_me setStatus:[[m_client user] status]];	[(HeadControl*)[m_headItem view] setObjectValue:m_me];	PreferenceCache* cache = [PreferenceCache cache:[m

⌨️ 快捷键说明

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