basicfamilyeventtrigger.mm
来自「lumaqq」· MM 代码 · 共 911 行 · 第 1/3 页
MM
911 行
/* * LumaQQ - Cross platform QQ client, special edition for Mac * * Copyright (C) 2007 luma <stubma@163.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */#import "BasicFamilyEventTrigger.h"#import "QQConstants.h"#import "GetServerTokenReplyPacket.h"#import "GetLoginTokenReplyPacket.h"#import "EventRouter.h"#import "LoginReplyPacket.h"#import "PasswordVerifyReplyPacket.h"#import "KeepAliveReplyPacket.h"#import "GetKeyReplyPacket.h"#import "ChangeStatusReplyPacket.h"#import "TempSessionOpReplyPacket.h"#import "GroupDataOpReplyPacket.h"#import "PropertyOpReplyPacket.h"#import "SignatureOpReplyPacket.h"#import "FriendDataOpReplyPacket.h"#import "ClusterCommandReplyPacket.h"#import "ModifyInfoReplyPacket.h"#import "AuthQuestionOpReplyPacket.h"#import "PrivacyOpReplyPacket.h"#import "SearchUserReplyPacket.h"#import "AdvancedSearchUserReplyPacket.h"#import "AddFriendReplyPacket.h"#import "AuthInfoOpReplyPacket.h"#import "AuthorizeReplyPacket.h"#import "DeleteFriendReplyPacket.h"#import "ClusterModifyInfoPacket.h"#import "SendIMReplyPacket.h"#import "SelectServerReplyPacket.h"#import "RemoveSelfReplyPacket.h"#import "UploadFriendGroupReplyPacket.h"#import "WeatherOpReplyPacket.h"@implementation BasicFamilyEventTrigger+ (void)trigger:(QQClient*)client packet:(InPacket*)packet outPacket:(OutPacket*)outPacket connectionId:(int)connectionId { QQNotification* event = nil; switch([packet command]) { case kQQCommandSelectServer: event = [self processSelectServerReply:packet]; break; case kQQCommandGetServerToken: event = [self processGetServerTokenReply:packet]; break; case kQQCommandGetLoginToken: event = [self processGetLoginTokenReply:packet]; break; case kQQCommandPasswordVerify: event = [self processPasswordVerifyReply:packet]; break; case kQQCommandLogin: event = [self processLoginReply:packet]; break; case kQQCommandKeepAlive: event = [self processKeepAliveReply:packet]; break; case kQQCommandGetKey: event = [self processGetKeyReply:packet]; break; case kQQCommandChangeStatus: event = [self processChangeStatusReply:packet]; break; case kQQCommandGetOnlineOp: event = [self processGetOnlineOpReply:packet]; break; case kQQCommandGetUserInfo: event = [self processGetUserInfoReply:packet]; break; case kQQCommandGetFriendList: event = [self processGetFriendListReply:packet]; break; case kQQCommandGetFriendGroup: event = [self processGetFriendGroupReply:packet]; break; case kQQCommandGroupDataOp: event = [self processGroupDataOpReply:packet]; break; case kQQCommandLevelOp: event = [self processFriendLevelOpReply:packet]; break; case kQQCommandPropertyOp: event = [self processPropertyOpReply:packet]; break; case kQQCommandSignatureOp: event = [self processSignatureOpReply:packet]; break; case kQQCommandFriendDataOp: event = [self processFriendDataOpReply:packet]; break; case kQQCommandCluster: event = [self processClusterReply:packet]; break; case kQQCommandModifyInfo: event = [self processModifyInfoReply:packet client:client]; break; case kQQCommandAuthQuestionOp: event = [self processAuthQuestionOpReply:packet]; break; case kQQCommandPrivacyOp: event = [self processPrivacyOpReply:packet]; break; case kQQCommandSearch: event = [self processSearchUserReply:packet]; break; case kQQCommandAdvancedSearch: event = [self processAdvancedSearchUserReply:packet]; break; case kQQCommandAddFriend: event = [self processAddFriendReply:packet]; break; case kQQCommandAuthInfoOp: event = [self processAuthInfoOpReply:packet]; break; case kQQCommandAuthorize: event = [self processAuthorizeReply:packet]; break; case kQQCommandSystemNotification: event = [self processSystemNotification:packet]; break; case kQQCommandDeleteFriend: event = [self processDeleteFriendReply:packet]; break; case kQQCommandReceivedIM: event = [self processReceivedIM:packet]; break; case kQQCommandSendIM: event = [self processSendIMReply:packet]; break; case kQQCommandRemoveSelf: event = [self processRemoveSelfReply:packet]; break; case kQQCommandUploadGroupFriend: event = [self processUploadFriendGroupReply:packet]; break; case kQQCommandSendSMS: event = [self processSendSMSReply:packet]; break; case kQQCommandFriendStatusChanged: event = [self processFriendStatusChanged:packet]; break; case kQQCommandTempSessionOp: event = [self processTempSessionOpReply:packet]; break; case kQQCommandWeatherOp: event = [self processWeatherOpReply:packet]; break; } // trigger event if(event) { [event retain]; [event setConnectionId:connectionId]; [event setOutPacket:outPacket]; [client trigger:event]; [event release]; // special concern on cluster failed event switch([packet command]) { case kQQCommandCluster: ClusterCommandReplyPacket* p = (ClusterCommandReplyPacket*)packet; if([p reply] != kQQReplyOK) { event = [[QQNotification alloc] initWithId:kQQEventClusterCommandFailed packet:p outPacket:outPacket]; [client trigger:event]; [event release]; } break; } }}+ (QQNotification*)processPasswordVerifyReply:(InPacket*)packet { PasswordVerifyReplyPacket* p = (PasswordVerifyReplyPacket*)packet; NSLog(@"Password Verify %@", ([p reply] == kQQReplyOK) ? @"OK" : @"Failed"); QQNotification* event = [[QQNotification alloc] initWithId:(([p reply] == kQQReplyOK) ? kQQEventPasswordVerifyOK : kQQEventPasswordVerifyFailed) packet:p]; return [event autorelease];}+ (QQNotification*)processGetServerTokenReply:(InPacket*)packet { GetServerTokenReplyPacket* p = (GetServerTokenReplyPacket*)packet; NSLog(@"Get Server Token %@", ([p reply] == kQQReplyOK) ? @"OK" : @"Failed"); QQNotification* event = [[QQNotification alloc] initWithId:(([p reply] == kQQReplyOK) ? kQQEventGetServerTokenOK : kQQEventGetServerTokenFailed) packet:p]; return [event autorelease];}+ (QQNotification*)processWeatherOpReply:(InPacket*)packet { WeatherOpReplyPacket* p = (WeatherOpReplyPacket*)packet; NSLog(@"Weather Op %@", ([p reply] == kQQReplyOK) ? @"OK" : @"Failed"); QQNotification* event = [[QQNotification alloc] initWithId:(([p reply] == kQQReplyOK) ? kQQEventGetWeatherOK : kQQEventGetWeatherFailed) packet:p]; return [event autorelease];}+ (QQNotification*)processTempSessionOpReply:(InPacket*)packet { QQNotification* event = nil; TempSessionOpReplyPacket* p = (TempSessionOpReplyPacket*)packet; switch([p subCommand]) { case kQQSubCommandSendTempSessionIM: switch([p reply]) { case kQQReplyOK: case kQQReplyTempSesionIMCached: NSLog(@"Send Temp Session IM OK"); event = [[QQNotification alloc] initWithId:kQQEventSendTempSessionIMOK packet:p]; break; default: NSLog(@"Send Temp Session IM Failed"); event = [[QQNotification alloc] initWithId:kQQEventSendTempSessionIMFailed packet:p]; break; } break; } if(event) return [event autorelease]; else return nil;}+ (QQNotification*)processFriendStatusChanged:(InPacket*)packet { NSLog(@"Friend Status Changed"); QQNotification* event = [[QQNotification alloc] initWithId:kQQEventFriendStatusChanged packet:packet]; return [event autorelease];}+ (QQNotification*)processSendSMSReply:(InPacket*)packet { NSLog(@"SMS Sent"); QQNotification* event = [[QQNotification alloc] initWithId:kQQEventSMSSent packet:packet]; return [event autorelease];}+ (QQNotification*)processUploadFriendGroupReply:(InPacket*)packet { UploadFriendGroupReplyPacket* p = (UploadFriendGroupReplyPacket*)packet; NSLog(@"Upload Friend Group %@", ([p reply] == kQQReplyOK) ? @"OK" : @"Failed"); QQNotification* event = [[QQNotification alloc] initWithId:(([p reply] == kQQReplyOK) ? kQQEventUploadFriendGroupOK : kQQEventUploadFriendGroupFailed) packet:p]; return [event autorelease];}+ (QQNotification*)processRemoveSelfReply:(InPacket*)packet { RemoveSelfReplyPacket* p = (RemoveSelfReplyPacket*)packet; NSLog(@"Remove Self %@", ([p reply] == kQQReplyOK) ? @"OK" : @"Failed"); QQNotification* event = [[QQNotification alloc] initWithId:(([p reply] == kQQReplyOK) ? kQQEventRemoveSelfOK : kQQEventRemoveSelfFailed) packet:p]; return [event autorelease];}+ (QQNotification*)processSelectServerReply:(InPacket*)packet { QQNotification* event = nil; SelectServerReplyPacket* p = (SelectServerReplyPacket*)packet; if([p nextTimes] != 0) { NSLog(@"Select Server Redirect"); event = [[QQNotification alloc] initWithId:kQQEventSelectServerRedirect packet:p]; } else { NSLog(@"Select Server OK"); event = [[QQNotification alloc] initWithId:kQQEventSelectServerOK packet:p]; } return [event autorelease];}+ (QQNotification*)processSendIMReply:(InPacket*)packet { SendIMReplyPacket* p = (SendIMReplyPacket*)packet; NSLog(@"Send IM %@", ([p reply] == kQQReplyOK) ? @"OK" : @"Failed"); QQNotification* event = [[QQNotification alloc] initWithId:(([p reply] == kQQReplyOK) ? kQQEventSendIMOK : kQQEventSendIMFailed) packet:p]; return [event autorelease];}+ (QQNotification*)processReceivedIM:(InPacket*)packet { NSLog(@"Receive IM"); QQNotification* event = [[QQNotification alloc] initWithId:kQQEventReceivedIM packet:packet]; return [event autorelease];}+ (QQNotification*)processDeleteFriendReply:(InPacket*)packet { DeleteFriendReplyPacket* p = (DeleteFriendReplyPacket*)packet; NSLog(@"Delete Friend %@", ([p reply] == kQQReplyOK) ? @"OK" : @"Failed"); QQNotification* event = [[QQNotification alloc] initWithId:(([p reply] == kQQReplyOK) ? kQQEventDeleteFriendOK : kQQEventDeleteFriendFailed) packet:p]; return [event autorelease];}+ (QQNotification*)processSystemNotification:(InPacket*)packet {
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?