📄 receivesystemmessageshell.java
字号:
case QQ.QQ_SYS_ADD_FRIEND_REQUEST:
case QQ.QQ_SYS_ADD_FRIEND_REQUEST_EX:
setSystemMessage(packet.from,
packet.from,
packet.message,
false,
false,
true,
true,
true);
break;
case QQ.QQ_SYS_ADD_FRIEND_APPROVED:
case QQ.QQ_SYS_ADD_FRIEND_REJECTED:
case QQ.QQ_SYS_ADD_FRIEND_APPROVED_AND_ADD:
setSystemMessage(packet.from,
packet.from,
packet.message,
false,
false,
false,
false,
false);
break;
}
}
/**
* 设置要显示的系统消息
*
* @param entry
* 记录内容
*/
public void setSystemMessage(RecordEntry entry) {
switch(entry.subType) {
case IKeyConstants.SUB_BEING_ADDED:
case IKeyConstants.SUB_BEING_ADDED_EX:
setSystemMessage(entry.sender,
0,
entry.message,
false,
false,
false,
false,
true);
break;
case IKeyConstants.SUB_ADD_FRIEND_REQUEST:
case IKeyConstants.SUB_ADD_FRIEND_REQUEST_EX:
setSystemMessage(entry.sender,
entry.sender,
entry.message,
false,
false,
true,
true,
true);
break;
case IKeyConstants.SUB_ADD_FRIEND_APPROVED:
case IKeyConstants.SUB_ADD_FRIEND_REJECTED:
case IKeyConstants.SUB_ADD_FRIEND_APPROVED_AND_ADD:
setSystemMessage(entry.sender,
0,
entry.message,
false,
false,
false,
false,
false);
break;
case IKeyConstants.SUB_ADDED_TO_CLUSTER:
case IKeyConstants.SUB_CREATE_CLUSTER:
case IKeyConstants.SUB_APPROVE_JOIN_CLUSTER:
case IKeyConstants.SUB_REJECT_JOIN_CLUSTER:
case IKeyConstants.SUB_CLUSTER_NOTIFICATION_SET_ADMIN:
case IKeyConstants.SUB_CLUSTER_NOTIFICATION_UNSET_ADMIN:
setSystemMessage(entry.sender,
0,
entry.message,
true,
false,
false,
false,
false);
break;
case IKeyConstants.SUB_DELETED_FROM_CLUSTER:
if(entry.receiver == main.getMyModel().qq)
setSystemMessage(entry.sender,
0,
entry.message,
true,
false,
false,
false,
false);
else
setSystemMessage(entry.senderParent,
0,
entry.message,
false,
false,
false,
false,
false);
break;
case IKeyConstants.SUB_REQUEST_JOIN_CLUSTER:
setSystemMessage(entry.sender,
entry.senderParent,
entry.message,
false,
true,
true,
true,
false);
break;
}
}
/**
* 设置系统消息参数
*
* @param infoFrom
* 应该查看谁的消息
* @param authTo
* 验证消息应该发送给谁
* @param message
* 消息的内容
* @param isCluster
* infoFrom是不是群
* @param isClusterAuth
* 是不是群验证
* @param approveVisible
* 通过验证按钮的可见性
* @param rejectVisible
* 拒绝验证按钮的可见性
* @param addVisible
* 添加好友按钮的可见性
*/
public void setSystemMessage(int infoFrom,
int authTo,
String message,
boolean isCluster,
boolean isClusterAuth,
boolean approveVisible,
boolean rejectVisible,
boolean addVisible) {
setQQ(infoFrom, authTo, String.valueOf(infoFrom));
if(isCluster) {
Cluster c = ModelRegistry.getCluster(infoFrom);
if(c == null || c.name.equals(""))
setNick(String.valueOf(infoFrom));
else
setNick(c.name);
if(c != null && c.externalId != 0)
textQQ.setText(String.valueOf(c.externalId));
} else {
User u = ModelRegistry.getUser(infoFrom);
if(u == null || u.displayName.equals(""))
setNick(String.valueOf(infoFrom));
else
setNick(u.displayName);
}
this.isCluster = isCluster;
this.isClusterAuth = isClusterAuth;
btnApprove.setVisible(approveVisible);
btnReject.setVisible(rejectVisible);
btnAdd.setVisible(addVisible);
textMsg.setText(message);
}
/**
* 设置QQ号
*/
public void setQQ(int infoQQ, int authQQ, String qq) {
this.infoQQ = infoQQ;
this.authQQ = authQQ;
textQQ.setText(qq);
}
/**
* 设置昵称
* @param nick
*/
public void setNick(String nick) {
textNick.setText(nick);
}
/**
* 关闭窗口
*/
public void close() {
btnUserInfo.stopAnimate();
shell.close();
}
/* (non-Javadoc)
* @see edu.tsinghua.lumaqq.qq.events.QQListener#qqEvent(edu.tsinghua.lumaqq.qq.events.QQEvent)
*/
public void qqEvent(QQEvent e) {
switch(e.type) {
case QQEvent.QQ_ADD_FRIEND_AUTH_SEND_SUCCESS:
processAddFriendAuthSendSuccess(e);
break;
case QQEvent.QQ_ADD_FRIEND_AUTH_SEND_FAIL:
processAddFriendAuthSendFail(e);
break;
case QQEvent.QQ_AUTHORIZE_SEND_SUCCESS:
processAuthorizeSendSuccess(e);
break;
case QQEvent.QQ_AUTHORIZE_SEND_FAIL:
processAuthorizeSendFail(e);
break;
case QQEvent.QQ_ADD_FRIEND_SUCCESS:
case QQEvent.QQ_ADD_FRIEND_ALREADY:
processAddFriendSuccess(e);
break;
case QQEvent.QQ_ADD_FRIEND_NEED_AUTH:
processAddFriendNeedAuth(e);
break;
case QQEvent.QQ_ADD_FRIEND_DENY:
processAddFriendForbidden(e);
break;
case QQEvent.QQ_DELETE_FRIEND_SUCCESS:
case QQEvent.QQ_DELETE_FRIEND_FAIL:
processDeleteFriendSuccess(e);
break;
case QQEvent.QQ_JOIN_CLUSTER_AUTH_SEND_SUCCESS:
processJoinClusterAuthSendSuccess(e);
break;
case QQEvent.QQ_JOIN_CLUSTER_AUTH_SEND_FAIL:
processJoinClusterAuthSendFail(e);
break;
case QQEvent.QQ_OPERATION_TIMEOUT:
if(e.operation == QQ.QQ_CMD_ADD_FRIEND_AUTH)
processAddFriendAuthSendFail(e);
else if(e.operation == QQ.QQ_CMD_DELETE_FRIEND)
processDeleteFriendTimeout();
else if(e.operation == QQ.QQ_CMD_CLUSTER_CMD)
processClusterCommandTimeout(e);
break;
}
}
/**
* 处理认证消息发送失败事件
*
* @param e
*/
private void processAuthorizeSendFail(QQEvent e) {
AuthorizeReplyPacket packet = (AuthorizeReplyPacket)e.getSource();
if(authQQ == packet.to) {
main.getDisplay().syncExec(new Runnable() {
public void run() {
textMsg.setEditable(true);
textMsg.setBackground(main.getDisplay().getSystemColor(SWT.COLOR_WHITE));
btnApprove.setEnabled(true);
btnReject.setEnabled(true);
btnAdd.setEnabled(true);
lblHint.setText(receive_system_message_fail_label);
textMsg.setText(receive_system_message_send_fail);
btnUserInfo.stopAnimate();
}
});
}
}
/**
* 处理认证消息发送成功事件
*
* @param e
*/
private void processAuthorizeSendSuccess(QQEvent e) {
AuthorizeReplyPacket packet = (AuthorizeReplyPacket)e.getSource();
if(authQQ == packet.to) {
main.getDisplay().syncExec(new Runnable() {
public void run() {
btnApprove.setEnabled(true);
btnReject.setEnabled(true);
btnAdd.setEnabled(true);
lblHint.setText(receive_system_message_success_label);
textMsg.setText(receive_system_message_submited);
btnUserInfo.stopAnimate();
}
});
}
}
/**
* 处理群操作超时事件
* @param e
*/
private void processClusterCommandTimeout(QQEvent e) {
ClusterCommandPacket packet = (ClusterCommandPacket)e.getSource();
if(packet.getSubCommand() == QQ.QQ_CLUSTER_CMD_JOIN_CLUSTER_AUTH)
processJoinClusterAuthSendFail(e);
}
/**
* 处理群认证消息发送失败事件
* @param e
*/
private void processJoinClusterAuthSendFail(QQEvent e) {
ClusterCommandReplyPacket packet = (ClusterCommandReplyPacket)e.getSource();
if(authQQ == packet.clusterId) {
main.getDisplay().syncExec(new Runnable() {
public void run() {
textMsg.setEditable(true);
textMsg.setBackground(main.getDisplay().getSystemColor(SWT.COLOR_WHITE));
btnApprove.setEnabled(true);
btnReject.setEnabled(true);
lblHint.setText(receive_system_message_fail_label);
textMsg.setText(receive_system_message_send_fail);
btnUserInfo.stopAnimate();
}
});
}
}
/**
* 处理群认证消息发送成功事件
* @param e
*/
private void processJoinClusterAuthSendSuccess(QQEvent e) {
ClusterCommandReplyPacket packet = (ClusterCommandReplyPacket)e.getSource();
if(authQQ == packet.clusterId) {
main.getDisplay().syncExec(new Runnable() {
public void run() {
btnApprove.setVisible(false);
btnReject.setVisible(false);
lblHint.setText(receive_system_message_success_label);
textMsg.setText(receive_system_message_submited);
btnUserInfo.stopAnimate();
// 请求得到群信息
main.getClient().getClusterInfo(authQQ);
}
});
}
}
/**
* 处理删除好友超时事件
*/
private void processDeleteFriendTimeout() {
main.getDisplay().syncExec(new Runnable() {
public void run() {
textMsg.setText(receive_system_message_timeout);
}
});
}
/**
* 处理删除好友成功事件
*
* @param e
*/
private void processDeleteFriendSuccess(QQEvent e) {
main.getDisplay().syncExec(new Runnable() {
public void run() {
close();
}
});
}
/**
* 处理对方禁止添加好友事件
*
* @param e
*/
private void processAddFriendForbidden(QQEvent e) {
AddFriendExReplyPacket packet = (AddFriendExReplyPacket)e.getSource();
if(authQQ == packet.friendQQ) {
main.getDisplay().syncExec(new Runnable() {
public void run() {
textMsg.setText(receive_system_message_forbidden);
btnUserInfo.stopAnimate();
}
});
}
}
/**
* 处理添加好友需要认证事件
*
* @param e
*/
private void processAddFriendNeedAuth(QQEvent e) {
AddFriendExReplyPacket packet = (AddFriendExReplyPacket)e.getSource();
if(authQQ == packet.friendQQ) {
main.getDisplay().syncExec(new Runnable() {
public void run() {
btnApprove.setEnabled(true);
btnReject.setEnabled(true);
btnAdd.setEnabled(true);
btnAdd.setVisible(true);
textMsg.setEditable(true);
textMsg.setBackground(main.getDisplay().getSystemColor(SWT.COLOR_WHITE));
textMsg.setText("");
btnAdd.setEnabled(true);
lblHint.setText(receive_system_message_auth_label);
addSecondStep = true;
rejectSecondStep = false;
btnUserInfo.stopAnimate();
}
});
}
}
/**
* 处理添加好友成功事件
*
* @param e
*/
private void processAddFriendSuccess(QQEvent e) {
AddFriendExReplyPacket packet = (AddFriendExReplyPacket)e.getSource();
if(authQQ == packet.friendQQ) {
main.getDisplay().asyncExec(new Runnable() {
public void run() {
btnAdd.setVisible(false);
textMsg.setText(receive_system_message_add_success);
btnUserInfo.stopAnimate();
}
});
}
}
/**
* 处理认证消息发送失败事件
*
* @param e
*/
private void processAddFriendAuthSendFail(QQEvent e) {
AddFriendAuthResponsePacket packet = (AddFriendAuthResponsePacket)e.getSource();
type = packet.getAction();
if(authQQ == packet.getTo()) {
main.getDisplay().syncExec(new Runnable() {
public void run() {
if(type == QQ.QQ_MY_AUTH_REQUEST || type == QQ.QQ_MY_AUTH_REJECT) {
textMsg.setEditable(true);
textMsg.setBackground(main.getDisplay().getSystemColor(SWT.COLOR_WHITE));
}
btnApprove.setEnabled(true);
btnReject.setEnabled(true);
btnAdd.setEnabled(true);
lblHint.setText(receive_system_message_fail_label);
textMsg.setText(receive_system_message_send_fail);
btnUserInfo.stopAnimate();
}
});
}
}
/**
* 处理认证消息送出成功事件
*
* @param e
*/
private void processAddFriendAuthSendSuccess(QQEvent e) {
AddFriendAuthResponsePacket packet = (AddFriendAuthResponsePacket)e.getSource();
type = packet.getAction();
if(authQQ == packet.getTo()) {
main.getDisplay().syncExec(new Runnable() {
public void run() {
if(type == QQ.QQ_MY_AUTH_APPROVE || type == QQ.QQ_MY_AUTH_REJECT) {
btnApprove.setVisible(false);
btnReject.setVisible(false);
}
btnApprove.setEnabled(true);
btnReject.setEnabled(true);
btnAdd.setEnabled(true);
lblHint.setText(receive_system_message_success_label);
textMsg.setText(receive_system_message_submited);
btnUserInfo.stopAnimate();
}
});
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -