📄 systemoptionshell.java
字号:
}
/**
* 开始验证代理
*/
protected synchronized void startVerify() {
if(verifier == null && checkProxy()) {
btnVerify.setEnabled(false);
InetSocketAddress proxyAddress = new InetSocketAddress(textProxyAddress.getText(), Utils.getInt(textProxyPort.getText(), 1080));
verifier = new ProxyVerifier(this, proxyAddress, comboProxyType.getText(), comboMethod.getSelectionIndex() == 0, textProxyUsername.getText(), textProxyPassword.getText());
verifier.start();
}
}
/**
* 停止验证代理
*/
protected synchronized void stopVerify() {
if(verifier != null) {
try {
verifier.dispose();
} catch (IOException e) {
}
verifier = null;
}
}
/**
* 检查代理服务器的地址和端口是否输入了,并且是否有效
* @return true表示输入了,false则提示
*/
private boolean checkProxy() {
if(textProxyAddress.getText().equals("")) {
MessageBox box = new MessageBox(shell, SWT.ICON_WARNING | SWT.OK);
box.setText(LumaQQ.getResourceString("message.box.common.warning.title"));
box.setMessage(LumaQQ.getResourceString("message.box.please.fill.proxy.address"));
box.open();
return false;
} else {
int port = Utils.getInt(textProxyPort.getText(), 0);
if(port == 0) {
MessageBox box = new MessageBox(shell, SWT.ICON_WARNING | SWT.OK);
box.setText(LumaQQ.getResourceString("message.box.common.warning.title"));
box.setMessage(LumaQQ.getResourceString("message.box.please.fill.proxy.port"));
box.open();
return false;
}
}
return true;
}
/**
* 填充Http代理到代理列表框中
*/
private void fillSocks5Proxy() {
proxyList.removeAll();
StringBuffer sb = new StringBuffer();
int size = proxies.getSocksProxySize();
for(int i = 0; i < size; i++) {
Socks5Proxy proxy = proxies.getSocksProxy(i);
addSocks5Proxy(sb, proxy);
}
}
/**
* 在List中添加一项Socks 5代理
* @param sb
* @param proxy
*/
private void addSocks5Proxy(StringBuffer sb, Socks5Proxy proxy) {
sb.delete(0, sb.length());
sb.append(proxy.getServer())
.append(':')
.append(proxy.getPort());
if(!proxy.getUsername().equals("")) {
sb.append(' ')
.append('[')
.append(proxy.getUsername())
.append(':')
.append(proxy.getPassword())
.append(']');
}
proxyList.add(sb.toString());
}
/**
* 在List中添加一项Http代理
* @param sb
* @param proxy
*/
private void addHttpProxy(StringBuffer sb, HttpProxy proxy) {
sb.delete(0, sb.length());
sb.append(proxy.getServer())
.append(':')
.append(proxy.getPort());
if(!proxy.getUsername().equals("")) {
sb.append(' ')
.append('[')
.append(proxy.getUsername())
.append(':')
.append(proxy.getPassword())
.append(']');
}
proxyList.add(sb.toString());
}
/**
* 填充Socks 5代理到代理列表框中
*/
private void fillHttpProxy() {
proxyList.removeAll();
StringBuffer sb = new StringBuffer();
int size = proxies.getHttpProxySize();
for(int i = 0; i < size; i++) {
HttpProxy proxy = proxies.getHttpProxy(i);
addHttpProxy(sb, proxy);
}
}
/**
* 填充TCP Server列表到下拉框
*/
private void fillTcpServers() {
for(int i = 0; i < LumaQQ.tcpServers.length; i++)
comboServer.add(LumaQQ.tcpServers[i]);
}
/**
* 填充UDP Server列表到下拉框
*/
private void fillUdpServers() {
for(int i = 0; i < LumaQQ.udpServers.length; i++)
comboServer.add(LumaQQ.udpServers[i]);
}
/**
* 保存所作的修改
*/
private void saveChange() {
// 界面设置区
options.setAutoHide(chkAutoHide.getSelection());
options.setShowTip(chkShowTip.getSelection());
options.setShowOnlineTip(chkShowOnlineTip.getSelection());
options.setShowMessageTip(chkShowMessageTip.getSelection());
if(!chkShowMessageTip.getSelection())
main.clearAllMessageTip();
// 消息设置区
options.setAutoEject(chkAutoEject.getSelection());
options.setRejectStranger(chkRejectStranger.getSelection());
options.setEnableSound(chkEnableSound.getSelection());
main.soundDaemon.setEnable(chkEnableSound.getSelection());
// 登陆设置区
options.setServer(comboServer.getText());
options.setAutoSelect(chkAutoSelect.getSelection());
options.setUseTcp(comboMethod.getSelectionIndex() == 1);
options.setProxyServer(textProxyAddress.getText());
options.setProxyPort(Utils.getInt(textProxyPort.getText(), 1080));
options.setProxyUsername(textProxyUsername.getText());
options.setProxyPassword(textProxyPassword.getText());
options.setProxyType(comboProxyType.getText());
if(chkUseProxy.getSelection()) {
if(comboProxyType.getSelectionIndex() == 1 && !options.isUseTcp()) {
options.setUseTcp(true);
options.setServer(LumaQQ.tcpServers[0]);
}
} else
options.setProxyType("None");
}
/**
* 保存所作的修改
* @return 创建的面板
*/
private Composite createPanel() {
Composite comp = new Composite(shell, SWT.NONE);
comp.setBackground(panelBackground);
FormData fd = new FormData();
fd.left = new FormAttachment(buttons[0], 5, SWT.RIGHT);
fd.right = new FormAttachment(100, -5);
fd.top = new FormAttachment(0, 5);
fd.bottom = new FormAttachment(100, -36);
comp.setLayoutData(fd);
comp.setLayout(new FormLayout());
return comp;
}
/**
* 打开shell
*/
public void open() {
// 打开shell
shell.layout();
// set dialog to center of screen
Rectangle dialogRect = shell.getBounds();
Rectangle displayRect = display.getBounds();
shell.setLocation((displayRect.width - dialogRect.width) / 2, (displayRect.height - dialogRect.height) / 2);
shell.open();
}
/* (non-Javadoc)
* @see org.eclipse.swt.events.DisposeListener#widgetDisposed(org.eclipse.swt.events.DisposeEvent)
*/
public void widgetDisposed(DisposeEvent e) {
bannerBackground.dispose();
controlBackground.dispose();
panelBackground.dispose();
commonButtonColor.dispose();
}
/**
* 激活该窗口
*/
public void setActive() {
shell.setActive();
}
/**
* 代理方法,设置窗口的最小化状态
* @param b
*/
public void setMinimized(boolean b) {
shell.setMinimized(b);
}
/**
* 显示一个面板
* @param panel 面板的ID
*/
public void showPanel(int panel) {
if(panel == prevPanel) return;
else {
prevButton.setImage(null);
prevComposite.setVisible(false);
prevPanel = panel;
buttons[panel].setImage(icons.getResource(IconHolder.icoArrow));
composites[panel].setVisible(true);
prevButton = buttons[panel];
prevComposite = composites[panel];
}
}
/**
* 得到shell
* @return
*/
public Shell getShell() {
return shell;
}
/**
* 关闭窗口
*/
public void close() {
shell.close();
}
/* (non-Javadoc)
* @see org.eclipse.swt.events.ShellListener#shellClosed(org.eclipse.swt.events.ShellEvent)
*/
public void shellClosed(ShellEvent e) {
main.systemOptionShell = null;
stopVerify();
}
/* (non-Javadoc)
* @see edu.tsinghua.lumaqq.qq.IProxyHandler#proxyReady(java.net.InetSocketAddress)
*/
public void proxyReady(InetSocketAddress bindAddress) throws IOException {
stopVerify();
display.syncExec(new Runnable() {
public void run() {
btnVerify.setEnabled(true);
MessageBox box = new MessageBox(shell, SWT.ICON_INFORMATION | SWT.OK);
box.setText(LumaQQ.getResourceString("message.box.common.success.title"));
box.setMessage(LumaQQ.getResourceString("message.box.proxy.verify.ok"));
box.open();
}
});
}
/* (non-Javadoc)
* @see edu.tsinghua.lumaqq.qq.IProxyHandler#proxyAuthFail()
*/
public void proxyAuthFail() {
stopVerify();
display.syncExec(new Runnable() {
public void run() {
btnVerify.setEnabled(true);
MessageBox box = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK);
box.setText(LumaQQ.getResourceString("message.box.proxy.error.title"));
box.setMessage(LumaQQ.getResourceString("message.box.proxy.verify.fail"));
box.open();
}
});
}
/* (non-Javadoc)
* @see edu.tsinghua.lumaqq.qq.IProxyHandler#proxyError(java.lang.Exception)
*/
public synchronized void proxyError(final Exception e) {
if(verifier != null) {
stopVerify();
display.syncExec(new Runnable() {
public void run() {
btnVerify.setEnabled(true);
MessageBox box = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK);
box.setText(LumaQQ.getResourceString("message.box.proxy.error.title"));
box.setMessage(e.getMessage());
box.open();
}
});
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -