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

📄 mainshell.java

📁 lumaQQ的源文件
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
	/**
	 * 删除一个成功或者失败的删除好友请求
	 * 
	 * @param key
	 * 			好友的QQ号
	 */
	public Group removeDeleteToMap(int key) {
		return deleteToMap.remove(key);
	}

	public void setGroupDirty(boolean groupDirty) {
		this.groupDirty = groupDirty;
	}

	/**
	 * 设置窗口可见状态
	 * 
	 * @param b
	 * 			true表示窗口可见
	 */
	public void setVisible(boolean b) {
	    shell.setVisible(b);
	}

	public BlindHelper getBlindHelper() {
		return blindHelper;
	}

	public void qqShowDownloaded(final int qq) {
		if(shellRegistry.hasUserInfoWindow(qq) && sm.isCached(qq)) {
			display.syncExec(new Runnable() {
				public void run() {					
				    UserInfoWindow uis = shellRegistry.getUserInfoWindow(qq);
				    if(uis != null)
				        uis.setQQShow(sm.getQQShowImage(qq));						
				}
			});
		}
	}

	/**
	 * @return Returns the groupColor.
	 */
	public Color getGroupColor() {
		return groupColor;
	}

	public QQShowManager getQQShowManager() {
		return sm;
	}

    /**
     * @return
     * 		ShellLauncher对象
     */
    public ShellLauncher getShellLauncher() {
        return shellLauncher;
    }

    /**
     * @return
     * 		窗口注册表
     */
    public ShellRegistry getShellRegistry() {
        return shellRegistry;
    }

	public Sounder getSounder() {
		return sounder;
	}

	public ExportHelper getExportHelper() {
		return exportHelper;
	}

	public String getCurrentOnlineNumber() {
		return currentOnlineNumber;
	}

	public MessageQueue getMessageQueue() {
		return mq;
	}

	public IPSeeker getIPSeeker() {
		return seeker;
	}

	public LineStyle getDefaultStyle() {
		return defaultStyle;
	}

	public Color getFontColor() {
		return defaultStyle.foreground;
	}
	
    /**
     * 设置字体颜色
     * 
     * @param fontColor
     * 		字体颜色
     */
    public void setFontColor(Color fontColor) {
        defaultStyle.foreground = fontColor;
    }

	public RecordManager getRecordManager() {
		return rm;
	}
    
	/**
	 * 删除一个好友
	 * 
	 * @param f
	 * 			User
	 * @param directly
	 * 			表示是直接删除还是从服务器删除
	 * @param removeSelf
	 * 			是否把自己从对方的好友列表中删除
	 */
	public void deleteFriend(User f, boolean directly, boolean removeSelf) {
		if(directly && f != null) {
			Group g = f.group;
			g.removeUser(f);
			if(g.users.size() == 0)
				blindHelper.collapseGroup(g);
			blindHelper.refreshGroup(g);	
		} else {
			// 请求服务器删除该好友
			deleteFriendFromServer(f.qq, true, removeSelf, null);
		}
	}
	
    /**
	 * 从服务器上删除一个好友
	 * 
	 * @param qqNum
	 * 			要删除的QQ号,为0表示不执行删除动作
	 * @param doDelete
	 * 			表示是否从向服务器发请求要求删除这个好友,如果这个QQ号不在我好友列表里面就不需要
	 * @param removeSelf
	 * 			表示是否把自己也从这个好友的列表中删除
	 * @param g
	 * 			表示这个好友删除后把它放置到哪个组,如果为null则忽略
	 */
	public void deleteFriendFromServer(int qqNum, boolean doDelete, boolean removeSelf, Group g) {
		// 如果删除请求包发送成功,则加入到删除请求哈希表中
		if(doDelete)
			client.deleteFriend(qqNum);
		if(removeSelf)
			client.removeSelfFrom(qqNum);
		if(g != null)
			deleteToMap.put(qqNum, g);
	}
	
	public Label getSystemMenuButton() {
		return btnSysMenu;
	}
	
	public Label getSMSButton() {
		return btnSMS;
	}
	
	/**
	 * 处理
	 * @param e
	 */
	public void handleRuntimeError(QQEvent e) {
	    // 隐藏窗口
		stopWaitingPanelAnimation();
		setVisible(false);
		// 退出登录
		getClient().getUser().setStatus(QQ.QQ_STATUS_OFFLINE);
		logout();
		// 打开报告窗口
		CrashDialog dialog = new CrashDialog(this, ((ErrorPacket)e.getSource()).errorMessage);
		dialog.open();
	}
	
	/**
	 * 重新开始登录流程
	 * 
	 * @param e
	 */
	public void restartLogin(QQEvent e) {
	    // 隐藏窗口
		stopWaitingPanelAnimation();
		setVisible(false);
		// 退出登录
		getClient().getUser().setStatus(QQ.QQ_STATUS_OFFLINE);
		logout();
	    // 显示错误提示框
		if(e != null) {
			String msg = "";
			if(e.getSource() instanceof LoginReplyPacket)
				msg = ((LoginReplyPacket)e.getSource()).replyMessage;
			else if(e.getSource() instanceof ErrorPacket)
				msg = ((ErrorPacket)e.getSource()).errorMessage;
			MessageDialog.openError(getShell(), 
					message_box_login_fail_title, 
					(msg == null || msg.trim().equals("")) ? error_login_fail : msg);			
		}
		relaunchLoginDialog();
	}
	
	/**
	 * 重新打开登录对话框
	 */
	public void relaunchLoginDialog() {
		// 再次显示登录对话框
		LoginDialog login = new LoginDialog(getShell(), true);
		if(login.open()) {
			// 创建QQ用户对象
			QQUser me = new QQUser(login.getQQ(), login.getMd5Password());
			if(login.isLoginHidden()) {
				me.setLoginMode(QQ.QQ_LOGIN_MODE_HIDDEN);
				me.setStatus(QQ.QQ_STATUS_HIDDEN);
			} else {
				me.setLoginMode(QQ.QQ_LOGIN_MODE_NORMAL);
				me.setStatus(QQ.QQ_STATUS_ONLINE);
			}
			// 设置用户对象
			getClient().setUser(me);
			// 初始化用户文件路径
			LumaQQ.initUserFilePath(me);
			// 设置client,相当于刷新各种数据
			setClient(getClient());
			// 检查是否使用登录框的网络设置
			if(login.isUseNetworkSetting()) 
				LumaQQ.syncLoginOption(login.getLogins().getNetwork(), optionHelper);
			// relayout
			getBlind().layout();
			// 打开主界面
			setVisible(true);
			setWaitingPanelHint(hint_login);
			resumeWaitingPanelAnimation();
			checkLogin(false, false);
		} else
			close();
	}

	/**
	 * 改变当前用户
	 */
	public void changeUser() {
		LoginDialog login = new LoginDialog(shell, true);
		if(login.open()) {
			int qqNum = login.getQQ();
			if(myModel.qq != qqNum) {
				// 重设界面
				switchPanel(PANEL_WAITING);
				setWaitingPanelHint(hint_login);
				resumeWaitingPanelAnimation();
				// 登出
				client.logout();
				uiHelper.setTrayIconByStatus();
				// 创建QQ用户对象
				QQUser me = new QQUser(qqNum, login.getMd5Password());
				if(login.isLoginHidden()) {
					me.setLoginMode(QQ.QQ_LOGIN_MODE_HIDDEN);
					me.setStatus(QQ.QQ_STATUS_HIDDEN);
				} else {
					me.setLoginMode(QQ.QQ_LOGIN_MODE_NORMAL);
					me.setStatus(QQ.QQ_STATUS_ONLINE);
				}
				// 创建QQ客户端对象
				client.setUser(me);
				// 初始化用户文件路径
				LumaQQ.initUserFilePath(me);
				// 设置client
				setClient(this.client);
				// 检查是否使用登录框的网络设置
				if(login.isUseNetworkSetting()) 
					LumaQQ.syncLoginOption(login.getLogins().getNetwork(), optionHelper);
				// 设置tray的tooltip
				if(item != null)
					item.setToolTipText("LumaQQ " + String.valueOf(myModel.qq));
				// 登陆
				checkLogin(false, false);
			}							
		}	
	}

	public ClusterCustomFaceReceiver getFaceReceiver() {
		return faceReceiver;
	}

	/**
	 * @param f
	 */
	public void addOnline(User f) {
		currentOnlines.add(f);
	}
	
	public Label getSystemMessageButton() {
		return btnSysMsg;
	}

	public TrayItem getTrayItem() {
		return item;
	}

	public Ring getStatusRing() {
		return statusRing;
	}

	/**
	 * @return Returns the optionHelper.
	 */
	public OptionHelper getOptionHelper() {
		return optionHelper;
	}
	
	public ClusterCategoryTool getClusterCategoryUtility() {
		return ccu;
	}

	/**
	 * 收到提取消息按键时调用此方法
	 */
	public void onMessageKey() {
		if(mq.hasNext()) {
			populateMessage();
		} else {
			menuHelper.setStatusMenuVisible(false);
			if(shell.getMinimized()) {
				shell.setLocation(shellLocation);
				shell.setMinimized(false);
				shell.setVisible(true);				
			} else if(isAutoDockEnabled() && isDocking())
				pend();
		}
	}

	public IHotkeyListener getMessageKeyListener() {
		return messageKeyListener;
	}

	public Listener getFalseMessageKeyListener() {
		return falseMessageKeyListener;
	}
	
	public void off() {
		((AutoDockManager)getShell().getData(AutoDockManager.DOCK_MANAGER)).off();
	}
	
	private boolean isAutoDockEnabled() {
		return getShell().getData(AutoDockManager.DOCK_MANAGER) != null;
	}
	
	/**
	 * 主窗口是否停靠状态
	 * 
	 * @return
	 */
	private boolean isDocking() {
		return ((AutoDockManager)getShell().getData(AutoDockManager.DOCK_MANAGER)).isDocking();
	}
	
	/**
	 * 主窗口是否在屏幕边缘
	 * 
	 * @return
	 */
	private boolean isPending() {
		return ((AutoDockManager)getShell().getData(AutoDockManager.DOCK_MANAGER)).isPending();
	}
	
	/**
	 * 主窗口是否没有dock,也没有pending
	 * 
	 * @return
	 */
	public boolean isOff() {
		AutoDockManager manager = (AutoDockManager)getShell().getData(AutoDockManager.DOCK_MANAGER);
		if(manager == null)
			return true;
		else
			return manager.isOff();
	}

	/**
	 * 按了短信按钮
	 */
	private void onSMS() {
		ReceiveIMPacket packet = (ReceiveIMPacket)mq.getSMS();
		if(packet == null)
			shellLauncher.openSMSWindow();
		else {
			if(packet.sms.sender == 10000) {
				/*
				 * 打开普通手机消息
				 */
				String mobile = packet.sms.senderName;
				SMSWindow window = shellLauncher.openSMSWindow(mobile);
				window.putSMS(packet);
				packet = (ReceiveIMPacket)mq.getSMS(mobile);
				while(packet != null) {
					window.putSMS(packet);
					packet = (ReceiveIMPacket)mq.getSMS(mobile);					
				}
			} else{
				/*
				 * 打开移动QQ和绑定手机用户消息
				 */
				User f = ModelRegistry.getUser(packet.sms.sender);
				if(f == null) {
					f = new User();
					f.qq = packet.sms.sender;
				}
				SMSWindow window = shellLauncher.openSMSWindow(f);
				window.putSMS(packet);
				packet = (ReceiveIMPacket)mq.getSMS(f.qq);
				while(packet != null) {
					window.putSMS(packet);
					packet = (ReceiveIMPacket)mq.getSMS(f.qq);				

⌨️ 快捷键说明

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