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 + -
显示快捷键?