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

📄 mainwindowcontroller.mm

📁 lumaqq
💻 MM
📖 第 1 页 / 共 5 页
字号:
		} else			[m_client changeStatus:kQQStatusMute];	}}- (IBAction)onQMe:(id)sender {	if([[m_client user] status] != kQQStatusQMe) {		// set flag		m_changingStatus = YES;				// save status message		[[PreferenceCache cache:[m_me QQ]] setStatusMessage:L(@"LQStatusQMe")];				// change status or login		if([[m_client user] status] == kQQStatusOffline) {			m_loginStatus = kQQStatusQMe;			[self restartNetwork];		} else			[m_client changeStatus:kQQStatusQMe];	}}- (IBAction)onMyInfo:(id)sender {	[m_windowRegistry showUserInfoWindow:m_me mainWindow:self];}- (IBAction)onStatusHistory:(id)sender {	NSString* title = [sender title];	if(title) {		// save status message		PreferenceCache* cache = [PreferenceCache cache:[m_me QQ]];		[cache setStatusMessage:title];				// set status message		[m_client changeStatusMessage:title];	}}- (IBAction)onChangeStatusMessage:(id)sender {	m_sheetType = _kSheetInputStatusMessage;	[m_txtInputTitle setStringValue:L(@"LQHintInputStatusMessage", @"MainWindow")];	[m_txtInput setStringValue:kStringEmpty];	[NSApp beginSheet:m_inputWindow	   modalForWindow:[self window]		modalDelegate:self	   didEndSelector:@selector(inputSheetDidEnd:returnCode:contextInfo:)		  contextInfo:nil];}- (IBAction)onClearStatusHistory:(id)sender {	[[PreferenceCache cache:[m_me QQ]] clearStatusHistory];}- (IBAction)onRealName:(id)sender {	if([m_realNameItem state]) {		m_searchFlag ^= kFlagSearchByName;		[m_realNameItem setState:NSOffState];	} else {		m_searchFlag |= kFlagSearchByName;		[m_realNameItem setState:NSOnState];	}	[[m_searchField cell] setSearchMenuTemplate:m_searchMenu];		[self onFilter:m_searchField];}- (IBAction)onNickName:(id)sender {	if([m_nickNameItem state]) {		m_searchFlag ^= kFlagSearchByNick;		[m_nickNameItem setState:NSOffState];	} else {		m_searchFlag |= kFlagSearchByNick;		[m_nickNameItem setState:NSOnState];	}	[[m_searchField cell] setSearchMenuTemplate:m_searchMenu];		[self onFilter:m_searchField];}- (IBAction)onQQNumber:(id)sender {	if([m_qqItem state]) {		m_searchFlag ^= kFlagSearchByQQ;		[m_qqItem setState:NSOffState];	} else {		m_searchFlag |= kFlagSearchByQQ;		[m_qqItem setState:NSOnState];	}		[[m_searchField cell] setSearchMenuTemplate:m_searchMenu];		[self onFilter:m_searchField];}- (IBAction)onSignature:(id)sender {	if([m_signatureItem state]) {		m_searchFlag ^= kFlagSearchBySignature;		[m_signatureItem setState:NSOffState];	} else {		m_searchFlag |= kFlagSearchBySignature;		[m_signatureItem setState:NSOnState];	}			[[m_searchField cell] setSearchMenuTemplate:m_searchMenu];		[self onFilter:m_searchField];}- (IBAction)onFilter:(id)sender {	// set search criteria	NSString* text = [(NSControl*)sender stringValue];	if(text == nil || [text isEmpty]) {		// we think the filtering is end		if(m_filtering) {			m_filtering = NO;			[m_userDataSource rollbackShowOnlineOnlyOption];			[m_userOutline restoreExpandedStatus];			[m_tabGroup selectTabViewItemAtIndex:m_savedOutlineIndex];		}				// clear search criteria		[m_userDataSource setSearchMode:kFlagSearchNone];	} else {		// if not filtering, save expand status and expand all		// also, forbid show online only temporarily		if(!m_filtering) {			m_filtering = YES;			m_savedOutlineIndex = [m_tabGroup indexOfTabViewItem:[m_tabGroup selectedTabViewItem]];			[m_userDataSource saveShowOnlineOnlyOption];			[m_userDataSource setShowOnlineOnly:NO];			[m_userOutline saveExpandedStatus];			[m_userOutline expandAll];			[m_tabGroup selectTabViewItemAtIndex:0];		}				// set search criteria		[m_userDataSource setSearchMode:m_searchFlag];		[m_userDataSource setSearchText:text];	}		// refresh outline	[m_userOutline reloadData];}- (IBAction)onClearFilter:(id)sender {	// clear search field and reset search mode	[m_searchField setStringValue:kStringEmpty];	[m_userDataSource setSearchMode:kFlagSearchNone];	[m_userDataSource setSearchText:kStringEmpty];		// we think the filtering is end	if(m_filtering) {		m_filtering = NO;		[m_userDataSource rollbackShowOnlineOnlyOption];		[m_userOutline restoreExpandedStatus];		[m_tabGroup selectTabViewItemAtIndex:m_savedOutlineIndex];	}	[m_userOutline reloadData];}- (IBAction)onSearch:(id)sender {	// get start page	NSString* label = [[m_tabGroup selectedTabViewItem] label];	NSString* startPage = kTabViewItemSearchWhat;	if([label isEqualToString:kTabViewItemFriends])		startPage = kTabViewItemSearchUser;	else if([label isEqualToString:kTabViewItemClusters])		startPage = kTabViewItemSearchCluster;		// show search wizard	[m_windowRegistry showSearchWizard:[m_me QQ]							mainWindow:self 						pageIdentifier:startPage];}- (IBAction)onActionButton:(id)sender {	// get head bound	NSRect bound = [sender bounds];			// calculate	bound = [sender convertRect:bound toView:nil];		// create a mouse event and popup menu	NSEvent* event = [NSEvent mouseEventWithType:NSLeftMouseDown										location:bound.origin								   modifierFlags:NSLeftMouseDownMask									   timestamp:0									windowNumber:[[self window] windowNumber]										 context:[[self window] graphicsContext]									 eventNumber:0									  clickCount:0										pressure:0];	[NSMenu popUpContextMenu:m_actionMenu				   withEvent:event					 forView:sender];}- (IBAction)onRefreshFriendList:(id)sender {	if(![self isRefreshingFriendList]) {		[self setRefreshingFriendList:YES];		[[TimerTaskManager sharedManager] clear];		[m_client downloadGroupNames];	}}- (IBAction)onRefreshFriendRemark:(id)sender {	[m_jobController startJob:[[[GetRemarkJob alloc] init] autorelease]];}- (IBAction)onRefreshFriendSignature:(id)sender {	[m_jobController startJob:[[[GetSignatureJob alloc] init] autorelease]];}- (IBAction)onDisplaySetting:(id)sender {	// set proper size of drawer	[m_displaySettingDrawer setContentSize:[m_displaySettingDrawer maxContentSize]];		// show it or close it	[m_displaySettingDrawer toggle:self];}- (IBAction)onDisplaySettingOK:(id)sender {	// set flag, actual setting saving is done in delegate method	m_displaySettingShouldChange = YES;		[m_displaySettingDrawer toggle:self];}- (IBAction)onDisplaySettingCancel:(id)sender {	m_displaySettingShouldChange = NO;	[m_displaySettingDrawer toggle:self];}- (IBAction)onChat:(id)sender {	switch([sender tag]) {		case _kMenuItemChatInCluster:			id obj = [m_clusterOutline itemAtRow:[m_clusterOutline selectedRow]];			if([obj isMemberOfClass:[Cluster class]])				[m_windowRegistry showClusterIMWindowOrTab:(Cluster*)obj mainWindow:self];			else if([obj isMemberOfClass:[User class]]) {				//				// check if it's my friend, if it is, open normal im window, if not, open temp session im window				//								// get user and group				User* user = (User*)obj;				Group* g = [m_groupManager group:[user groupIndex]];								// g is null, then open temp session im window				if(g)					[m_windowRegistry showNormalIMWindowOrTab:user mainWindow:self];				else					[m_windowRegistry showTempSessionIMWindowOrTab:user mainWindow:self];			}			break;		case _kMenuItemChatWithUser:			User* user = [m_userOutline itemAtRow:[m_userOutline selectedRow]];			[m_windowRegistry showNormalIMWindowOrTab:user mainWindow:self];			break;	}}- (IBAction)onUserInfo:(id)sender {	User* user = [m_userOutline itemAtRow:[m_userOutline selectedRow]];	[m_windowRegistry showUserInfoWindow:user mainWindow:self];}- (IBAction)onAddUser:(id)sender {	[m_windowRegistry showSearchWizard:[m_me QQ]							mainWindow:self 						pageIdentifier:kTabViewItemSearchUser];}- (IBAction)onQuicklyAddUser:(id)sender {	m_sheetType = _kSheetInputQQ;	[m_txtInputTitle setStringValue:L(@"LQHintInputQQ", @"MainWindow")];	[m_txtInput setStringValue:kStringEmpty];	[NSApp beginSheet:m_inputWindow	   modalForWindow:[self window]		modalDelegate:self	   didEndSelector:@selector(inputSheetDidEnd:returnCode:contextInfo:)		  contextInfo:nil];}- (IBAction)onModifyRemarkName:(id)sender {	m_sheetType = _kSheetInputRemarkName;	[m_txtInputTitle setStringValue:L(@"LQHintInputRemarkName", @"MainWindow")];	[m_txtInput setStringValue:kStringEmpty];	[NSApp beginSheet:m_inputWindow	   modalForWindow:[self window]		modalDelegate:self	   didEndSelector:@selector(inputSheetDidEnd:returnCode:contextInfo:)		  contextInfo:nil];}- (IBAction)onDeleteUser:(id)sender {	User* user = [m_userOutline itemAtRow:[m_userOutline selectedRow]];	[self deleteUser:user];}- (IBAction)onMoveToBlacklist:(id)sender {	User* user = [m_userOutline itemAtRow:[m_userOutline selectedRow]];	[self moveUserToBlacklist:user];}- (IBAction)onInputOK:(id)sender {	// check qq input	if((m_sheetType == _kSheetInputQQ || m_sheetType == _kSheetInputQQForTempSession) && [[m_txtInput stringValue] intValue] == 0) {		[m_txtInputTitle setStringValue:L(@"LQHintErrorQQ", @"MainWindow")];	} else {		// close input sheet		[NSApp endSheet:m_inputWindow returnCode:YES];		[m_inputWindow orderOut:self];	}}- (IBAction)onInputCancel:(id)sender {	// close input sheet	[NSApp endSheet:m_inputWindow returnCode:NO];	[m_inputWindow orderOut:self];}- (IBAction)onViewInfo:(id)sender {	id object = [m_clusterOutline itemAtRow:[m_clusterOutline selectedRow]];	if([object isMemberOfClass:[User class]]) {		Cluster* cluster = [self parentClusterOf:object];		[m_windowRegistry showUserInfoWindow:(User*)object cluster:cluster mainWindow:self];	} else if([object isMemberOfClass:[Cluster class]]) {		Cluster* c = (Cluster*)object;		if([c permanent])			[m_windowRegistry showClusterInfoWindow:c mainWindow:self];		else if([c isSubject]) { 			Cluster* parent = [m_groupManager cluster:[c parentId]];			if(parent) {				if([parent memberCount] == 0)					[m_client getClusterInfo:[parent internalId]];				if([c memberCount] == 0)					[m_client getSubjectInfo:[c internalId] parent:[parent internalId]];								[m_windowRegistry showTempClusterInfoWindow:c													 parent:parent												 mainWindow:self];			}		} else if([c isDialog]) {			if([c memberCount] == 0)				[m_client getDialogInfo:[c internalId]];						[m_windowRegistry showTempClusterInfoWindow:c												 parent:nil											 mainWindow:self];		}	}}- (IBAction)onAddAsFriend:(id)sender {	User* user = [m_clusterOutline itemAtRow:[m_clusterOutline selectedRow]];	if(user) {		[m_windowRegistry showAddFriendWindow:[user QQ]										 head:[user head]										 nick:[user nick]								   mainWindow:self];	}}- (IBAction)onTempSession:(id)sender {	User* user = nil;	if([sender tag] == _kMenuItemTempSessionToFriend) {		int row = [m_userOutline selectedRow];		id obj = [m_userOutline itemAtRow:row];		if([obj isMemberOfClass:[User class]])			[m_windowRegistry showTempSessionIMWindowOrTab:obj mainWindow:self];		else {			m_sheetType = _kSheetInputQQForTempSession;			[m_txtInputTitle setStringValue:L(@"LQHintInputQQForTempSession", @"MainWindow")];			[m_txtInput setStringValue:kStringEmpty];			[NSApp beginSheet:m_inputWindow			   modalForWindow:[self window]				modalDelegate:self			   didEndSelector:@selector(inputSheetDidEnd:returnCode:contextInfo:)				  contextInfo:nil];		}	} else if([sender tag] == _kMenuItemTempSession) {		int row = [m_clusterOutline selectedRow];		user = [m_clusterOutline itemAtRow:row];		[m_windowRegistry showTempSessionIMWindowOrTab:user mainWindow:self];	}}- (IBAction)onAddCluster:(id)sender {	[m_windowRegistry showSearchWizard:[m_me QQ]							mainWindow:self 						pageIdentifier:kTabViewItemSearchCluster];}- (IBAction)onExitCluster:(id)sender {	int row = [m_clusterOutline selectedRow];	Cluster* cluster = [m_clusterOutline itemAtRow:row];	if(cluster) {		[cluster setOperationSuffix:L(@"LQOperationSuffixExitCluster", @"MainWindow")];		[m_clusterOutline reloadItem:cluster];		if([cluster permanent])			[m_client exitCluster:[cluster internalId]];		else if([cluster isSubject]) {			Cluster* parent = [m_groupManager cluster:[cluster parentId]];			if(parent)				[m_client exitSubject:[cluster internalId] parent:[parent internalId]];		} else if([cluster isDialog])			[m_client exitDialog:[cluster internalId]];	}}- (IBAction)onUpdateOrganization:(id)sender {	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];		// update	if(cluster) {

⌨️ 快捷键说明

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