📄 mainwindowcontroller.mm
字号:
} 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 + -