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

📄 loginpage.java

📁 java写的qq代码实现qq的部分功能
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        // 添加和验证按钮
        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, LumaQQ.getString("common.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 = new Socks5ProxyImpl();
                        proxy.setServer(textProxyAddress.getText());
                        proxy.setPort(textProxyPort.getText());
                        proxy.setUsername(textProxyUsername.getText());
                        proxy.setPassword(textProxyPassword.getText());
                        proxies.addSocks5Proxy(proxy);
                        proxyViewer.refresh();
                    } else {
                        HttpProxy proxy = new HttpProxyImpl();
                        proxy.setServer(textProxyAddress.getText());
                        proxy.setPort(textProxyPort.getText());
                        proxy.setUsername(textProxyUsername.getText());
                        proxy.setPassword(textProxyPassword.getText());
                        proxies.addHttpProxy(proxy);
                        proxyViewer.refresh();
                    }
                }
            }
        });
        btnVerify = UITool.createButton(c, LumaQQ.getString("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, LumaQQ.getString("sys.opt.group.proxy.list"), new GridData(GridData.FILL_VERTICAL | GridData.HORIZONTAL_ALIGN_FILL), 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.setInput(this);
        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, LumaQQ.getString("common.button.delete"));
        btnDelete.setEnabled(false);
        btnDelete.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
                if(comboProxyType.getSelectionIndex() == 0)
                    proxies.removeSocks5Proxy(proxyViewer.getList().getSelectionIndex());
                else
                    proxies.removeHttpProxy(proxyViewer.getList().getSelectionIndex());
                proxyViewer.refresh();
            }
        });

        return container;
    }
    
    /**
	 * 检查代理服务器的地址和端口是否输入了,并且是否有效
	 * 
	 * @return 
	 * 		true表示有效,false则提示
	 */
	private boolean checkProxy() {
        if(textProxyAddress.getText().equals("")) {
            MessageDialog.openWarning(parentShell, LumaQQ.getString("message.box.common.warning.title"), LumaQQ.getString("message.box.please.fill.proxy.address"));
            return false;
        } else {
            int port = Util.getInt(textProxyPort.getText(), 0);
            if(port == 0) {
                MessageDialog.openWarning(parentShell, LumaQQ.getString("message.box.common.warning.title"), LumaQQ.getString("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(LumaQQ.getString("sys.opt.group.proxy.list", new Object[] { 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()
     */
    protected Image getImage() {
        return IconHolder.getInstance().getImage(IconHolder.icoSysOpt24);
    }

    /* (non-Javadoc)
     * @see edu.tsinghua.lumaqq.shells.AbstractPage#getTitle()
     */
    protected String getTitle(int page) {
        return LumaQQ.getString("sys.opt.button.login");
    }

    /* (non-Javadoc)
     * @see edu.tsinghua.lumaqq.shells.AbstractPage#saveDirtyProperty(int)
     */
    protected void saveDirtyProperty(int propertyId) {
        OptionUtil options = OptionUtil.getInstance();
        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) ? "Socks5" : "Http");
        		    if(comboProxyType.getSelectionIndex() == 1 && !options.isUseTcp()) {
        		        options.setUseTcp(true);
        		        options.setServer(LumaQQ.tcpServers[0]);		        
        		    }
                } else
                    options.setProxyType("None");
                proxies.save();
                break;
        }
    }

    /* (non-Javadoc)
     * @see edu.tsinghua.lumaqq.shells.AbstractPage#initializeValues()
     */
    protected void initializeValues() {
        OptionUtil options = OptionUtil.getInstance();
        
		chkRandom.setSelection(options.isAutoSelect());
		if(options.isUseTcp()) {
		    comboPort.setEnabled(true);
		    if(options.getTcpPort() == QQ.QQ_TCP_PORT)
		        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().equalsIgnoreCase("None") || options.getProxyType().equals("")));
	    if(options.getProxyType().equalsIgnoreCase("Http"))
	        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(verifier == null && checkProxy()) {
            btnVerify.setEnabled(false);
            InetSocketAddress proxyAddress = new InetSocketAddress(textProxyAddress.getText(), Util.getInt(textProxyPort.getText(), 1080));
            try {
                verifier = new ProxyVerifier(main.getClient().getPorter(), this, proxyAddress, comboProxyType.getText(), rdoUdp.getSelection(), textProxyUsername.getText(), textProxyPassword.getText());
	            verifier.start();
            } catch (IOException e) {
                btnVerify.setEnabled(true);
            }
        }
    }
    
    /**
     * 停止验证代理
     */
    protected synchronized void stopVerify() {
        if(verifier != null) {            
            try {
                verifier.dispose();
            } catch (IOException e) {
                log.error(e.getMessage());
            }
            verifier = null;
        }
    }

    /* (non-Javadoc)
     * @see edu.tsinghua.lumaqq.qq.IProxyHandler#proxyReady(java.net.InetSocketAddress)
     */
    public void proxyReady(InetSocketAddress bindAddress) throws IOException {
        stopVerify();
        parentShell.getDisplay().syncExec(new Runnable() {
            public void run() {
                btnVerify.setEnabled(true);
                MessageDialog.openInformation(parentShell, LumaQQ.getString("message.box.common.success.title"), LumaQQ.getString("message.box.proxy.verify.ok"));
            }
        });
    }

    /* (non-Javadoc)
     * @see edu.tsinghua.lumaqq.qq.IProxyHandler#proxyAuthFail()
     */
    public void proxyAuthFail() {
        stopVerify();
        parentShell.getDisplay().syncExec(new Runnable() {
            public void run() {
                btnVerify.setEnabled(true);
                MessageDialog.openError(parentShell, LumaQQ.getString("message.box.proxy.error.title"), LumaQQ.getString("message.box.proxy.verify.fail"));
            }
        });
    }

    /* (non-Javadoc)
     * @see edu.tsinghua.lumaqq.qq.IProxyHandler#proxyError(java.lang.Exception)
     */
    public synchronized void proxyError(final Exception e) {
        if(verifier != null) {
	        stopVerify();
	        parentShell.getDisplay().syncExec(new Runnable() {
	            public void run() {
	                btnVerify.setEnabled(true);
	                MessageDialog.openError(parentShell, LumaQQ.getString("message.box.proxy.error.title"), e.getMessage());
	            }
	        });            
        }
    }
    
    /* (non-Javadoc)
     * @see edu.tsinghua.lumaqq.shells.AbstractPage#onShellClose()
     */
    protected void onParentShellClose() {
        stopVerify();
    }
}

⌨️ 快捷键说明

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