📄 clusterinfowindowcontroller.mm
字号:
- (BOOL)needExecuteWorkflowUnit:(NSString*)unitName {
if([_kWorkflowUnitAddMember isEqualToString:unitName])
return [m_newMembers count] > 0;
else if([_kWorkflowUnitRemoveMember isEqualToString:unitName])
return [m_oldMembers count] > 0;
else
return YES;
}
#pragma mark -
#pragma mark qq event handler
- (BOOL)handleQQEvent:(QQNotification*)event {
BOOL ret = NO;
switch([event eventId]) {
case kQQEventClusterGetMessageSettingOK:
ret = [self handleGetMessageSettingOK:event];
break;
case kQQEventClusterGetLastTalkTimeOK:
ret = [self handleGetLastTalkTimeOK:event];
break;
case kQQEventClusterGetChannelSettingOK:
ret = [self handleGetChannelSettingOK:event];
break;
case kQQEventClusterGetInfoOK:
ret = [self handleGetClusterInfoOK:event];
break;
case kQQEventClusterGetMemberInfoOK:
ret = [self handleGetMemberInfoOK:event];
break;
case kQQEventClusterGetCardOK:
ret = [self handleGetCardOK:event];
break;
case kQQEventClusterModifyMessageSettingOK:
ret = [self handleModifyMessageSettingOK:event];
break;
case kQQEventClusterModifyCardOK:
ret = [self handleModifyCardOK:event];
break;
case kQQEventClusterModifyInfoOK:
ret = [self handleModifyClusterInfoOK:event];
break;
case kQQEventClusterModifyChannelSettingOK:
ret = [self handleModifyChannelSettingOK:event];
break;
case kQQEventClusterModifyMemberOK:
ret = [self handleModifyMemberOK:event];
break;
}
return ret;
}
- (BOOL)handleGetMessageSettingOK:(QQNotification*)event {
ClusterCommandReplyPacket* packet = [event object];
NSEnumerator* e = [[packet messageSettings] objectEnumerator];
while(ClusterMessageSetting* setting = [e nextObject]) {
// refresh ui
if([setting internalId] == [m_cluster internalId]) {
if([setting messageSetting] == kQQClusterMessageClearServerSetting)
[m_chkSaveInServer setState:NSOffState];
else {
[m_chkSaveInServer setState:NSOnState];
[m_matrixMessage selectCellWithTag:[setting messageSetting]];
}
}
}
return YES;
}
- (BOOL)handleGetLastTalkTimeOK:(QQNotification*)event {
ClusterCommandReplyPacket* packet = [event object];
NSEnumerator* e = [[packet lastTalkTimes] objectEnumerator];
while(LastTalkTime* time = [e nextObject]) {
User* user = [[m_mainWindowController groupManager] user:[time QQ]];
if(user)
[user setLastTalkTime:[m_cluster internalId] time:([time days] * 24 * 3600)];
}
// reload
[m_memberTable reloadData];
return YES;
}
- (BOOL)handleGetChannelSettingOK:(QQNotification*)event {
ClusterCommandReplyPacket* packet = [event object];
[m_cluster setNotificationRight:[packet notificationRight]];
[m_matrixNotification selectCellWithTag:[packet notificationRight]];
return YES;
}
- (BOOL)handleGetClusterInfoOK:(QQNotification*)event {
[m_members removeAllObjects];
[m_members addObjectsFromArray:[m_cluster members]];
[self reloadInfo];
// refresh ui
if([self isSuperUser]) {
[m_btnModify setHidden:NO];
[m_btnRemove setHidden:NO];
[m_btnSetMembers setHidden:NO];
[m_btnCancel setTitle:L(@"LQCancel")];
[m_btnApply setTitle:L(@"LQApply")];
} else {
[m_btnModify setHidden:YES];
[m_btnRemove setHidden:YES];
[m_btnSetMembers setHidden:YES];
[m_btnCancel setTitle:L(@"LQUpdate")];
[m_btnApply setTitle:L(@"LQClose")];
}
return NO;
}
- (BOOL)handleGetMemberInfoOK:(QQNotification*)event {
[self reloadInfo];
return NO;
}
- (BOOL)handleGetCardOK:(QQNotification*)event {
ClusterCommandReplyPacket* packet = [event object];
[[m_mainWindowController me] setNameCard:[m_cluster internalId] card:[packet clusterNameCard]];
[self reloadInfo];
return YES;
}
- (BOOL)handleModifyMessageSettingOK:(QQNotification*)event {
[m_cluster setMessageSetting:[m_matrixMessage selectedTag]];
return YES;
}
- (BOOL)handleModifyCardOK:(QQNotification*)event {
return NO;
}
- (BOOL)handleModifyClusterInfoOK:(QQNotification*)event {
return YES;
}
- (BOOL)handleModifyChannelSettingOK:(QQNotification*)event {
return YES;
}
- (BOOL)handleModifyMemberOK:(QQNotification*)event {
return YES;
}
#pragma mark -
#pragma mark table datasource
- (int)numberOfRowsInTableView:(NSTableView *)aTableView {
return [m_members count];
}
- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex {
User* user = [m_members objectAtIndex:rowIndex];
switch([[aTableColumn identifier] intValue]) {
case 0:
if([user isCreator:m_cluster])
return [NSImage imageNamed:kImageClusterCreator];
else if([user isAdmin:m_cluster])
return [NSImage imageNamed:kImageClusterAdmin];
else if([user isStockholder:m_cluster])
return [NSImage imageNamed:kImageClusterStockholder];
else
return nil;
return nil;
case 1:
return user;
case 2:
return [user nick];
case 3:
return [user isMM] ? L(@"LQFemale") : L(@"LQMale");
case 4:
UInt32 time = [user lastTalkTime:[m_cluster internalId]];
if(time == 0)
return kStringEmpty;
else {
NSDate* date = [NSDate dateWithTimeIntervalSince1970:time];
NSDateFormatter* df = [[[NSDateFormatter alloc] init] autorelease];
[df setDateStyle:NSDateFormatterShortStyle];
return [df stringFromDate:date];
};
default:
return kStringEmpty;
}
}
#pragma mark -
#pragma mark table delegate
- (void)tableViewSelectionDidChange:(NSNotification *)aNotification {
[self updateMemberPanelButtons];
}
#pragma mark -
#pragma mark tab view delegate
- (void)tabView:(NSTabView *)tabView didSelectTabViewItem:(NSTabViewItem *)tabViewItem {
// close selector if current tab item is not member tab
if(m_treeSelector) {
if(![[tabViewItem identifier] isEqual:@"2"]) {
[m_treeSelector close];
m_treeSelector = nil;
}
}
// change button title
if(![self isSuperUser]) {
switch([[tabViewItem identifier] intValue]) {
case 3:
case 4:
[m_btnCancel setTitle:L(@"LQModify")];
[m_btnApply setTitle:L(@"LQClose")];
break;
default:
[m_btnCancel setTitle:L(@"LQUpdate")];
[m_btnApply setTitle:L(@"LQClose")];
break;
}
}
}
#pragma mark -
#pragma mark tree selector data source
- (float)outlineView:(NSOutlineView *)outlineView heightOfRowByItem:(id)item {
return kSizeSmall.height + 2;
}
- (int)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item {
if(item == nil)
return [[m_mainWindowController groupManager] friendlyGroupCount];
else if([item isMemberOfClass:[Group class]])
return [item userCount];
else
return 0;
}
- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item {
if([item isMemberOfClass:[Group class]])
return [item userCount] > 0;
else
return NO;
}
- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item {
return item;
}
- (id)outlineView:(NSOutlineView *)outlineView child:(int)index ofItem:(id)item {
if(item == nil)
return [[m_mainWindowController groupManager] group:index];
else if([item isMemberOfClass:[Group class]])
return [item user:index];
else
return nil;
}
- (id)outlineView:(NSOutlineView*)outlineView parentOfItem:(id)item {
return nil;
}
#pragma mark -
#pragma mark level combo box data source
- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(int)index {
if(aComboBox == m_cbLevel1)
return LEVEL1VALUE(index);
else if(aComboBox == m_cbLevel2)
return LEVEL2VALUE([m_cbLevel1 indexOfSelectedItem], index);
else if(aComboBox == m_cbLevel3)
return LEVEL3VALUE([m_cbLevel1 indexOfSelectedItem], [m_cbLevel2 indexOfSelectedItem], index);
else
return kStringEmpty;
}
- (int)numberOfItemsInComboBox:(NSComboBox *)aComboBox {
if(aComboBox == m_cbLevel1)
return LEVEL1COUNT;
else if(aComboBox == m_cbLevel2)
return LEVEL2COUNT([m_cbLevel1 indexOfSelectedItem]);
else if(aComboBox == m_cbLevel3)
return LEVEL3COUNT([m_cbLevel1 indexOfSelectedItem], [m_cbLevel2 indexOfSelectedItem]);
else
return 0;
}
#pragma mark -
#pragma mark level combo box delegate
- (void)comboBoxSelectionDidChange:(NSNotification *)notification {
NSComboBox* combo = [notification object];
if(combo == m_cbLevel1) {
[m_cbLevel2 setStringValue:kStringEmpty];
[m_cbLevel3 setStringValue:kStringEmpty];
[m_cbLevel2 reloadData];
[m_cbLevel3 reloadData];
} else if(combo == m_cbLevel2) {
[m_cbLevel3 setStringValue:kStringEmpty];
[m_cbLevel3 reloadData];
}
}
@end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -