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

📄 contactitem.java.svn-base

📁 类似QQ的功能
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
			break;
		case CONTACTITEM_EXTERNAL_IP:
			extIP = arrayToLongIP(value);
			break;
//#sijapp cond.end #
			
		case CONTACTITEM_SS_DATA:
			ssData = value;
			break;
		//#sijapp cond.if target!="DEFAULT" & modules_AVATARS="true"#
		case CONTACTITEM_BUDDYICON_HASH:
			biHash = value;
			break;
		case CONTACTITEM_BUDDYICON_HASH_READY:
			biHashDone = value;
			break;
		//#sijapp cond.end #
		}
	}

	synchronized public byte[] getBytesArray(int key)
	{
		switch (key)
		{
//#sijapp cond.if (target != "DEFAULT") & (modules_FILES = "true")#
		case CONTACTITEM_INTERNAL_IP:
			return longIPToByteAray(intIP);
		case CONTACTITEM_EXTERNAL_IP:
			return longIPToByteAray(extIP);
//#sijapp cond.end #
			
		case CONTACTITEM_SS_DATA:
			return ssData;
		//#sijapp cond.if target!="DEFAULT" & modules_AVATARS="true"#
		case CONTACTITEM_BUDDYICON_HASH:
			return biHash;
		case CONTACTITEM_BUDDYICON_HASH_READY:
			return biHashDone;
		//#sijapp cond.end #
		}
		return null;
	}

	public void saveToStream(DataOutputStream stream) throws IOException
	{
		stream.writeByte(0);
		stream.writeInt(idAndGropup);
		stream.writeInt(booleanValues & (CONTACTITEM_IS_TEMP | CONTACTITEM_NO_AUTH | CONTACTITEM_IS_PHANTOM));
		stream.writeInt(uinLong);
		stream.writeUTF(name);
		if (ssData != null)
		{
			stream.writeShort(ssData.length);
			stream.write(ssData);
		}
		else stream.writeShort(0);
		stream.writeLong(privacyData);
	}

	public void loadFromStream(DataInputStream stream) throws IOException
	{
		idAndGropup = stream.readInt();
		booleanValues = stream.readInt();
		uinLong = stream.readInt();
		name = stream.readUTF();
		int ssInfoLen = stream.readShort();
		if (ssInfoLen != 0)
		{
			ssData = new byte[ssInfoLen];
			stream.read(ssData);
		}
		else ssData = null;
		privacyData = stream.readLong();
	}

	public void init(int id, int group, String uin, String name,
			boolean noAuth, boolean added)
	{
		synchronized (this)
		{
			if (id == -1)
				setIntValue_(ContactItem.CONTACTITEM_ID, ContactList.generateNewIdForBuddy());
			else
				setIntValue_(ContactItem.CONTACTITEM_ID, id);
			setIntValue_(ContactItem.CONTACTITEM_GROUP, group);
			setStringValue_(ContactItem.CONTACTITEM_UIN, uin);
			setStringValue_(ContactItem.CONTACTITEM_NAME, name);
			setStringValue_(ContactItem.CONTACTITEM_XSTATUSMSG, new String(""));
			setBooleanValue_(ContactItem.CONTACTITEM_NO_AUTH, noAuth);
			setBooleanValue_(ContactItem.CONTACTITEM_IS_TEMP, false);
			setBooleanValue_(ContactItem.CONTACTITEM_HAS_CHAT, false);
			setBooleanValue_(ContactItem.CONTACTITEM_ADDED, added);
			setIntValue_(ContactItem.CONTACTITEM_STATUS,
					ContactList.STATUS_OFFLINE);
			setIntValue_(ContactItem.CONTACTITEM_CAPABILITIES,
					Icq.CAPF_NO_INTERNAL);
			//#sijapp cond.if target!="DEFAULT" & modules_AVATARS="true"#
			setBytesArray(ContactItem.CONTACTITEM_BUDDYICON_HASH, new byte[16]);
			setBytesArray(ContactItem.CONTACTITEM_BUDDYICON_HASH_READY, new byte[16]);
			//#sijapp cond.end#

//#sijapp cond.if (target != "DEFAULT") & (modules_FILES = "true")#
			setBytesArray(ContactItem.CONTACTITEM_INTERNAL_IP, new byte[4]);
			setBytesArray(ContactItem.CONTACTITEM_EXTERNAL_IP, new byte[4]);
			setIntValue_(ContactItem.CONTACTITEM_DC_PORT, 0);
			setIntValue_(ContactItem.CONTACTITEM_DC_TYPE, 0);
			setIntValue_(ContactItem.CONTACTITEM_ICQ_PROT, 0);
			setIntValue_(ContactItem.CONTACTITEM_AUTH_COOKIE, 0);
//#sijapp cond.end#

			setIntValue_(ContactItem.CONTACTITEM_SIGNON, -1);
			setIntValue_(ContactItem.CONTACTITEM_REG, -1);
			online = -1;
			setIntValue_(ContactItem.CONTACTITEM_IDLE, -1);
			setIntValue_(ContactItem.CONTACTITEM_CLIENT, Icq.CLI_NONE);
			setStringValue_(ContactItem.CONTACTITEM_CLIVERSION, "");
			xStatusId = -1;
		}
	}
	
	public static void updateColorValues()
	{
		clrNormal = Options.getSchemeColor(Options.CLRSCHHEME_TEXT, -1);
		clrHasChat = Options.getSchemeColor(Options.CLRSCHHEME_OUTGOING, -1);
		clrFantom = 0x808080;
	}

	/* Constructor for an existing contact item */
	public ContactItem(int id, int group, String uin, String name,
			boolean noAuth, boolean added)
	{
		this.init(id, group, uin, name, noAuth, added);
	}

	public ContactItem()
	{
		xStatusId = -1;
	}

	//#sijapp cond.if target!="DEFAULT" & modules_AVATARS="true"#
	/* Returns true if buddy icon can to be downloaded */
	synchronized public boolean iconReady()
	{
		if (Util.byteArrayIsEmpty(biHash, biHash.length))
			return false;
		
		if (Util.byteArrayEquals(biHash, 0, biHashDone, 0, biHash.length))
			return false;

		if (buddyIcon != null)
			return false;

		return true;
	}
	//#sijapp cond.end#

	/* Returns true if client supports given capability */
	synchronized public boolean hasCapability(int capability)
	{
		return ((capability & this.caps) != 0x00000000);
	}

	/* Adds a capability by its CAPF value */
	public void addCapability(int capability)
	{
		this.caps |= capability;
	}

	public String getLowerText()
	{
		if (lowerText == null)
		{
			lowerText = name.toLowerCase();
			if (lowerText.equals(name))
				lowerText = name; // to decrease memory usage 
		}
		return lowerText;
	}

	/* Returns color for contact name */
	public int getTextColor()
	{
		synchronized (this)
		{
			int color;
			if (getBooleanValue_(CONTACTITEM_IS_TEMP)) color =  clrFantom;
			else color = getBooleanValue_(ContactItem.CONTACTITEM_HAS_CHAT) ? clrHasChat : clrNormal; 
			return VirtualList.checkTextColor(color);
		}
	}

	/* Returns font style for contact name */
	public int getFontStyle()
	{
		return getBooleanValue(ContactItem.CONTACTITEM_HAS_CHAT) ? Font.STYLE_BOLD
				: Font.STYLE_PLAIN;
	}

	public int getUIN()
	{
		return uinLong;
	}

	/* Returns image index for contact */
	public Image getLeftImage(boolean expanded)
	{
		//#sijapp cond.if target isnot "DEFAULT"#		
		if (typing) return JimmUI.imgTyping;
		//#sijapp cond.end#
		Image result = null;
		if (getBooleanValue(CONTACTITEM_B_PLMESSAGES)) result = JimmUI.eventPlainMessageImg;
		else if (getBooleanValue(CONTACTITEM_B_URLMESSAGES)) result = JimmUI.eventUrlMessageImg;
		else if (getBooleanValue(CONTACTITEM_B_AUTREQUESTS)) result = JimmUI.eventSystemNoticeImg;
		else if (getBooleanValue(CONTACTITEM_B_SYSNOTICES)) result = JimmUI.eventSysActionImg;
		else if (getBooleanValue(CONTACTITEM_NO_AUTH)) result = JimmUI.imgNoAuth;
			
		else
		{
			StatusInfo stInfo = JimmUI.findStatus(StatusInfo.TYPE_STATUS, getIntValue(ContactItem.CONTACTITEM_STATUS));
			result = (stInfo != null) ? stInfo.getImage() : null;
		}
		return result;
	}
	
	public Image getSecondLeftImage()
	{
		StatusInfo xStInfo = JimmUI.findStatus(StatusInfo.TYPE_X_STATUS, getIntValue(ContactItem.CONTACTITEM_XSTATUS));
		return (xStInfo != null) ? xStInfo.getImage() : null;
	}
	
	/* Returns image index client */
	public Image getRightImage()
	{
		return ContactList.cliImages.elementAt(Icq.getClientImageID(getIntValue(CONTACTITEM_CLIENT))); 
	}

	static private StringBuffer tmpStringBuffer = new StringBuffer();	
	
	public String getText()
	{
		if (tmpStringBuffer.length() != 0)
			tmpStringBuffer.delete(0, tmpStringBuffer.length());
		
		synchronized (this)
		{
			if (getBooleanValue_(CONTACTITEM_IS_PHANTOM))
			{
				if (tmpStringBuffer.length() != 0) tmpStringBuffer.append(',');
				tmpStringBuffer.append("f");
			}
			
			if (getIntValue_(CONTACTITEM_IGN_ID) != 0)
			{
				if (tmpStringBuffer.length() != 0) tmpStringBuffer.append(',');
				tmpStringBuffer.append('d');
			}
			
			if (getIntValue_(CONTACTITEM_INV_ID) != 0)
			{
				if (tmpStringBuffer.length() != 0) tmpStringBuffer.append(',');
				tmpStringBuffer.append('i');
			}
			
			if (getIntValue_(CONTACTITEM_VIS_ID) != 0)
			{
				if (tmpStringBuffer.length() != 0) tmpStringBuffer.append(',');
				tmpStringBuffer.append('v');
			}
			
			if (tmpStringBuffer.length() != 0)
			{
				return "["+tmpStringBuffer.toString()+"] "+name;
			}
			
			return name;
		}
	}

	/* Returns true if contact must be shown even user offline
	 and "hide offline" is on */
	protected boolean mustBeShownAnyWay()
	{
		return getBooleanValue(ContactItem.CONTACTITEM_HAS_CHAT|ContactItem.CONTACTITEM_IS_TEMP);
	}

	/* Returns total count of all unread messages (messages, sys notices, urls, auths) */
	synchronized protected boolean isContainingUnreadMessages()
	{
		return getBooleanValue(
			CONTACTITEM_B_PLMESSAGES|
			CONTACTITEM_B_URLMESSAGES|
			CONTACTITEM_B_SYSNOTICES|
			CONTACTITEM_B_AUTREQUESTS
		);
	}

	public synchronized void resetUnreadMessages()
	{
		setBooleanValue(
				CONTACTITEM_B_PLMESSAGES|
				CONTACTITEM_B_URLMESSAGES|
				CONTACTITEM_B_SYSNOTICES|
				CONTACTITEM_B_AUTREQUESTS,
				false
			);		
	}

	//#sijapp cond.if modules_HISTORY is "true" #
	public void showHistory()
	{
		HistoryStorage.showHistoryList(
				getStringValue(ContactItem.CONTACTITEM_UIN), name);
	}

	//#sijapp cond.end#


	//#sijapp cond.if target isnot "DEFAULT"#
	private boolean typing = false; // TODO: make as boolean flag

	public void BeginTyping(boolean type)
	{
		typing = type;
		setStatusImage();
	}

	//#sijapp cond.end#	
	/** ************************************************************************* */
	/** ************************************************************************* */
	/** ************************************************************************* */

	/* Sets new contact name */
	public void rename(String newName)
	{
		if ((newName == null) || (newName.length() == 0))
			return;
		name = newName;
		lowerText = null;
		try
		{
			/* Save ContactList */
			ContactList.save();

			/* Try to save ContactList to server */
			if (!getBooleanValue(CONTACTITEM_IS_TEMP))
			{
				UpdateContactListAction action = new UpdateContactListAction(
						this, UpdateContactListAction.ACTION_RENAME);
				Icq.requestAction(action);
			}
		} catch (JimmException je)
		{
			if (je.isCritical())
				return;
		} catch (Exception e)
		{
			/* Do nothing */
		}

		ContactList.contactChanged(this, true, true);
		ChatHistory.contactRenamed(getStringValue(ContactItem.CONTACTITEM_UIN), name);
	}

	/* Activates the contact item menu */
	public void activate()
	{
		Jimm.aaUserActivity();
		
		String currentUin = getStringValue(ContactItem.CONTACTITEM_UIN);

		/* Display chat history */
		if (getBooleanValue(ContactItem.CONTACTITEM_HAS_CHAT))
		{
			ChatTextList chat = ChatHistory.getChatHistoryAt(currentUin);
			chat.activate();
		} 
		else
		/* Display menu */
		{
			JimmUI.showContactMenu(this);
		}
	}
	
	public boolean isScreenActive()
	{
		return JimmUI.isContactMenuActive(this);
	}
	

	/****************************************************************************/
	/****************************************************************************/
	/***/

	public void setStatusImage()
	{
		Image image = null;
		Image xImage = null;

//#sijapp cond.if target isnot "DEFAULT"#
		if (typing) image = JimmUI.imgTyping;
		else
		{
			StatusInfo statInfo = JimmUI.findStatus(StatusInfo.TYPE_STATUS, getIntValue(CONTACTITEM_STATUS));
			if (statInfo != null) image = statInfo.getImage();  
			StatusInfo xStatInfo = JimmUI.findStatus(StatusInfo.TYPE_X_STATUS, getIntValue(CONTACTITEM_XSTATUS));
			if (xStatInfo != null) xImage = xStatInfo.getImage();  
		}
//#sijapp cond.else#
//#		StatusInfo statInfo = JimmUI.findStatus(StatusInfo.TYPE_STATUS, getIntValue(CONTACTITEM_STATUS));
//#		if (statInfo != null) image = statInfo.getImage();  
//#sijapp cond.end#

		if (SplashCanvas.locked())
		{
			SplashCanvas.setStatusToDraw(image);
			SplashCanvas.setMessage(getStringValue(CONTACTITEM_NAME));
			SplashCanvas.Repaint();
			return;
		}

		ChatTextList chat = ChatHistory.getChatHistoryAt(getStringValue(CONTACTITEM_UIN));
		
		if (chat != null) chat.setImages(new Image[] {image, xImage});
	}
}

⌨️ 快捷键说明

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