📄 searchshell.java
字号:
// 处理搜索用户成功事件
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 + -