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

📄 searchshell.java

📁 用java实现的
💻 JAVA
📖 第 1 页 / 共 4 页
字号:

	// 处理搜索用户成功事件
	private void processSearchUserSuccess(QQEvent e) {
		final List list = ((SearchUserReplyPacket)e.getSource()).onlineUsers;
		pages.put(new Integer(++page), list);
		main.display.asyncExec(
			new Runnable() {
				public void run() {
					// 设置按钮,标签属性
					setControlState();
					// 添加项
					parseUserList(list);
				}				
			}
		);
	}

	// 根据目前状态设置table相关控件的属性
	protected void setControlState() {
		lblPage.setText(LumaQQ.getResourceString("search.label.page", new Object[] { String.valueOf(page) }));
		btnNextPage.setEnabled(true);
		btnAll.setEnabled(true);
		btnNext.setEnabled(true);
		btnPrevious.setEnabled(true);
		if(page > 1)
			btnPreviousPage.setEnabled(true);
		else
			btnPreviousPage.setEnabled(false);
	}

	// 解析list中的用户数据,添加到table中
	protected void parseUserList(List list) {
		if(list == null) return;
		Iterator iter = list.iterator();
		while(iter.hasNext()) {
			OnlineUser user = (OnlineUser)iter.next();
			TableItem ti = new TableItem(userTable, SWT.NONE);
			ti.setText(0, String.valueOf(user.qqNum));
			ti.setText(1, user.nick);
			ti.setText(2, user.province);
			ti.setImage(icons.getSmallFace(user.face));
			ti.setData(user);
		}
	}

	// 解析list中的ClusterInfo对象,添加到table中
	protected void parseClusterList(List list) {
		if(list == null) return;
		Iterator iter = list.iterator();
		while(iter.hasNext()) {
			ClusterInfo info = (ClusterInfo)iter.next();
			TableItem ti = new TableItem(clusterTable, SWT.NONE);
			ti.setText(0, String.valueOf(info.externalId));
			ti.setText(1, info.name);
			ti.setText(2, String.valueOf(info.creator));
			ti.setImage(icons.getSmallClusterFace(1));
			ti.setData(info);
		}
	}
	
	// 用户按了下一步按钮时调用此方法
	protected void navigateNext() {
		if(mode == ALL) {
			/*
			 * 查看谁在线上的流程,一共5步
			 * 1. 首页
			 * 2. 用户列表
			 * 3. 选择一个用户添加
			 * 4. 用户需要认证,输入认证信息
			 * 5. 认证信息已发送,或者好友已添加
			 * 如果用户不需要认证,则第4步跳过直接从第3步到第5步
			 */
			if(step == 1) {
				/* 用户选择了搜索全部用户 */
				step++;
				prevPanel.setVisible(false);
				list.setVisible(true);
				prevPanel = list;
				searchAll();
			} else if (step == 2) {
				/* 用户从列表中选择了一个用户,开始添加 */
				int index = userTable.getSelectionIndex();
				if(index == -1) {
					openMessageBox(LumaQQ.getResourceString("message.box.please.select.user"));
				} else {
					addUser(index);
				}
			} else if(step == 5) {
				/* 完成 */
				close();
			}
		} else if(mode == CUSTOM) {
			/*
			 * 自定义搜索的流程是
			 * 1. 首页
			 * 2. 输入搜索参数
			 * 3. 用户列表
			 * 4. 选择一个用户添加
			 * 5. 用户需要认证,输入认证信息
			 * 6. 认证信息已发送,或者好友已添加
			 * 如果用户不需要认证,则第4步跳过直接从第4步到第6步
			 */
			if(step == 1) {
				/* 用户选择了自定义搜索 */
				step++;
				prevPanel.setVisible(false);
				custom.setVisible(true);
				btnPrevious.setEnabled(true);
				prevPanel = custom;
				textQQ.setFocus();
			} else if(step == 2) {
				/* 用户输入完毕,开始搜索 */
				step++;
				prevPanel.setVisible(false);
				list.setVisible(true);
				prevPanel = list;
				searchCustom(textQQ.getText().trim(), textNick.getText().trim(), textEmail.getText().trim(), chkEntire.getSelection());
			} else if(step == 3) {
				/* 用户选择了一个用户,开始添加 */
				int index = userTable.getSelectionIndex();
				if(index == -1) {
					openMessageBox(LumaQQ.getResourceString("message.box.please.select.user"));
				} else {
					addUser(index);
				}
			} else if(step == 6) {
				/* 完成 */
				close();
			}
		} else if(mode == CLUSTER) {
			/*
			 * 搜索群的流程是
			 * 1. 首页
			 * 2. 选择搜索方式
			 * 3. 群列表
			 * 4. 选择一个群添加
			 * 5. 群需要认证,输入认证信息
			 * 6. 认证方式已发送,或者群已添加
			 */
			if(step == 1) {
				/* 从首页到选择搜索方式 */
				step++;
				prevPanel.setVisible(false);
				cluster.setVisible(true);
				prevPanel = cluster;
				// 设置控件状态
				btnPrevious.setEnabled(true);
				radioDemo.setSelection(true);
				radioById.setSelection(false);
				lblId.setEnabled(false);
				textId.setEnabled(false);
			} else if(step == 2) {
				/* 从搜索方式到群列表 */
				step++;
				prevPanel.setVisible(false);
				clusterList.setVisible(true);
				prevPanel = clusterList;
				// 设置控件状态
				btnNext.setEnabled(false);
				btnPrevious.setEnabled(false);
				// 设置提示
				lblClusterHint.setText(LumaQQ.getResourceString("search.label.searching.cluster"));
				// 清空原来的表项
				clusterTable.removeAll();
				// 根据搜索方式执行搜索
				if(radioDemo.getSelection())
					main.client.searchDemoCluster();
				else {
					int externalId = Utils.getInt(textId.getText(), 0);
					main.client.searchClusterById(externalId);
				}
			} else if(step == 3) {
				/* 从群列表到开始添加群 */
				// 如果没有选择一个群,提示,如果选择了,添加
				int index = clusterTable.getSelectionIndex();
				if(index == -1)
					openMessageBox(LumaQQ.getResourceString("message.box.please.select.cluster"));
				else 
					addCluster(index);
			} else if(step == 6) {
				close();
			}
		}
	}

	// 显示一个警告框告诉要求选择一个用户或者选择一个群
	private void openMessageBox(String msg) {
		/* 但是并没有选择一个用户 */
		MessageBox box = new MessageBox(shell, SWT.ICON_WARNING);
		box.setText(LumaQQ.getResourceString("message.box.common.warning.title"));
		box.setMessage(msg);
		box.open();
	}

	// 设置好各控件状态,开始搜索
	private void searchAll() {
		userTable.removeAll();
		lblPage.setText(LumaQQ.getResourceString("search.label.searching"));
		btnPreviousPage.setEnabled(false);
		btnNextPage.setEnabled(false);
		btnNext.setEnabled(false);
		btnPrevious.setEnabled(false);
		btnAll.setEnabled(false);
		main.client.searchUser(page);
	}
	
	// 自定义搜索
	private void searchCustom(String qqStr, String nick, String email, boolean matchEntire) {
		userTable.removeAll();
		lblPage.setText(LumaQQ.getResourceString("search.label.searching"));
		btnPreviousPage.setEnabled(false);
		btnNextPage.setEnabled(false);
		btnNext.setEnabled(false);
		btnPrevious.setEnabled(false);
		btnAll.setEnabled(false);
		main.client.searchUser(page, qqStr, nick, email, matchEntire);
	}

	// 用户按了上一步按钮时调用此方法
	protected void navigatePrevious() {
		if(mode == ALL) {
			if(step == 2) {
				/* 从用户类别退回首页 */
				step--;
				prevPanel.setVisible(false);
				first.setVisible(true);
				prevPanel = first;
				page = 0;
				pages.clear();
				btnPrevious.setEnabled(false);
			} else if(step == 3 || step == 4 || step == 5) {
				/* 从添加用户之后返回用户列表 */
				if(step == 5)
					btnNext.setText(LumaQQ.getResourceString("search.button.next"));
				step = 2;
				btnSend.setEnabled(true);
				prevPanel.setVisible(false);
				list.setVisible(true);
				prevPanel = list;
				btnNext.setEnabled(true);
			}
		} else if(mode == CUSTOM) {
			if(step == 2) {
				/* 从参数填写返回首页 */
				step--;
				prevPanel.setVisible(false);
				first.setVisible(true);
				prevPanel = first;
				btnPrevious.setEnabled(false);
			} else if(step == 3) {
				/* 从用户列表返回参数填写 */
				step--;
				prevPanel.setVisible(false);
				custom.setVisible(true);
				prevPanel = custom;
				page = 0;
				pages.clear();
			} else if(step == 4 || step == 5 || step == 6) {
				/* 从添加用户之后返回用户列表 */
				if(step == 6)
					btnNext.setText(LumaQQ.getResourceString("search.button.next"));
				step = 3;
				btnSend.setEnabled(true);
				prevPanel.setVisible(false);
				list.setVisible(true);
				prevPanel = list;
				btnNext.setEnabled(true);
			}
		} else if(mode == CLUSTER) {
			if(step == 2) {
				/* 从群搜索方式返回首页 */
				step--;
				prevPanel.setVisible(false);
				first.setVisible(true);
				prevPanel = first;
				btnPrevious.setEnabled(false);
			} else if(step == 3) {
				/* 从群列表返回群搜索方式 */
				step--;
				prevPanel.setVisible(false);
				cluster.setVisible(true);
				prevPanel = cluster;
				btnNext.setEnabled(true);
			} else if(step == 4 || step == 5 || step == 6) {
				/* 从添加群之后返回群列表 */
				if(step == 6)
					btnNext.setText(LumaQQ.getResourceString("search.button.next"));
				step = 3;
				btnSend.setEnabled(true);
				prevPanel.setVisible(false);
				clusterList.setVisible(true);
				prevPanel = clusterList;
				btnNext.setEnabled(true);
			}
		}
	}
	
	// 开始添加一个群
	private void addCluster(int index) {
		/* 选择了一个群,开始添加 */
		// 得到群内部ID,出错则返回
		TableItem ti = clusterTable.getItem(index);
		ClusterInfo info = (ClusterInfo)ti.getData();
		// 得到群的内部ID
		clusterId = info.clusterId;
		// 生成动画帧
		frames = new Image[] { icons.getClusterFace(1), icons.getClusterFace(2), icons.getClusterFace(3) };
		// 修改步数,隐藏以前的panel,显示正确的panel
		step++;
		prevPanel.setVisible(false);
		add.setVisible(true);
		prevPanel = add;
		// 设置控件状态
		btnNext.setEnabled(false);
		btnPrevious.setEnabled(false);
		btnFace.setText(ti.getText(0));
		btnFace.setImage(icons.getClusterFace(1));
		lblNick.setText(ti.getText(1));
		lblPlace.setText(ti.getText(2));
		waitGroup.setText(LumaQQ.getResourceString("search.group.wait"));
		lblHint.setText(LumaQQ.getResourceString("search.label.processing"));
		btnSend.setVisible(false);
		textAuth.setVisible(false);
		// 开始动画
		btnFace.startAnimate(frames);
		// 发送添加群请求包
		main.client.joinCluster(clusterId);
	}
	
	// 添加一个用户,index是这个用户在table中的索引
	private void addUser(int index) {
		/* 选择了一个用户,可以开始添加 */
		// 解析QQ号,如果失败则返回 */
		TableItem ti = userTable.getItem(index);
		OnlineUser user = (OnlineUser)ti.getData();
		// 得到QQ号和头像号
		qqNum = user.qqNum;
		int face = user.face - user.face % 3;
		// 生成动画帧数组
		frames = new Image[] { icons.getFace(face), icons.getFace(face + 2) }; 
		// 修改步数,隐藏以前的panel,显示正确的panel
		step++;
		prevPanel.setVisible(false);
		add.setVisible(true);
		prevPanel = add;
		// 设置各控件属性
		btnNext.setEnabled(false);
		btnPrevious.setEnabled(false);
		btnFace.setText(ti.getText(0));
		btnFace.setImage(icons.getFace(face));
		lblNick.setText(ti.getText(1));
		lblPlace.setText(ti.getText(2));
		waitGroup.setText(LumaQQ.getResourceString("search.group.wait"));
		lblHint.setText(LumaQQ.getResourceString("search.label.processing"));
		btnSend.setVisible(false);
		textAuth.setVisible(false);
		// 开始动画
		btnFace.startAnimate(frames);
		// 发送添加好友请求包
		main.client.addFriend(qqNum);
	}

	/**
	 * @param b
	 */
	public void setMinimized(boolean b) {
		shell.setMinimized(b);
	}

	/**
	 * 激活窗口
	 */
	public void setActive() {
		shell.setActive();
	}
}

⌨️ 快捷键说明

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