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

📄 mainwindowcontroller.mm

📁 lumaqq
💻 MM
📖 第 1 页 / 共 5 页
字号:
		[[cluster organizationsDummy] setOperationSuffix:L(@"LQOperationSuffixGettInfo", @"MainWindow")];		[[cluster organizationsDummy] setRequested:YES];		[m_client getClusterInfo:[cluster internalId]];		[m_client updateOrganization:[cluster internalId]];		[m_clusterOutline reloadItem:[cluster organizationsDummy]];	}}- (IBAction)onEditOrganization:(id)sender {	}- (IBAction)onCreateSubject:(id)sender {	// find permanent cluster	Cluster* cluster = nil;	id obj = [m_clusterOutline itemAtRow:[m_clusterOutline selectedRow]];	if([obj isMemberOfClass:[Cluster class]])		cluster = (Cluster*)obj;	else if([obj isMemberOfClass:[Dummy class]])		cluster = [m_clusterDataSource outlineView:m_clusterOutline parentOfItem:obj];		// open window	if(cluster) {		// get cluster info if no member in it		if([cluster memberCount] == 0)			[m_client getClusterInfo:[cluster internalId]];				CreateSubjectWindowController* csw = [[CreateSubjectWindowController alloc] initWithTempCluster:nil																						  parentCluster:cluster																							 mainWindow:self];		[csw showWindow:self];	}}- (IBAction)onCreateDialog:(id)sender {	CreateDialogWindowController* cdw = [[CreateDialogWindowController alloc] initWithTempCluster:nil																					parentCluster:nil																					   mainWindow:self];	[cdw showWindow:self];}- (IBAction)onDoubleClick:(id)sender {		if(sender == m_userOutline) {		int row = [m_userOutline selectedRow];		if(row == -1)			return;		id obj = [m_userOutline itemAtRow:row];		if([obj isMemberOfClass:[User class]]) {			User* user = (User*)obj;			[m_windowRegistry showNormalIMWindowOrTab:user mainWindow:self];		} else if([obj isMemberOfClass:[Group class]]) {			if([m_userOutline isItemExpanded:obj])				[m_userOutline collapseItem:obj];			else				[m_userOutline expandItem:obj];		}	} else if(sender == m_clusterOutline) {		int row = [m_clusterOutline selectedRow];		if(row == -1)			return;		id obj = [m_clusterOutline itemAtRow:row];		if([obj isMemberOfClass:[Cluster class]]) {			Cluster* cluster = (Cluster*)obj;			[m_windowRegistry showClusterIMWindowOrTab:cluster mainWindow:self];		} else if(![obj isMemberOfClass:[User class]]) {			if([m_clusterOutline isItemExpanded:obj])				[m_clusterOutline collapseItem:obj];			else				[m_clusterOutline expandItem:obj];		}	} else if(sender == m_recentTable) {		int row = [m_recentTable selectedRow];		if(row == -1)			return;		id obj = [m_recentDataSource tableView:m_recentTable					 objectValueForTableColumn:[m_recentTable tableColumnWithIdentifier:@"0"]										   row:row];		if([obj isMemberOfClass:[User class]])			[m_windowRegistry showNormalIMWindowOrTab:(User*)obj mainWindow:self];		else if([obj isMemberOfClass:[Cluster class]])			[m_windowRegistry showClusterIMWindowOrTab:(Cluster*)obj mainWindow:self];		else if([obj isMemberOfClass:[Mobile class]])			[m_windowRegistry showMobileIMWindowOrTabByMobile:(Mobile*)obj mainWindow:self];	} else if(sender == m_mobileTable) {		int row = [m_mobileTable selectedRow];		if(row == -1)			return;		[self onSendSMSToMobile:m_mobileTable];	}}- (IBAction)onApplyForAllClusters:(id)sender {	[sender setState:(![sender state])];		if([sender state] == NSOnState) {		// get selected cluster or parent cluster		int selectedRow = [m_clusterOutline selectedRow];		id object = selectedRow == -1 ? nil : [m_clusterOutline itemAtRow:selectedRow];				Cluster* cluster = nil;		if([object isMemberOfClass:[Cluster class]])			cluster = (Cluster*)object;		else			cluster = [self parentClusterOf:object];				char setting = [cluster messageSetting];		NSEnumerator* e = [[m_groupManager allClusters] objectEnumerator];		while(Cluster* cluster = [e nextObject]) {			[cluster setMessageSetting:setting];		}	}}- (IBAction)onClusterMessageSetting:(id)sender {	// get selected cluster or parent cluster	int selectedRow = [m_clusterOutline selectedRow];	id object = selectedRow == -1 ? nil : [m_clusterOutline itemAtRow:selectedRow];		Cluster* cluster = nil;	if([object isMemberOfClass:[Cluster class]])		cluster = (Cluster*)object;	else		cluster = [self parentClusterOf:object];		// change setting	char newSetting = 0;	switch([sender tag]) {		case _kMenuItemMessageSettingAccept:			newSetting = kQQClusterMessageAccept;			break;		case _kMenuItemMessageSettingAcceptNoPrompt:			newSetting = kQQClusterMessageAcceptNoPrompt;			break;		case _kMenuItemMessageSettingAutoEject:			newSetting = kQQClusterMessageAutoEject;			break;		case _kMenuItemMessageSettingBlock:			newSetting = kQQClusterMessageBlock;			break;		case _kMenuItemMessageSettingDisplayCount:			newSetting = kQQClusterMessageDisplayCount;			break;	}		// check apply for all state	NSMenuItem* item = [m_messageSettingMenu itemWithTag:_kMenuItemApplyForAllClusters];	if([item state] == NSOnState) {			NSEnumerator* e = [[m_groupManager allClusters] objectEnumerator];		while(Cluster* c = [e nextObject]) 			[self changeClusterMessageSetting:c newMessageSetting:newSetting];	} else		[self changeClusterMessageSetting:cluster newMessageSetting:newSetting];		// because we save message setting in groups.plist, so we set dirty flag in group manager	[m_groupManager setDirty:YES];		// refresh dock icon	[self refreshDockIcon];}- (IBAction)onExtractMessage:(id)sender {	if(!m_enableHotKey)		return;		BOOL bExtracted = NO;	NSArray* mainWindows = [WindowRegistry mainWindowArray];	int count = [mainWindows count];	MainWindowController* main = nil;	for(int i = -1; i < count; i++) {		// if extracted, refresh dock icon of that main window		// but we need refresh it again if the dest main window isn't me, to reflect correct		// info in dock icon of mine		if(bExtracted) {			[main refreshDockIcon];			if(main != self)				[self refreshDockIcon];			break;		}					// get main window controller, first we check ourselves, them others		if(i == -1)			main = self;		else {			main = [mainWindows objectAtIndex:i];			if(main == self)				continue;		}							// get message		while([[main messageQueue] pendingMessageCount] > 0 && !bExtracted) {			InPacket* packet = [[main messageQueue] getMessage:NO];			if([packet isMemberOfClass:[ReceivedIMPacket class]]) {				ReceivedIMPacketHeader* header = [(ReceivedIMPacket*)packet imHeader];				switch([header type]) {					case kQQIMTypeFriend:					case kQQIMTypeFriendEx:					case kQQIMTypeStranger:					case kQQIMTypeStrangerEx:						User* user = [[main groupManager] user:[header sender]];						if(user) {							// open message window							NSWindowController* winController = [m_windowRegistry showNormalIMWindowOrTab:user mainWindow:main];														// activate im window							[NSApp activateIgnoringOtherApps:YES];							[[winController window] orderFront:main];							[[winController window] makeKeyWindow];															bExtracted = YES;						}						break;					case kQQIMTypeTempSession:						user = [[main groupManager] user:[header sender]];						if(user) {							// open message window							NSWindowController* winController = [m_windowRegistry showTempSessionIMWindowOrTab:user mainWindow:main];														// activate im window							[NSApp activateIgnoringOtherApps:YES];							[[winController window] orderFront:main];							[[winController window] makeKeyWindow];															bExtracted = YES;						}						break;					case kQQIMTypeMobileQQ:						user = [[main groupManager] user:[header sender]];						if(user) {							// open message window							NSWindowController* winController = [m_windowRegistry showMobileIMWindowOrTab:user mainWindow:main];														// activate im window							[NSApp activateIgnoringOtherApps:YES];							[[winController window] orderFront:main];							[[winController window] makeKeyWindow];															bExtracted = YES;						}						break;					case kQQIMTypeMobileQQ2:						MobileIM* mobileIM = [(ReceivedIMPacket*)packet mobileIM];						Mobile* mobile = [[main groupManager] mobile:[mobileIM mobile]];						if(mobile) {							// open message window							NSWindowController* winController = [m_windowRegistry showMobileIMWindowOrTabByMobile:mobile mainWindow:main];														// activate im window							[NSApp activateIgnoringOtherApps:YES];							[[winController window] orderFront:main];							[[winController window] makeKeyWindow];															bExtracted = YES;						}						break;					case kQQIMTypeCluster:					case kQQIMTypeTempCluster:					case kQQIMTypeClusterUnknown:												// open message window						Cluster* cluster = [[main groupManager] cluster:[header sender]];						if(cluster) {							NSWindowController* winController = [m_windowRegistry showClusterIMWindowOrTab:cluster mainWindow:main];														// activate im window							[NSApp activateIgnoringOtherApps:YES];							[[winController window] orderFront:main];							[[winController window] makeKeyWindow];														bExtracted = YES;						} 						break;					case kQQIMTypeRequestJoinCluster:					case kQQIMTypeApprovedJoinCluster:					case kQQIMTypeRejectedJoinCluster:					case kQQIMTypeClusterCreated:					case kQQIMTypeClusterRoleChanged:					case kQQIMTypeJoinedCluster:					case kQQIMTypeExitedCluster:						[[main messageQueue] getMessage:YES];						NSWindowController* caw = [[main windowRegistry] showClusterAuthWindow:packet mainWindow:main];												// activate im window						[NSApp activateIgnoringOtherApps:YES];						[[caw window] orderFront:main];						[[caw window] makeKeyWindow];						bExtracted = YES;						break;					default:						// no one will accept this message, remove it						[[main messageQueue] getMessage:YES];						break;				}			} else if([packet isMemberOfClass:[SystemNotificationPacket class]]) {				[[main messageQueue] getMessage:YES];				NSWindowController* uaw = [[main windowRegistry] showUserAuthWindow:packet mainWindow:main];								// activate im window				[NSApp activateIgnoringOtherApps:YES];				[[uaw window] orderFront:main];				[[uaw window] makeKeyWindow];				bExtracted = YES;			}		} // while	} // for		// finally, if no message extracted, show me	if(!bExtracted) {		// no message now, make main window front		// if I am not key window, active me		// if I am, active others		if([[self window] isKeyWindow]) {			NSEnumerator* e = [WindowRegistry mainWindowEnumerator];			while(MainWindowController* main = [e nextObject]) {				if(main != self && ![main autoHided]) {					[[main window] orderFront:self];					[[main window] makeKeyWindow];					break;				}			}		} else {			[NSApp activateIgnoringOtherApps:YES];			if(!m_autoHided) {				[[self window] orderFront:self];				[[self window] makeKeyWindow];			}		}	} }- (IBAction)onPreference:(id)sender {	[WindowRegistry showPreferenceWindow:self];}- (IBAction)onRemoveFromRecentContact:(id)sender {	int row = [m_recentTable selectedRow];	if(row == -1)		return;		[m_groupManager removeRecentContactAtIndex:row];	[m_recentTable reloadData];}- (IBAction)onClearAllRecentContacts:(id)sender {	[m_groupManager removeAllRecentContacts];	[m_recentTable reloadData];}- (IBAction)onOpenFaceManager:(id)sender {	[m_windowRegistry showFaceManagerWindow:[m_me QQ] mainWindow:self];}- (IBAction)onSystemMessageList:(id)sender {	if([m_messageQueue systemMessageCount] > 0) {		[m_messageQueue moveNextSystemMessageToFirst];		[self onExtractMessage:self];	} else		[WindowRegistry showSystemMessageWindow:self];}- (IBAction)onNewGroup:(id)sender {	m_sheetType = _kSheetInputNewGroup;	[m_txtInputTitle setStringValue:L(@"LQHintInputGroupName", @"MainWindow")];	[m_txtInput setStringValue:kStringEmpty];	[NSApp beginSheet:m_inputWindow	   modalForWindow:[self window]		modalDelegate:self	   didEndSelector:@selector(inputSheetDidEnd:returnCode:contextInfo:)		  contextInfo:nil];}- (IBAction)onRenameGroup:(id)sender {	Group* group = [m_userOutline itemAtRow:[m_userOutline selectedRow]];	int index = [m_groupManager indexOfGroup:group];	if(index == 0) {		[AlertTool showWarning:[self window] message:L(@"LQWarningCantRenameDefaultFriendlyGroup", @"MainWindow")];	} else if(![group isFriendly]) {		[AlertTool showWarning:[self window] message:L(@"LQWarningCantRenameUnfriendlyGroup", @"MainWindow")];	} else {		m_sheetType = _kSheetInputRenameGroup;		[m_txtInputTitle setStringValue:L(@"LQHintInputGroupName", @"MainWindow")];		[m_txtInput setStringValue:kStringEmpty];		[NSApp beginSheet:m_inputWindow		   modalForWindow:[self window]			modalDelegate:self		   didEndSelector:@selector(inputSheetDidEnd:returnCode:contextInfo:)			  contextInfo:nil];	}}- (IBAction)onDeleteGroup:(id)sender {	Group* group = [m_userOutline itemAtRow:[m_userOutline selectedRow]];	if(![group isFriendly]) {		[AlertTool showWarning:[self window]					   message:L(@"LQWarningCantDeleteUnfriendlyGroup", @"MainWindow")];	} else if([m_groupManager indexOfGroup:group] == 0) {		[AlertTool showWarning:[self window]					   message:L(@"LQWarningCantDeleteDefaultFriendlyGroup", @"MainWindow")];	} else if([group userCount] == 0) {		[m_groupManager removeGroup:group];		[m_userOutline reloadData];	} else {		[self showGroupSelectWindow];	}}- (IBAction)onLogoutAndClose:(id)sender {	m_ignoreHideOnClose = YES;	if([self windowShouldClose:self])		[self close];}- (IBAction)onGroupSelectOK:(id)sender {	m_moveFriendsInDeleteGroupTo = [m_cbGroup indexOfSelectedItem];	[NSApp endSheet:m_groupSelectWindow returnCode:YES];	[m_groupSelectWindow orderOut:self];}- (IBAction)onGroupSelectCancel:(id)sender {	[NSApp endSheet:m_groupSelectWindow returnCode:NO];	[m_groupSelectWindow orderOut:self];

⌨️ 快捷键说明

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