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

📄 searchwizard.java

📁 java写的qq代码实现qq的部分功能
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
	/**
	 * @return
	 * 		得到一个标志model的id,对于用户,就是qq号,对于群,就是内部id
	 */
	private int getSelectedModelId() {
	    if(selectedModel == null)
	        return 0;
	    
	    if(selectedModel instanceof UserInfo)
	        return ((UserInfo)selectedModel).qqNum;
	    
	    if(selectedModel instanceof AdvancedUserInfo)
	        return ((AdvancedUserInfo)selectedModel).qqNum;
	    
	    if(selectedModel instanceof ClusterInfo)
	        return ((ClusterInfo)selectedModel).clusterId;
	    
	    return 0;
	}
    
	/**
	 * 处理群命令超时事件
	 * 
	 * @param e
	 */
	private void processClusterCommandTimeout(QQEvent e) {
		final ClusterCommandPacket packet = (ClusterCommandPacket)e.getSource();
	    if(expected != packet.getSequence())
	        return;
		switch(packet.getSubCommand()) {
		    case QQ.QQ_CLUSTER_CMD_SEARCH_CLUSTER: 
				processSearchClusterTimeout(e);
		    	break;
			case QQ.QQ_CLUSTER_CMD_JOIN_CLUSTER_AUTH:
				processJoinClusterAuthSendFail(e);
				break;
			case QQ.QQ_CLUSTER_CMD_JOIN_CLUSTER:
				processJoinClusterFail(e);
				break;
		}
	}
	
	/**
	 * 处理搜索群命令超时事件
	 * 
	 * @param e
	 */
	private void processSearchClusterTimeout(QQEvent e) {
	    ClusterCommandPacket packet = (ClusterCommandPacket)e.getSource();
	    if(expected != packet.getSequence())
	        return;
		main.getDisplay().asyncExec(
			new Runnable() {
				public void run() {
				    operating = false;
				    expected = 0;
					openError(LumaQQ.getString("message.box.common.timeout"));
				}				
			}
		);
	}
	
	/**
	 * 处理搜索群失败事件
	 * 
	 * @param e
	 */
	private void processSearchClusterFail(QQEvent e) {
		final ClusterCommandReplyPacket packet = (ClusterCommandReplyPacket)e.getSource();
	    if(expected != packet.getSequence())
	        return;
		main.getDisplay().asyncExec(
			new Runnable() {
				public void run() {
				    operating = false;
				    expected = 0;
					openError(packet.errorMessage);
				}				
			}
		);
	}

	/**
	 * 处理搜索群成功事件
	 * 
	 * @param e
	 */
	private void processSearchClusterSuccess(QQEvent e) {
		final ClusterCommandReplyPacket packet = (ClusterCommandReplyPacket)e.getSource();
	    if(expected != packet.getSequence())
	        return;
		main.getDisplay().syncExec(
			new Runnable() {
				public void run() {
				    operating = false;
				    expected = 0;
				    showClusterPage(packet.clusters);
				}				
			}
		);
	}

	/**
     * @param e
     */
    private void processAdvancedSearchUserTimeout(QQEvent e) {
	    AdvancedSearchUserPacket packet = (AdvancedSearchUserPacket)e.getSource();
	    if(expected != packet.getSequence())
	        return;
		main.getDisplay().asyncExec(
			new Runnable() {
				public void run() {
				    operating = false;
				    expected = 0;
				    openError(LumaQQ.getString("error.timeout"));
				}				
			}
		);
    }

    /**
     * @param e
     */
    private void processAdvancedSearchUserEnd(QQEvent e) {
	    AdvancedSearchUserReplyPacket packet = (AdvancedSearchUserReplyPacket)e.getSource();
	    if(expected != packet.getSequence())
	        return;
		main.getDisplay().syncExec(
			new Runnable() {
				public void run() {
				    operating = false;
				    end = true;
				    expected = 0;
				    onSearchUserEnd();
				}				
			}
		);
    }

    /**
     * @param e
     */
    private void processAdvancedSearchUserSuccess(QQEvent e) {
	    AdvancedSearchUserReplyPacket packet = (AdvancedSearchUserReplyPacket)e.getSource();
	    if(expected != packet.getSequence())
	        return;
		final List list = packet.users;
		main.getDisplay().asyncExec(
			new Runnable() {
				public void run() {
				    end = false;
				    operating = false;
				    expected = 0;
				    showUserPage(list);
				}				
			}
		);
    }

    /**
	 * 处理搜索用户结束事件
	 */
	protected void processSearchUserEnd(QQEvent e) {
	    SearchUserReplyPacket packet = (SearchUserReplyPacket)e.getSource();
	    if(expected != packet.getSequence())
	        return;
		main.getDisplay().syncExec(
			new Runnable() {
				public void run() {
				    operating = false;
				    end = true;
				    expected = 0;
				    onSearchUserEnd();
				}				
			}
		);
	}
    
	/**
	 * 初始搜索用户超时事件
     * @param e
     */
    private void processSearchUserTimeout(QQEvent e) {
	    SearchUserPacket packet = (SearchUserPacket)e.getSource();
	    if(expected != packet.getSequence())
	        return;
		main.getDisplay().asyncExec(
			new Runnable() {
				public void run() {
				    operating = false;
				    expected = 0;
				    openError(LumaQQ.getString("error.timeout"));
				}				
			}
		);
    }
    
    private void openError(String message) {
	    MessageDialog.openError(getShell(), LumaQQ.getString("message.box.common.fail.title"), message);
    }

    /**
	 * 处理搜索用户成功事件
	 * 
	 * @param e
	 */
	private void processSearchUserSuccess(QQEvent e) {
	    SearchUserReplyPacket packet = (SearchUserReplyPacket)e.getSource();
	    if(expected != packet.getSequence())
	        return;
		final List list = packet.users;
		main.getDisplay().asyncExec(
			new Runnable() {
				public void run() {
				    end = false;
				    operating = false;
				    expected = 0;
				    showUserPage(list);
				}				
			}
		);
	}
    
	/**
	 * 显示一页结果
	 * 
	 * @param page
	 */
	private void showUserPage(List p) {
        SearchUserResultWizardPage page = (SearchUserResultWizardPage)getPage(SEARCH_USER_RESULT);
        page.addPage(p);
	}
	
	/**
	 * 显示一页结果
	 * 
	 * @param p
	 */
	private void showClusterPage(List p) {
        SearchClusterResultWizardPage page = (SearchClusterResultWizardPage)getPage(SEARCH_CLUSTER_RESULT);
        page.addPage(p);
	}
	
    /**
     * 设置好友结果框的下一页按钮使能状态
     * 
     * @param b
     */
    private void updateSearchUserResultPage() {
        SearchUserResultWizardPage page = (SearchUserResultWizardPage)getPage(SEARCH_USER_RESULT);
        page.update();
    }
    
    /**
     * 在搜索用户结束时调用
     */
    private void onSearchUserEnd() {
        SearchUserResultWizardPage page = (SearchUserResultWizardPage)getPage(SEARCH_USER_RESULT);
        page.onSearchEnd();
    }
    
    /**
     * 设置添加页面的状态
     * 
     * @param status
     */
    private void setAddPageStatus(int status) {
        AddFriendClusterWizardPage page = (AddFriendClusterWizardPage)getPage(ADD);
        page.setStatus(status);
    }
    
    /* (non-Javadoc)
     * @see org.eclipse.jface.wizard.IWizard#performCancel()
     */
    public boolean performCancel() {
        unhookListener();
        main.getShellRegistry().deregisterSearchWizard();
        return true;
    }      
    
    /**
     * 根据搜索方式搜索
     * 
     * @param page
     */
    public void doSearch(int page) {
        if(operating)
            return;
        operating = true;
        
        switch(searchMode) {
            case ONLINE:
                searchOnline(page);
                break;
            case ACCURATE:
                searchAccurate(page);
                break;
            case ADVANCED:
                searchAdvanced(page);
                break;
            case DEMO_CLUSTER:
                searchDemoCluster();
                break;
            case BY_CLUSTER_ID:
                searchClusterById();
                break;
            default:
                operating = false;
            	break;
        }
    }
    
    /**
     * 发送认证信息
     * 
     * @param message
     */
    public void doAuth(String message) {
        if(operating)
            return;
        operating = true;
        
        if(selectedModel == null)
            return;
        
        if(selectedModel instanceof UserInfo) {
            UserInfo user = (UserInfo)selectedModel;
            expected = main.getClient().sendAddFriendAuth(user.qqNum, message);
            setAddPageStatus(AddFriendClusterWizardPage.AUTH_SENDING);
        } else if(selectedModel instanceof AdvancedUserInfo) {
            AdvancedUserInfo user = (AdvancedUserInfo)selectedModel;
            expected = main.getClient().sendAddFriendAuth(user.qqNum, message);
            setAddPageStatus(AddFriendClusterWizardPage.AUTH_SENDING);
        } else if(selectedModel instanceof ClusterInfo) {
            ClusterInfo cluster = (ClusterInfo)selectedModel;
            expected = main.getClient().requestJoinCluster(cluster.clusterId, message);
            setAddPageStatus(AddFriendClusterWizardPage.AUTH_SENDING);
        } else
            operating = false;
    }
    
    /**
     * 添加好友或群
     */
    public void doAdd() {
        if(operating)
            return;
        operating = true;
        
        if(selectedModel == null)
            return;
        
        if(selectedModel instanceof UserInfo) {
            UserInfo user = (UserInfo)selectedModel;
            expected = main.getClient().addFriend(user.qqNum);
            setAddPageStatus(AddFriendClusterWizardPage.ADDING);
        } else if(selectedModel instanceof AdvancedUserInfo) {
            AdvancedUserInfo user = (AdvancedUserInfo)selectedModel;
            expected = main.getClient().addFriend(user.qqNum);
            setAddPageStatus(AddFriendClusterWizardPage.ADDING);
        } else if(selectedModel instanceof ClusterInfo) {
            ClusterInfo cluster = (ClusterInfo)selectedModel;
            expected = main.getClient().joinCluster(cluster.clusterId);
            setAddPageStatus(AddFriendClusterWizardPage.JOINING);
        } else
            operating = false;
    }
    
    /**
     * 搜索示范群
     */
    public void searchDemoCluster() {
        expected = ((HowToSearchClusterWizardPage)getPage(HOW_TO_SEARCH_CLUSTER)).doSearch();
    }
    
    /**
     * 根据群ID搜索
     */
    public void searchClusterById() {
        expected = ((HowToSearchClusterWizardPage)getPage(HOW_TO_SEARCH_CLUSTER)).doSearch();
    }
    
    /**
     * 高级搜索
     * 
     * @param page
     */
    public void searchAdvanced(int page) {
        expected = ((SearchUserAdvancedWizardPage)getPage(SEARCH_USER_ADVANCED)).doSearch(page);
    }
    
    /**
     * 搜索用户
     * 
     * @param page
     * 		页号
     */
    public void searchOnline(int page) {
        expected = main.getClient().searchUser(page);
    }
    
    /**
     * 精确查找
     * 
     * @param page
     * 		页号
     */
    public void searchAccurate(int page) {
        expected = ((SearchUserAccurateWizardPage)getPage(SEARCH_USER_ACCURATE)).doSearch(page);
    }
    
    /**
     * 把自己加为QQ listener
     */
    private void hookListener() {
        main.getClient().addQQListener(this);
    }

    /**
     * 删除自己做为qq listener
     */
    private void unhookListener() {
        main.getClient().removeQQListener(this);
    }
    
    /**
     * @return Returns the end.
     */
    public boolean isEnd() {
        return end;
    }
    
    /**
     * @return Returns the operating.
     */
    public boolean isOperating() {
        return operating;
    }
    
    /**
     * @return Returns the searchMode.
     */
    public int getSearchMode() {
        return searchMode;
    }
    
    /**
     * @param searchMode The searchMode to set.
     */
    public void setSearchMode(int searchMode) {
        this.searchMode = searchMode;
    }
    /**
     * @param end The end to set.
     */
    public void setEnd(boolean end) {
        this.end = end;
    }
    /**
     * @return Returns the selectedModel.
     */
    public Object getSelectedModel() {
        return selectedModel;
    }
    /**
     * @param selectedModel The selectedModel to set.
     */
    public void setSelectedModel(Object selectedModel) {
        this.selectedModel = selectedModel;
    }
    /**
     * @return Returns the enterResultPage.
     */
    public boolean isEnterResultPage() {
        return enterResultPage;
    }
    /**
     * @param enterResultPage The enterResultPage to set.
     */
    public void setEnterResultPage(boolean enterResultPage) {
        this.enterResultPage = enterResultPage;
    }
    
    /* (non-Javadoc)
     * @see org.eclipse.jface.wizard.IWizard#canFinish()
     */
    public boolean canFinish() {
        return ((AddFriendClusterWizardPage)getPage(ADD)).isPageComplete();
    }
    
    /**
     * @param startPage The startPage to set.
     */
    public void setStartPage(String startPage) {
        this.startPage = startPage;
    }
}

⌨️ 快捷键说明

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