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

📄 searchwizard.java

📁 lumaQQ的源文件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
				    operating = false;
				    expected = 0;
				    setAddPageStatus(ADD_DENY);
				}				
			}
		);
	}
    
	/**
	 * 处理添加好友成功事件
	 * 
	 * @param e
	 */
	private void processAddFriendSuccess(QQEvent e) {
		AddFriendExReplyPacket packet = (AddFriendExReplyPacket)e.getSource();
		if(expected != packet.getSequence())
		    return;
		final int id = model.getSelectedModelId();
		if(id == packet.friendQQ) {
			main.getDisplay().asyncExec(new Runnable() {
				public void run() {
				    operating = false;
				    expected = 0;
				    setAddPageStatus(ADD_FINISHED);
				}					
			});
		}
	}
    
	/**
	 * 处理群命令超时事件
	 * 
	 * @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;
				    onSearchClusterError();
					openError(message_box_common_timeout);
				}				
			}
		);
	}
	
	/**
	 * 搜索群发生错误时
	 */
	private void onSearchClusterError() {
        SearchClusterResultWizardPage page = (SearchClusterResultWizardPage)getPage(PAGE_SEARCH_CLUSTER_RESULT);
        page.onSearchClusterError();
	}

	/**
	 * 处理搜索群失败事件
	 * 
	 * @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;
				    onSearchClusterError();
					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;
				    onSearchUserError();
				    openError(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<? extends Object> 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;
			    onSearchUserError();
			    openError(error_timeout);
			}			
		});
    }    

	/**
	 * 搜索发生错误时
	 */
	private void onSearchUserError() {
        SearchUserResultWizardPage page = (SearchUserResultWizardPage)getPage(PAGE_SEARCH_USER_RESULT);
        page.onSearchUserError();
	}	
    
    /**
     * 打开错误提示框
     * 
     * @param message
     * 		错误消息
     */
    private void openError(String message) {
	    MessageDialog.openError(getShell(), 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<? extends Object> 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<? extends Object> p) {
        SearchUserResultWizardPage page = (SearchUserResultWizardPage)getPage(PAGE_SEARCH_USER_RESULT);
        page.addPage(p);
	}
	
	/**
	 * 显示一页结果
	 * 
	 * @param p
	 */
	private void showClusterPage(List<? extends Object> p) {
        SearchClusterResultWizardPage page = (SearchClusterResultWizardPage)getPage(PAGE_SEARCH_CLUSTER_RESULT);
        page.addPage(p);
	}
    
    /**
     * 在搜索用户结束时调用
     */
    private void onSearchUserEnd() {
        SearchUserResultWizardPage page = (SearchUserResultWizardPage)getPage(PAGE_SEARCH_USER_RESULT);
        page.onSearchEnd();
    }
    
    /**
     * 设置添加页面的状态
     * 
     * @param status
     */
    private void setAddPageStatus(int status) {
    	model.setStatus(status);
        AddFriendClusterWizardPage page = (AddFriendClusterWizardPage)getPage(PAGE_ADD);
        page.refresh();
    }
    
    /* (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;
        
        if(model.getSearchWhat() == USER) {
            switch(model.getUserSearchMode()) {
                case ONLINE:
                    searchOnline(page);
                    break;
                case ACCURATE:
                    searchAccurate(page);
                    break;
                case ADVANCED:
                    searchAdvanced(page);
                    break;
                default:
                    operating = false;
                	break;
            }        	
        } else if(model.getSearchWhat() == CLUSTER) {
        	switch(model.getClusterSearchMode()) {
                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;
        
        Object selectedModel = model.getSelectedModel();
        if(selectedModel == null)
            return;
        
        if(selectedModel instanceof UserInfo) {
            UserInfo user = (UserInfo)selectedModel;
            expected = main.getClient().sendAddFriendAuth(user.qqNum, message);
            setAddPageStatus(AUTH_SENDING);
        } else if(selectedModel instanceof AdvancedUserInfo) {
            AdvancedUserInfo user = (AdvancedUserInfo)selectedModel;
            expected = main.getClient().sendAddFriendAuth(user.qqNum, message);
            setAddPageStatus(AUTH_SENDING);
        } else if(selectedModel instanceof ClusterInfo) {
            ClusterInfo cluster = (ClusterInfo)selectedModel;
            expected = main.getClient().requestJoinCluster(cluster.clusterId, message);
            setAddPageStatus(AUTH_SENDING);
        } else
            operating = false;
    }
    
    /**
     * 添加好友或群
     */
    public void doAdd() {
        if(operating)
            return;
        operating = true;
        
        Object selectedModel = model.getSelectedModel();
        if(selectedModel == null)
            return;
        
        if(selectedModel instanceof UserInfo) {
            UserInfo user = (UserInfo)selectedModel;
            expected = main.getClient().addFriend(user.qqNum);
            setAddPageStatus(ADDING);
        } else if(selectedModel instanceof AdvancedUserInfo) {
            AdvancedUserInfo user = (AdvancedUserInfo)selectedModel;
            expected = main.getClient().addFriend(user.qqNum);
            setAddPageStatus(ADDING);
        } else if(selectedModel instanceof ClusterInfo) {
            ClusterInfo cluster = (ClusterInfo)selectedModel;
            expected = main.getClient().joinCluster(cluster.clusterId);
            setAddPageStatus(JOINING);
        } else
            operating = false;
    }
    
    /**
     * 搜索示范群
     */
    public void searchDemoCluster() {
        expected = ((HowToSearchClusterWizardPage)getPage(PAGE_HOW_TO_SEARCH_CLUSTER)).doSearch();
    }
    
    /**
     * 根据群ID搜索
     */
    public void searchClusterById() {
        expected = ((HowToSearchClusterWizardPage)getPage(PAGE_HOW_TO_SEARCH_CLUSTER)).doSearch();
    }
    
    /**
     * 高级搜索
     * 
     * @param page
     */
    public void searchAdvanced(int page) {
        expected = ((SearchUserAdvancedWizardPage)getPage(PAGE_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(PAGE_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;
    }
    
    /**
     * @param end The end to set.
     */
    public void setEnd(boolean end) {
        this.end = end;
    }
    
    /* (non-Javadoc)
     * @see org.eclipse.jface.wizard.IWizard#canFinish()
     */
    public boolean canFinish() {
        return ((AddFriendClusterWizardPage)getPage(PAGE_ADD)).isPageComplete();
    }

	public Object getModel() {
		return model;
	}
}

⌨️ 快捷键说明

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