📄 contactitem.java.svn-base
字号:
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 + -