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

📄 loginpage.java

📁 lumaQQ的源文件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        // 密码
        UITool.createLabel(basicGroup, sys_opt_login_proxy_password);
        textProxyPassword = UITool.createSingleText(basicGroup, new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL), SWT.SINGLE | SWT.PASSWORD);
        textProxyPassword.addModifyListener(ml);
        // 添加和验证按钮
        layout = new GridLayout(2, true);
        layout.marginHeight = layout.marginWidth = 0;
        gd = new GridData(GridData.FILL_HORIZONTAL);
        gd.horizontalSpan = 2;
        Composite c = UITool.createContainer(basicGroup, gd, layout);
        Button btnAddProxy = UITool.createButton(c, button_add, new GridData(GridData.HORIZONTAL_ALIGN_FILL));
        btnAddProxy.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
                if(checkProxy()) {
                    if(comboProxyType.getSelectionIndex() == 0) {
                        Socks5Proxy proxy = ProxyFactory.eINSTANCE.createSocks5Proxy();
                        proxy.setServer(textProxyAddress.getText());
                        proxy.setPort(textProxyPort.getText());
                        proxy.setUsername(textProxyUsername.getText());
                        proxy.setPassword(textProxyPassword.getText());
                        getProxies().getSocks5Proxy().add(proxy);
                        proxyViewer.refresh();
                    } else {
                        HttpProxy proxy = ProxyFactory.eINSTANCE.createHttpProxy();
                        proxy.setServer(textProxyAddress.getText());
                        proxy.setPort(textProxyPort.getText());
                        proxy.setUsername(textProxyUsername.getText());
                        proxy.setPassword(textProxyPassword.getText());
                        getProxies().getHttpProxy().add(proxy);
                        proxyViewer.refresh();
                    }
                }
            }
        });
        btnVerify = UITool.createButton(c, sys_opt_button_verify, new GridData(GridData.HORIZONTAL_ALIGN_FILL));
		btnVerify.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
                startVerify();
            }
		});

        // 列表信息组
        layout = new GridLayout();
        layout.marginHeight = layout.marginWidth = 8;
        listGroup = UITool.createGroup(proxyGroup, sys_opt_group_proxy_list, new GridData(GridData.FILL_BOTH), layout);
        listGroup.addPaintListener(paintListener);
        
        // 代理列表
        proxyViewer = new ListViewer(listGroup, SWT.SINGLE);
        proxyViewer.setContentProvider(new ProxyContentProvider());
        proxyViewer.setLabelProvider(new ProxyLabelProvider());
        proxyViewer.getList().setLayoutData(new GridData(GridData.FILL_BOTH));
        proxyViewer.addSelectionChangedListener(new ISelectionChangedListener() {
            public void selectionChanged(SelectionChangedEvent e) {
                IStructuredSelection selection = (IStructuredSelection)proxyViewer.getSelection();
                btnDelete.setEnabled(!selection.isEmpty());
                if(!selection.isEmpty()) {
                    Object obj = selection.getFirstElement();
                    if(obj instanceof Socks5Proxy) {
                        Socks5Proxy proxy = (Socks5Proxy)obj;
                        textProxyAddress.setText(proxy.getServer());
                        textProxyPort.setText(proxy.getPort());
                        textProxyUsername.setText(proxy.getUsername());
                        textProxyPassword.setText(proxy.getPassword());
                    } else if(obj instanceof HttpProxy) {
                        HttpProxy proxy = (HttpProxy)obj;
                        textProxyAddress.setText(proxy.getServer());
                        textProxyPort.setText(proxy.getPort());
                        textProxyUsername.setText(proxy.getUsername());
                        textProxyPassword.setText(proxy.getPassword());
                    }
                }
            }
        });
        // 删除
        btnDelete = UITool.createButton(listGroup, button_delete);
        btnDelete.setEnabled(false);
        btnDelete.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
                if(comboProxyType.getSelectionIndex() == 0)
                    getProxies().getSocks5Proxy().remove(proxyViewer.getList().getSelectionIndex());
                else
                    getProxies().getHttpProxy().remove(proxyViewer.getList().getSelectionIndex());
                proxyViewer.refresh();
            }
        });

        return container;
    }
    
    /**
	 * 检查代理服务器的地址和端口是否输入了,并且是否有效
	 * 
	 * @return 
	 * 		true表示有效,false则提示
	 */
	private boolean checkProxy() {
        if(textProxyAddress.getText().equals("")) {
            MessageDialog.openWarning(parentShell, message_box_common_warning_title, message_box_please_fill_proxy_address);
            return false;
        } else {
            int port = Util.getInt(textProxyPort.getText(), 0);
            if(port == 0) {
                MessageDialog.openWarning(parentShell, message_box_common_warning_title, message_box_please_fill_proxy_port);
	            return false;                
            }
        }
        return true;
	}
    
    /**
     * 刷新界面控件的状态
     */
    private void refreshControl() {
        comboPort.setEnabled(rdoTcp.getSelection());
        
        boolean useProxy = chkUseProxy.getSelection();
        if(basicGroup.isEnabled() != useProxy) {
	        basicGroup.setEnabled(useProxy);
	        setChildrenStatus(basicGroup, useProxy);            
        }
        
        if(listGroup.isEnabled() != useProxy) {
	        listGroup.setEnabled(useProxy);        
	        setChildrenStatus(listGroup, useProxy);
	        if(useProxy)
	            btnDelete.setEnabled(!proxyViewer.getSelection().isEmpty());
        }
        
        listGroup.setText(NLS.bind(sys_opt_group_proxy_list, comboProxyType.getText()));
    }
    
    /**
     * 递归的设置组件中所有孩子的状态
     * 
     * @param parent
     * 		父容器
     * @param enabled
     * 		true表示使能
     */
    private void setChildrenStatus(Composite parent, boolean enabled)  {
        Control[] children = parent.getChildren();
        for(int i = 0; i < children.length; i++) {
            children[i].setEnabled(enabled);
            if(children[i] instanceof Composite)
                setChildrenStatus((Composite)children[i], enabled);
        }
    }

    /* (non-Javadoc)
     * @see edu.tsinghua.lumaqq.shells.AbstractPage#getImage()
     */
	@Override
    protected Image getImage() {
        return Resources.getInstance().getImage(Resources.icoSysOpt24);
    }

    /* (non-Javadoc)
     * @see edu.tsinghua.lumaqq.shells.AbstractPage#getTitle()
     */
	@Override
    protected String getTitle(int page) {
        return sys_opt_button_login;
    }

    /* (non-Javadoc)
     * @see edu.tsinghua.lumaqq.shells.AbstractPage#saveDirtyProperty(int)
     */
	@Override
    protected void saveDirtyProperty(int propertyId) {
        OptionHelper options = main.getOptionHelper();
        switch(propertyId) {
            case USE_TCP:
                options.setUseTcp(rdoTcp.getSelection());
                break;
            case LOGIN_SERVER:
                options.setServer(comboAddress.getText());
                break;
            case LOGIN_PORT:
                options.setTcpPort(comboPort.getText());
                break;
            case LOGIN_RANDOM:
                options.setAutoSelect(chkRandom.getSelection());
                break;
            case PROXY_TYPE:
                if(chkUseProxy.getSelection()) {
            		options.setProxyServer(textProxyAddress.getText().trim());
            		options.setProxyPort(Util.getInt(textProxyPort.getText().trim(), 1080));
            		options.setProxyUsername(textProxyUsername.getText());
            		options.setProxyPassword(textProxyPassword.getText());
            		options.setProxyType((comboProxyType.getSelectionIndex() == 0) ? ProxyType.SOCKS5_LITERAL : ProxyType.HTTP_LITERAL);
        		    if(comboProxyType.getSelectionIndex() == 1 && !options.isUseTcp()) {
        		        options.setUseTcp(true);
        		        options.setServer(LumaQQ.tcpServers[0]);		        
        		    }
                } else
                    options.setProxyType(ProxyType.NONE_LITERAL);
                main.getConfigHelper().saveProxies();
                break;
        }
    }

    /* (non-Javadoc)
     * @see edu.tsinghua.lumaqq.shells.AbstractPage#initializeValues()
     */
	@Override
    protected void initializeValues() {
        OptionHelper options = main.getOptionHelper();
        
		chkRandom.setSelection(options.isAutoSelect());
		if(options.isUseTcp()) {
		    comboPort.setEnabled(true);
		    if(options.getTcpPort() == QQ.QQ_PORT_TCP)
		        comboPort.select(0);
		    else
		        comboPort.select(1);
			rdoTcp.setSelection(true);
			rdoUdp.setSelection(false);
			fillTcpServers();
		} else {
		    comboPort.setEnabled(false);
			rdoTcp.setSelection(false);
			rdoUdp.setSelection(true);
			fillUdpServers();
		}
		comboAddress.setText(options.getServer());
		chkUseProxy.setSelection(options.getProxyType() != ProxyType.NONE_LITERAL);
	    if(options.getProxyType() == ProxyType.HTTP_LITERAL)
	        comboProxyType.select(1);
	    else
	        comboProxyType.select(0);
        proxyViewer.refresh();
	    textProxyAddress.setText(options.getProxyServer());
	    textProxyPort.setText(String.valueOf(options.getProxyPort()));
	    textProxyUsername.setText(options.getProxyUsername());
	    textProxyPassword.setText(options.getProxyPassword());
	    refreshControl();
    }
    
	/**
	 * 填充TCP Server列表到下拉框
	 */
	private void fillTcpServers() {
		for(int i = 0; i < LumaQQ.tcpServers.length; i++)
			comboAddress.add(LumaQQ.tcpServers[i]);
		comboAddress.setVisibleItemCount(LumaQQ.tcpServers.length);
	}
	
	/**
	 * 填充UDP Server列表到下拉框
	 */
	private void fillUdpServers() {
		for(int i = 0; i < LumaQQ.udpServers.length; i++)
		    comboAddress.add(LumaQQ.udpServers[i]);
		comboAddress.setVisibleItemCount(LumaQQ.udpServers.length);
	}
	
	/**
     * 开始验证代理
     */
    protected synchronized void startVerify() {
        if(checkProxy()) {
            btnVerify.setEnabled(false);
            String proxyType = comboProxyType.getText();
            boolean udp = rdoUdp.getSelection();
            InetSocketAddress serverAddress = null;
            if(proxyType.equalsIgnoreCase("Socks5")) {
                // 得到一个随机服务器
                if(udp) {
                    String server = LumaQQ.udpServers[Util.random().nextInt(LumaQQ.udpServers.length)];
                    serverAddress = new InetSocketAddress(server, QQ.QQ_PORT_UDP);
                } else {
                    String server = LumaQQ.tcpServers[Util.random().nextInt(LumaQQ.tcpServers.length)];
                    serverAddress = new InetSocketAddress(server, QQ.QQ_PORT_TCP);
                }
            } else if(proxyType.equalsIgnoreCase("Http")) {
                String server = LumaQQ.tcpServers[Util.random().nextInt(LumaQQ.tcpServers.length - 1)];
                serverAddress = new InetSocketAddress(server, QQ.QQ_PORT_HTTP);
            }
            InetSocketAddress proxyAddress = new InetSocketAddress(textProxyAddress.getText(), Util.getInt(textProxyPort.getText(), 1080));
            if(!main.getClient().getConnectionPool().verifyProxy(this, proxyAddress, serverAddress, proxyType, udp, textProxyUsername.getText(), textProxyPassword.getText()))
            	btnVerify.setEnabled(true);
        }
    }

    /* (non-Javadoc)
     * @see edu.tsinghua.lumaqq.qq.IProxyHandler#proxyReady(java.net.InetSocketAddress)
     */
    public void proxyReady(InetSocketAddress bindAddress) throws IOException {
        parentShell.getDisplay().syncExec(new Runnable() {
            public void run() {
                btnVerify.setEnabled(true);
                MessageDialog.openInformation(parentShell, message_box_common_success_title, message_box_proxy_verify_ok);
            }
        });
    }

    /* (non-Javadoc)
     * @see edu.tsinghua.lumaqq.qq.IProxyHandler#proxyAuthFail()
     */
    public void proxyAuthFail() {
        parentShell.getDisplay().syncExec(new Runnable() {
            public void run() {
                btnVerify.setEnabled(true);
                MessageDialog.openError(parentShell, message_box_proxy_error_title, message_box_proxy_verify_fail);
            }
        });
    }

    /* (non-Javadoc)
     * @see edu.tsinghua.lumaqq.qq.net.IProxyHandler#proxyError(java.lang.String)
     */
    public synchronized void proxyError(final String err) {
        parentShell.getDisplay().syncExec(new Runnable() {
            public void run() {
                btnVerify.setEnabled(true);
                MessageDialog.openError(parentShell, message_box_proxy_error_title, err);
            }
        });            
    }

	/**
	 * @return
	 */
	private Proxies getProxies() {
		return main.getConfigHelper().getProxies();
	}
}

⌨️ 快捷键说明

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