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

📄 uihelper.java

📁 java写的qq代码实现qq的部分功能
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
					else if(pName.equals(IQQNode.REAL_NAME)) {
						/* 如果f中没有这个属性,且属性名是realName,那么检查一下这个好友是否有备注信息 */
						Remark r = RemarkUtil.getInstance().getRemark((Integer)f.getProperty(IQQNode.QQ_NUMBER));
						if(r != null && !r.getName().equals("")) {
							f.addProperty(INode.NAME, r.getName());
							f.addProperty(IQQNode.REAL_NAME, r.getName());
						}
					}
				}				
			}
		}
	}
	
	/**
	 * 得到索引g指定的组,检查它目前是否需要闪烁图标,根据检查结果重置图标特效状态
	 * 
	 * @param g
	 * 		组索引
	 */
	public void resetGroupImageEffect(int g) {
	    MessageQueue mq = main.getMessageQueue();
	    MVCHelper mvcHelper = main.getMVCHelper();
	    
		CoolButton tab = main.getShutter().getTabControl(g);
		// 检查这个组还有没有消息,没有了就停止闪烁,有就闪烁下一个消息发送者的头像				
		tab.stopBlinkImage();
		if(mq.hasGroupMessage(g)) {
			int sender = mq.nextGroupSender(g);
			FriendModel nextFriend = mvcHelper.getFriendModel(sender);
			if(nextFriend != null)
				tab.startBlinkImage(HeadFactory.getOnlineHead(nextFriend));
			else {
				// 为null则可能是群
				ClusterModel nextCluster = mvcHelper.getClusterModel(sender);
				if(nextCluster != null)
					tab.startBlinkImage(nextCluster.getImage());
			}
		}
	}
	
	/**
	 * 重设组内好友或者群的动画状态
	 * 
	 * @param g
	 * 		组索引
	 */
	public void resetFriendClusterImageEffect(int g) {
	    ShutterModel model = main.getModel();	    
	    MessageQueue mq = main.getMessageQueue();
	    Shutter shutter = main.getShutter();
	    int itemCount = model.getItemCount(g);
	    for(int i = 0; i < itemCount; i++) {
	        Object obj = model.getItem(g, i);
	        if(obj instanceof FriendModel) {
	            FriendModel f = (FriendModel)obj;
	            if(mq.hasMessage(f.getQQ())) {
	                shutter.getItemControl(g, i).startBounceImage(HeadFactory.getOnlineHead(f));
	            }
	        } else if(obj instanceof ClusterModel) {
	            ClusterModel c = (ClusterModel)obj;
	            if(mq.hasMessage(c.getClusterId()))
	                shutter.getItemControl(g, i).startBounceImage(c.getImage());
	        }
	    }
	}
	
	/**
	 * 重置所有动画状态
	 */
	public void resetAllImageEffect() {
	    int tabCount = main.getModel().getTabCount();
	    for(int i = 0; i < tabCount; i++) {
	        GroupModel gModel = (GroupModel)main.getModel().getTab(i);
	        if(!gModel.getName().equals(LumaQQ.getString("group.default.latest"))) {
	            resetGroupImageEffect(i);
	            resetFriendClusterImageEffect(i);
	        }
	    }
	    resetTrayImageEffect();
	}
	
	/**
	 * 这个方法检查总消息队列,根据检查的结果,重新设置系统托盘的图标特效状态
	 */
	public void resetTrayImageEffect() {
	    MessageQueue mq = main.getMessageQueue();
	    MVCHelper mvcHelper = main.getMVCHelper();
	    
		// 检查总队列还有没有消息,如果没有就停止闪烁,有就闪烁下一个图标,注意这里可能出现
		//     系统消息,系统消息的图标的得到和头像的得到是不一样的
		stopBlinkImage();
		if(mq.hasNext()) {			
			int source = mq.nextMessageSource();
			int sender = mq.nextSender();
			if(source == QQ.QQ_IM_FROM_USER) {
				FriendModel f = mvcHelper.getFriendModel(sender);	
				if(f != null)
				startBlinkImage(HeadFactory.getOnlineSmallHead(f));					
			} else if(source == QQ.QQ_IM_FROM_CLUSTER){
				ClusterModel c = mvcHelper.getClusterModel(sender);
				if(c != null)
					startBlinkImage(icons.getSmallClusterHead(c.getFaceId()));
			} else if(source == QQ.QQ_IM_FROM_SMS) {
			    startBlinkImage(icons.getImage(IconHolder.icoMobile));
			} else 
				startBlinkImage(icons.getImage(IconHolder.icoSysMsg));
		}
	}

	/**
	 * 显示所有好友
	 */
	public void showAllFriend() {
	    ShutterModel model = main.getModel();
	    Shutter shutter = main.getShutter();
	    
		// 显示所有用户
		int tabSize = model.getTabCount();
		for(int i = 0; i < tabSize; i++) {
			// 对于群组,我们不响应这个菜单事件
			GroupModel g = (GroupModel)model.getTab(i);
			if(g.isCluster() || !g.isFriendly()) continue;
			// 不是群组就显示所有的用户
			int itemSize = model.getItemCount(i);
			if(itemSize > 0) {
				// 为了提高刷新速度,这里用false,然后再统一刷新
				for(int j = 0; j < itemSize; j++) {
					shutter.showItem(i, j, false);
				}
				shutter.refreshTabView(i);	
			}
		}
		OptionUtil.getInstance().setShowOnlineOnly(false);
	}
	
	/**
	 * 显示大头像还是小头像
	 * @param b
	 */
	public void showSmallFace(boolean b) {
	    Shutter shutter = main.getShutter();
		if(b) {
			shutter.setShowSmallImage(true);
			shutter.setTextOrientation(SWT.RIGHT);
		} else {
			shutter.setShowSmallImage(false);
			shutter.setTextOrientation(SWT.BOTTOM);
		}
		OptionUtil.getInstance().setSmallFace(b);
	}

	/**
	 * 设置所有的好友状态在下线
	 */
	public void setAllFriendOffline() {
	    ShutterModel model = main.getModel();
		int tabSize = model.getTabCount();
		for(int i = 0; i < tabSize; i++) {
			GroupModel g = (GroupModel)model.getTab(i);
			if(g.isCluster()) continue;
			int itemSize = model.getItemCount(i);
			for(int j = 0; j < itemSize; j++) {
				FriendModel f = (FriendModel)model.getItem(i, j);
				f.addProperty(IQQNode.STATUS, IQQNode.VALUE_OFFLINE);
			}
		}
	}
	
	/**
	 * 设置tray icon和状态按钮的图标文字符合用户的当前状态
	 */
	public void setIconByStatus() {
		switch(main.getClient().getUser().getStatus()) {
			case QQ.QQ_FRIEND_STATUS_ONLINE:
				main.setStatusImage(icons.getImage(IconHolder.icoOnline));
				main.setTrayItemImage(icons.getImage(IconHolder.icoOnline));
				main.setStatusText(LumaQQ.getString("menu.status.online"));
				break;
			case QQ.QQ_FRIEND_STATUS_AWAY:
			    main.setStatusImage(icons.getImage(IconHolder.icoAway));
				main.setTrayItemImage(icons.getImage(IconHolder.icoAway));
				main.setStatusText(LumaQQ.getString("menu.status.away"));
				break;
			case QQ.QQ_FRIEND_STATUS_HIDDEN:
			    main.setStatusImage(icons.getImage(IconHolder.icoHidden));
				main.setTrayItemImage(icons.getImage(IconHolder.icoHidden));
				main.setStatusText(LumaQQ.getString("menu.status.hidden"));
				break;
			case QQ.QQ_FRIEND_STATUS_OFFLINE:
			    main.setStatusImage(icons.getImage(IconHolder.icoOffline));
				main.setTrayItemImage(icons.getImage(IconHolder.icoOffline));
				main.setStatusText(LumaQQ.getString("menu.status.offline"));
				break;
		}
	}
	
	/**
	 * 收起群,隐藏所有成员
	 * <p>
	 * 暂时没有用到这个方法
	 * </p>
	 * 
	 * @param c
	 * 			ClusterModel
	 */
	public void collapseCluster(ClusterModel c) {
	    ShutterModel model = main.getModel();
	    Shutter shutter = main.getShutter();
	    MVCHelper mvcHelper = main.getMVCHelper();
	    
		// 得到群组索引
		int[] cluster = mvcHelper.listClusterGroup();
		// 查看每一个FriendModel,如果其parent是c,则显示他
		if(cluster != null && cluster.length > 0) {
			int itemSize = model.getItemCount(cluster[0]);
			for(int i = 0; i < itemSize; i++) {
				INode node = model.getItem(cluster[0], i);
				if(node instanceof FriendModel) {
					if(node.getProperty(IQQNode.PARENT) == c)
						shutter.hideItem(cluster[0], i, false);
				}
			}
			shutter.refreshTabView(cluster[0]);
		}
	}
	
	/**
	 * 展开群,显示群中的所有成员
	 * <p>
	 * 暂时没有用到这个方法
	 * </p>
	 * 
	 * @param c
	 * 			ClusterModel
	 */
	public void expandCluster(ClusterModel c) {
	    ShutterModel model = main.getModel();
	    Shutter shutter = main.getShutter();
	    MVCHelper mvcHelper = main.getMVCHelper();
	    
		// 得到群组索引
		int[] cluster = mvcHelper.listClusterGroup();
		// 查看每一个FriendModel,如果其parent是c,则显示他
		if(cluster != null && cluster.length > 0) {
			int itemSize = model.getItemCount(cluster[0]);
			for(int i = 0; i < itemSize; i++) {
				INode node = model.getItem(cluster[0], i);
				if(node instanceof FriendModel) {
					if(node.getProperty(IQQNode.PARENT) == c)
						shutter.showItem(cluster[0], i, false);
				}
			}
			shutter.refreshTabView(cluster[0]);
		}
	}
}

⌨️ 快捷键说明

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