📄 menuhelper.java
字号:
sysMenu.addMenuListener(new MenuAdapter() {
public void menuShown(MenuEvent e) {
if(client == null)
return;
int count = sysMenu.getItemCount();
if(count > 18)
return;
if(client.hasRobots()) {
MenuItem mi = new MenuItem(sysMenu, SWT.SEPARATOR, count++ - 2);
mi = new MenuItem(sysMenu, SWT.CASCADE, count - 2);
mi.setText(LumaQQ.getString("menu.sys.robot"));
mi.setImage(icons.getImage(IconHolder.icoMachine));
Menu robotMenu = new Menu(mi);
mi.setMenu(robotMenu);
List robots = client.getRobotInfos();
int size = robots.size();
for(int i = 0; i < size; i++) {
Robot robot = (Robot)robots.get(i);
final int j = i;
MenuItem rItem = new MenuItem(robotMenu, SWT.RADIO);
rItem.setText(robot.getName());
if(i == 0)
rItem.setSelection(true);
rItem.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
client.setRobotIndex(j);
}
});
}
mi = new MenuItem(robotMenu, SWT.SEPARATOR);
mi = new MenuItem(robotMenu, SWT.PUSH);
if(client.isRobotMode())
mi.setText(LumaQQ.getString("menu.sys.robot.off"));
else
mi.setText(LumaQQ.getString("menu.sys.robot.on"));
mi.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
MenuItem onOff = (MenuItem)e.getSource();
client.setRobotMode(!client.isRobotMode());
if(client.isRobotMode())
onOff.setText(LumaQQ.getString("menu.sys.robot.off"));
else
onOff.setText(LumaQQ.getString("menu.sys.robot.on"));
}
});
}
}
});
}
/**
* 创建,初始化状态菜单
*/
private void initStatusMenu() {
// 更改状态弹出菜单
statusMenu = new Menu(shell, SWT.POP_UP);
// 上线
MenuItem mi = new MenuItem(statusMenu, SWT.PUSH);
mi.setText(LumaQQ.getString("menu.status.online"));
mi.setImage(icons.getImage(IconHolder.icoOnline));
mi.addSelectionListener(
new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
main.getClient().getUser().setLoginMode(QQ.QQ_LOGIN_MODE_NORMAL);
if(main.checkLogin(false, false))
client.makeMeOnline();
else
client.getUser().setStatus(QQ.QQ_FRIEND_STATUS_ONLINE);
}
}
);
// separator
MenuItem separator = new MenuItem(statusMenu, SWT.SEPARATOR);
// 离开,离开菜单有子菜单
mi = new MenuItem(statusMenu, SWT.CASCADE);
mi.setText(LumaQQ.getString("menu.status.away"));
mi.setImage(icons.getImage(IconHolder.icoAway));
awayMenu = new Menu(mi);
mi.setMenu(awayMenu);
// 自定义
MenuItem sub = new MenuItem(awayMenu, SWT.PUSH);
sub.setText(LumaQQ.getString("menu.status.away.custom"));
sub.setImage(icons.getImage(IconHolder.icoReply));
sub.addSelectionListener(
new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
shellLauncher.openSystemOptionWindow().setCurrentPage(SystemOptionWindow.REPLY);
}
}
);
separator = new MenuItem(awayMenu, SWT.SEPARATOR);
// 无回复
sub = new MenuItem(awayMenu, SWT.RADIO);
sub.setText(LumaQQ.getString("menu.status.away.null"));
sub.addSelectionListener(
new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
main.getClient().getUser().setLoginMode(QQ.QQ_LOGIN_MODE_NORMAL);
if(main.checkLogin(false, false)) {
replies.setAutoReply(false);
if(client.getUser().getStatus() != QQ.QQ_FRIEND_STATUS_AWAY)
client.makeMeAway();
} else
client.getUser().setStatus(QQ.QQ_FRIEND_STATUS_AWAY);
}
}
);
// separator
separator = new MenuItem(statusMenu, SWT.SEPARATOR);
// 隐身
mi = new MenuItem(statusMenu, SWT.PUSH);
mi.setText(LumaQQ.getString("menu.status.hidden"));
mi.setImage(icons.getImage(IconHolder.icoHidden));
mi.addSelectionListener(
new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
main.getClient().getUser().setLoginMode(QQ.QQ_LOGIN_MODE_HIDDEN);
if(main.checkLogin(false, false)) {
if(client.getUser().getStatus() != QQ.QQ_FRIEND_STATUS_HIDDEN)
client.makeMeHidden();
} else
client.getUser().setStatus(QQ.QQ_FRIEND_STATUS_HIDDEN);
}
}
);
// separator
separator = new MenuItem(statusMenu, SWT.SEPARATOR);
// 离线
mi = new MenuItem(statusMenu, SWT.PUSH);
mi.setText(LumaQQ.getString("menu.status.offline"));
mi.setImage(icons.getImage(IconHolder.icoOffline));
mi.addSelectionListener(
new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
main.checkGroupDirty();
main.getClient().getUser().setStatus(QQ.QQ_FRIEND_STATUS_OFFLINE);
main.logout();
}
}
);
}
/**
* 设置QQClient
*
* @param client
* QQ客户端对象
*/
public void setClient(QQClient client) {
this.client = client;
}
/**
* 设置状态菜单的可见性
*
* @param b
*/
public void setStatusMenuVisible(boolean b) {
statusMenu.setVisible(b);
}
/**
* 设置状态菜单的位置
*
* @param loc
* 菜单左上角位置
*/
public void setStatusMenuLocation(Point loc) {
statusMenu.setLocation(loc);
}
/**
* 设置组菜单位置
*
* @param loc
*/
public void setGroupMenuLocation(Point loc) {
groupMenu.setLocation(loc);
}
/**
* 设置组菜单可见性
*
* @param b
*/
public void setGroupMenuVisible(boolean b) {
groupMenu.setVisible(b);
}
/**
* 设置组菜单位置
*
* @param loc
*/
public void setViewBarMenuLocation(Point loc) {
viewBarMenu.setLocation(loc);
}
/**
* 设置侧边条菜单可见性
*
* @param b
*/
public void setViewBarMenuVisible(boolean b) {
viewBarMenu.setVisible(b);
}
/**
* 设置手机好友菜单可见性
*
* @param b
*/
public void setMobileMenuVisible(boolean b) {
mobileMenu.setVisible(b);
}
/**
* 设置手机好友菜单的附加对象
*
* @param data
*/
public void setMobileMenuData(Object data) {
mobileMenu.setData(data);
}
/**
* 设置手机好友菜单的位置
*
* @param loc
*/
public void setMobileMenuLocation(Point loc) {
mobileMenu.setLocation(loc);
}
/**
* 设置好友菜单位置
*
* @param loc
*/
public void setFriendMenuLocation(Point loc) {
friendMenu.setLocation(loc);
}
/**
* 设置好友菜单可见性
*
* @param b
*/
public void setFriendMenuVisible(boolean b) {
friendMenu.setVisible(b);
}
/**
* 设置好友菜单的附加数据
*
* @param data
*/
public void setFriendMenuData(Object data) {
friendMenu.setData(data);
}
/**
* 设置群菜单的附加数据
*
* @param data
*/
public void setClusterMenuData(Object data) {
clusterMenu.setData(data);
}
/**
* 设置群菜单可见性
*
* @param b
*/
public void setClusterMenuVisible(boolean b) {
clusterMenu.setVisible(b);
}
/**
* 设置系统菜单的可见性
*
* @param b
*/
public void setSystemMenuVisible(boolean b) {
sysMenu.setVisible(b);
}
/**
* 重新设置离开菜单,发生在用户添加或修改了自动回复时
*/
public void renewAawyMenu() {
int count = awayMenu.getItemCount();
int size = replies.getAutoReplySize();
// 从3开始调整,前面3个是固定的,分别是自定义,separator和无回复消息
int loop = Math.min(count, 3 + size);
for(int i = 3, j = 0; i < loop; i++) {
MenuItem mi = awayMenu.getItem(i);
mi.setText(replies.getAutoReply(j++));
}
// 处理长度不一致的部分,如果自动回复减少了,则把多余的菜单项释放掉,如果少了,添加菜单项
size -= count - 3;
if(size > 0) { // 大于0说明自动回复增加了
for(int i = 0; i < size; i++) {
MenuItem mi = new MenuItem(awayMenu, SWT.RADIO);
final int index = count - 3 + i;
mi.setText(replies.getAutoReply(index));
mi.addSelectionListener(
new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
main.getClient().getUser().setLoginMode(QQ.QQ_LOGIN_MODE_NORMAL);
if(main.checkLogin(false, false)) {
replies.setAutoReply(true);
replies.setCurrentAutoReply(index);
if(client.getUser().getStatus() != QQ.QQ_FRIEND_STATUS_AWAY)
client.makeMeAway();
} else {
replies.setAutoReply(true);
replies.setCurrentAutoReply(index);
client.getUser().setStatus(QQ.QQ_FRIEND_STATUS_AWAY);
}
}
}
);
}
} else if (size < 0) { // 小于0说明自动回复减少了
size = Math.abs(size);
for(int i = size - 1; i >= 0 ; i--) {
MenuItem mi = awayMenu.getItem(loop + i);
mi.dispose();
}
}
}
/**
* 设置model
*
* @param model
*/
public void setModel(ShutterModel model) {
this.model = model;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -