⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 receivesystemmessageshell.java

📁 java写的qq代码实现qq的部分功能
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		return qq;
	}
	
	/* (non-Javadoc)
	 * @see org.eclipse.swt.events.ShellListener#shellClosed(org.eclipse.swt.events.ShellEvent)
	 */
	public void shellClosed(ShellEvent e) {
		main.getClient().removeQQListener(this);
	}
	
	/**
	 * 是当前窗口激活
	 */
	public void setActive() {
		shell.setActive();
	}	
	
	/**
	 * 代理方法,设置窗口的最小化状态
	 * @param b
	 */
	public void setMinimized(boolean b) {
		shell.setMinimized(b);
	}
	
	/**
	 * 设置要显示的系统消息
	 * @param in
	 */
	public void setSystemMessage(BasicInPacket in) {
		if(in instanceof SystemNotificationPacket) {
			SystemNotificationPacket packet = (SystemNotificationPacket)in;
			setSystemMessage(packet.type, 0, packet.from, packet.message, (byte)0, true);
		} else if(in instanceof ReceiveIMPacket) {
			ReceiveIMPacket packet = (ReceiveIMPacket)in;
			if(packet.header.type == QQ.QQ_RECV_IM_SYS_MESSAGE)
				setSystemMessage(packet.header.type, 0, 10000, packet.sysMessage, (byte)0, false);
			else
				setSystemMessage(packet.header.type, packet.header.sender, packet.sender, packet.message, packet.clusterType, true);
		}
	}
	
	/**
	 * 设置要显示的系统消息
	 * @param type 消息的类型,可能取很多值,不光可能是系统通知,也可能是群通知
	 * @param clusterId 群内部ID,如果不是群通知消息,这个参数无意义,可以任意值
	 * @param sender 发送者的QQ号
	 * @param message 消息内容
	 * @param clusterType 群类型,如果不是群通知消息,这个参数无意义,可以任意值
	 * @param prefix false表示不要从资源文件中读取字符串,直接使用message的值
	 */
	public void setSystemMessage(char type, int clusterId, int sender, String message, byte clusterType, boolean prefix) {
		String senderStr = String.valueOf(sender);
		String clusterIdStr = String.valueOf(clusterId);
		setQQ(sender);
		this.sender = sender;
		btnApprove.setVisible(false);
		btnReject.setVisible(false);
		btnAdd.setVisible(false);
		btnAddStranger.setVisible(false);
		switch(type) {
			case QQ.QQ_MSG_SYS_BEING_ADDED:
				setNick(senderStr);
				btnAdd.setVisible(true);
				if(prefix)
					textMsg.setText(LumaQQ.getString("receive.system.message.addme", new Object[] { senderStr }));
				else
					textMsg.setText(message);
				break;
			case QQ.QQ_MSG_SYS_ADD_FRIEND_REQUEST:
				setNick(senderStr);
				btnApprove.setVisible(true);
				btnReject.setVisible(true);
				btnAdd.setVisible(true);
				if(prefix)
					textMsg.setText(LumaQQ.getString("receive.system.message.request", new Object[] { senderStr, message }));
				else
					textMsg.setText(message);
				break;
			case QQ.QQ_MSG_SYS_ADD_FRIEND_APPROVED:
				setNick(senderStr);
				if(prefix)
					textMsg.setText(LumaQQ.getString("receive.system.message.approved", new Object[] { senderStr }));
				else
					textMsg.setText(message);
				break;
			case QQ.QQ_MSG_SYS_ADD_FRIEND_REJECTED:
				setNick(senderStr);
				btnAddStranger.setVisible(true);
				if(prefix)
					textMsg.setText(LumaQQ.getString("receive.system.message.rejected", new Object[] { senderStr, message }));
				else
					textMsg.setText(message);
				break;
			case QQ.QQ_RECV_IM_ADDED_TO_CLUSTER:
			case QQ.QQ_RECV_IM_CREATE_CLUSTER:
				setNick(clusterIdStr);
				isCluster = true;
				setQQ(clusterId);
				if(prefix) {
					if(clusterType == QQ.QQ_CLUSTER_TYPE_PERMANENT)
						textMsg.setText(LumaQQ.getString("cluster.message.permanent.cluster.created", new Object[] { clusterIdStr, senderStr }));
					else
						textMsg.setText(LumaQQ.getString("cluster.message.temporary.cluster.created", new Object[] { clusterIdStr, senderStr }));						
				} else
					textMsg.setText(message);
				break;
			case QQ.QQ_RECV_IM_DELETED_FROM_CLUSTER:
				setNick(clusterIdStr);
				isCluster = true;
				setQQ(clusterId);
				if(prefix) {
				    if(sender == main.getMyModel().getQQ())
				        textMsg.setText(LumaQQ.getString("cluster.message.removed", new Object[] { clusterIdStr }));
				    else
				        textMsg.setText(LumaQQ.getString("cluster.message.exit", new Object[] { senderStr, clusterIdStr }));
				} else
					textMsg.setText(message);
				break;
			case QQ.QQ_RECV_IM_REQUEST_JOIN_CLUSTER:
				setNick(clusterIdStr);
				isCluster = true;
				setQQ(clusterId);
				btnApprove.setVisible(true);
				btnReject.setVisible(true);
				if(prefix)
					textMsg.setText(LumaQQ.getString("cluster.message.request", new Object[] { senderStr, clusterIdStr, message }));
				else
					textMsg.setText(message);
				break;
			case QQ.QQ_RECV_IM_APPROVE_JOIN_CLUSTER:
				setNick(clusterIdStr);
				isCluster = true;
				setQQ(clusterId);
				if(prefix)
					textMsg.setText(LumaQQ.getString("cluster.message.approved", new Object[] { senderStr }));
				else
					textMsg.setText(message);
				break;
			case QQ.QQ_RECV_IM_REJECT_JOIN_CLUSTER:
				setNick(clusterIdStr);
				isCluster = true;
				setQQ(clusterId);
				if(prefix)
					textMsg.setText(LumaQQ.getString("cluster.message.rejected", new Object[] { senderStr, message }));
				else
					textMsg.setText(message);
				break;
			default:
				textMsg.setText(message);
				break;
		}
	}
	
	/**
	 * 设置QQ号
	 * @param qq
	 */
	public void setQQ(int qqNum) {
		this.qq = qqNum;
		textQQ.setText(String.valueOf(qqNum));
	}
	
	/**
	 * 设置昵称
	 * @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_ADD_FRIEND_SUCCESS:
				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:
				processDeleteFriendEvent(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 processClusterCommandTimeout(QQEvent e) {
		ClusterCommandReplyPacket packet = (ClusterCommandReplyPacket)e.getSource();
		if(packet.subCommand == QQ.QQ_CLUSTER_CMD_JOIN_CLUSTER_AUTH)
			processJoinClusterAuthSendFail(e);
	}

	/**
	 * 处理群认证消息发送失败事件
	 * @param e
	 */
	private void processJoinClusterAuthSendFail(QQEvent e) {
		ClusterCommandReplyPacket packet = (ClusterCommandReplyPacket)e.getSource();
		if(qq == 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(LumaQQ.getString("receive.system.message.fail.label"));
						textMsg.setText(LumaQQ.getString("receive.system.message.send.fail"));
						btnUserInfo.stopAnimate();
					}				
				}
			);			
		}
	}

	/**
	 * 处理群认证消息发送成功事件
	 * @param e
	 */
	private void processJoinClusterAuthSendSuccess(QQEvent e) {
		ClusterCommandReplyPacket packet = (ClusterCommandReplyPacket)e.getSource();
		if(qq == packet.clusterId) {
			main.getDisplay().syncExec(new Runnable() {
				public void run() {
					btnApprove.setVisible(false);
					btnReject.setVisible(false);
					lblHint.setText(LumaQQ.getString("receive.system.message.success.label"));
					textMsg.setText(LumaQQ.getString("receive.system.message.submited"));
					btnUserInfo.stopAnimate();
					// 请求得到群信息
					main.getClient().getClusterInfo(qq);
				}				
			});			
		}
	}

	/**
	 * 处理删除好友超时事件
	 */
	private void processDeleteFriendTimeout() {
		main.getDisplay().syncExec(
			new Runnable() {
				public void run() {
					textMsg.setText(LumaQQ.getString("receive.system.message.timeout"));
				}
			}
		);
	}

	// 处理删除好友成功事件
	private void processDeleteFriendEvent(QQEvent e) {
		main.getDisplay().syncExec(
			new Runnable() {
				public void run() {
					close();
				}
			}
		);
	}

	// 处理对方禁止添加好友事件
	private void processAddFriendForbidden(QQEvent e) {
		AddFriendPacket packet = (AddFriendPacket)e.getSource();
		if(qq == packet.getTo()) {
			main.getDisplay().syncExec(
				new Runnable() {
					public void run() {
						textMsg.setText(LumaQQ.getString("receive.system.message.forbidden"));
						btnUserInfo.stopAnimate();
					}					
				}
			);
		}
	}

	// 处理添加好友需要认证事件
	private void processAddFriendNeedAuth(QQEvent e) {
		AddFriendPacket packet = (AddFriendPacket)e.getSource();
		if(qq == packet.getTo()) {
			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(LumaQQ.getString("receive.system.message.auth.label"));
						addSecondStep = true;
						rejectSecondStep = false;
						btnUserInfo.stopAnimate();
					}					
				}
			);
		}
	}

	// 处理添加好友成功事件
	private void processAddFriendSuccess(QQEvent e) {
		AddFriendPacket packet = (AddFriendPacket)e.getSource();
		if(qq == packet.getTo()) {
			main.getDisplay().asyncExec(
				new Runnable() {
					public void run() {
						btnAdd.setVisible(false);
						textMsg.setText(LumaQQ.getString("receive.system.message.add.success"));
						btnUserInfo.stopAnimate();
						main.getMVCHelper().addFriendViewPart(qq);
					}					
				}
			);
		}
	}

	// 处理认证消息发送失败事件
	private void processAddFriendAuthSendFail(QQEvent e) {
		AddFriendAuthPacket packet = (AddFriendAuthPacket)e.getSource();
		type = packet.getAction();
		if(qq == 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(LumaQQ.getString("receive.system.message.fail.label"));
						textMsg.setText(LumaQQ.getString("receive.system.message.send.fail"));
						btnUserInfo.stopAnimate();
					}				
				}
			);			
		}
	}

	// 处理认证消息送出成功事件
	private void processAddFriendAuthSendSuccess(QQEvent e) {
		AddFriendAuthPacket packet = (AddFriendAuthPacket)e.getSource();
		type = packet.getAction();
		if(qq == 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(LumaQQ.getString("receive.system.message.success.label"));
						textMsg.setText(LumaQQ.getString("receive.system.message.submited"));
						btnUserInfo.stopAnimate();
					}				
				}
			);			
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -