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

📄 updatecontactlistaction.java.svn-base

📁 类似QQ的功能
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
					this.state = STATE_ADD_GROUP2;					break;				case STATE_ADD_GROUP2:					ContactList.addGroup(this.gItem);					Icq.sendCLI_ADDEND();					this.state = STATE_COMPLETED;					break;				/* STATE_ADD */				case STATE_REQ_AUTH1:					sendGroup(gItem);					Icq.sendCLI_ADDEND();					this.state = STATE_COMPLETED;					break;				case STATE_ADD_CONTACT1:					sendGroup(gItem);					cItem.setBooleanValue(ContactItem.CONTACTITEM_IS_TEMP, false);					if (cItem.getBooleanValue(ContactItem.CONTACTITEM_NO_AUTH) == false)					{						this.state = STATE_COMPLETED;						Icq.sendCLI_ADDEND();					}					else					{						this.state = STATE_ADD_CONTACT2;					}										break;									case STATE_ADD_CONTACT2:					Icq.sendCLI_ADDEND();					this.state = STATE_COMPLETED;					break;				/* STATE_CLI_ROSTERMODIFY_SENT */				case STATE_CLI_ROSTERMODIFY_SENT:					if (this.action != ACTION_RENAME)						Icq.sendCLI_ADDEND();					this.state = STATE_COMPLETED;					break;					                /* STATE_MOVE */                case STATE_MOVE1:                     sendGroup(newGItem);                     state = STATE_MOVE2;                     break;                case STATE_MOVE2:                	 Icq.sendCLI_ADDEND();                     state = STATE_COMPLETED;                     break;									/* STATE_DELETE_CONTACT */				case STATE_DELETE_CONTACT1:					ContactListGroupItem group = ContactList							.getGroupById(cItem									.getIntValue(ContactItem.CONTACTITEM_GROUP));					ContactList.removeContactItem(this.cItem);					if (group != null) {					    sendGroup(group);					    state = STATE_DELETE_CONTACT2;					} else					{					    Icq.sendCLI_ADDEND();					    this.state = STATE_COMPLETED;					}					break;				case STATE_DELETE_CONTACT2:					Icq.sendCLI_ADDEND();					this.state = STATE_COMPLETED;					break;				}				/* Packet has been consumed */				consumed = true;				/* Update activity timestamp */				lastActivity = System.currentTimeMillis();			}		} /* end 'if (packet instanceof SnacPacket)' */		/* Return consumption flag */		return (consumed);	}	private void sendGroupsList() throws JimmException	{		Icq.sendPacket(new SnacPacket(SnacPacket.CLI_ROSTERUPDATE_FAMILY,				SnacPacket.CLI_ROSTERUPDATE_COMMAND, Util.getCounter(),				new byte[0], packGroups()));	}	static private void sendGroup(ContactListGroupItem group)			throws JimmException	{		Icq.sendPacket(new SnacPacket(SnacPacket.CLI_ROSTERUPDATE_FAMILY,				SnacPacket.CLI_ROSTERUPDATE_COMMAND, Util.getCounter(),				new byte[0], packRosterItem(group)));	}	/* Forwards received packet, returns true if packet was consumed */	protected synchronized boolean forward(Packet packet) throws JimmException	{		boolean result = processPaket(packet);		if (result && (errorCode != 0))		{			/* Send a CLI_ADDEND packet */			if (/*(action != ACTION_MOVE) && */(action != ACTION_RENAME))				Icq.sendCLI_ADDEND();			/* Update activity timestamp */			lastActivity = System.currentTimeMillis();		}		return result;	}	/* Returns true if the action is completed */	public boolean isCompleted()	{		return (this.state == UpdateContactListAction.STATE_COMPLETED);	}	public void onEvent(int eventType)	{		switch (eventType)		{		case ON_COMPLETE:			switch (action)			{			case ACTION_ADD:			case ACTION_DEL:			case ACTION_MOVE:				ContactList.optionsChanged(true, true);				break;			}			MainThread.activateContactListMT(null);			if ((action != ACTION_DEL) && (cItem != null))				ContactList.contactChanged(cItem, true, false);			break;		case ON_ERROR:			if (errorCode != 0)				JimmException.handleException(new JimmException(errorCode, 0,						true));			else				JimmException.handleException(new JimmException(154, 3, true));			break;		}	}	/* Returns true if an error has occured */	public boolean isError()	{		if (this.state == ConnectAction.STATE_ERROR)			return true;		if ((lastActivity + UpdateContactListAction.TIMEOUT < System				.currentTimeMillis())				|| (errorCode != 0))		{			this.state = ConnectAction.STATE_ERROR;		}		return (this.state == ConnectAction.STATE_ERROR);	}	private byte[] packRosterItem(ContactItem cItem, int groupID)	{		ByteArrayOutputStream stream = new ByteArrayOutputStream();		if (groupID == 0)			groupID = cItem.getIntValue(ContactItem.CONTACTITEM_GROUP);		/* Name */		Util.writeLenAndString(stream, cItem				.getStringValue(ContactItem.CONTACTITEM_UIN), true);		/* Group ID */		Util.writeWord(stream, groupID, true);		/* ID */		Util.writeWord(stream, cItem				.getIntValue(ContactItem.CONTACTITEM_ID), true);		/* Type (Buddy record ) */		Util.writeWord(stream, 0, true);		/* Additional data */		ByteArrayOutputStream addData = new ByteArrayOutputStream();				/* TLV(0x0066) - you are awaiting authorization for this buddy */		if (cItem.getBooleanValue(ContactItem.CONTACTITEM_NO_AUTH))		{			Util.writeWord(addData, 0x0066, true);			Util.writeWord(addData, 0x0000, true);		}		if (groupID != 0x0000) 		{			/* TLV(0x0131) - name */			if (action != ACTION_DEL)			{				Util.writeWord(addData, 0x0131, true);				Util.writeLenAndString(addData, cItem.getStringValue(ContactItem.CONTACTITEM_NAME), true);			}			/* Server-side additional data */			byte[] ssData = cItem.getBytesArray(ContactItem.CONTACTITEM_SS_DATA);			if (ssData != null)				Util.writeByteArray(addData, ssData);		}				/* Append additional data to stream */		Util.writeWord(stream, addData.size(), true);		stream.write(addData.toByteArray(), 0, addData.size());				return stream.toByteArray();	}	static private byte[] packRosterItem(ContactListGroupItem gItem)	{		ByteArrayOutputStream stream = new ByteArrayOutputStream();		/* Name */		Util.writeLenAndString(stream, gItem.getName(), true);		/* Group ID */		Util.writeWord(stream, gItem.getId(), true);		/* id */		Util.writeWord(stream, 0, true);		/* Type (Group) */		Util.writeWord(stream, 1, true);		/* Contact items */		ContactItem[] items = ContactList.getItems(gItem);		if (items.length != 0)		{			/* Length of the additional data */			Util.writeWord(stream, items.length * 2 + 4, true);			/* TLV(0x00C8) */			Util.writeWord(stream, 0xc8, true);			Util.writeWord(stream, items.length * 2, true);			for (int i = 0; i < items.length; i++)				Util.writeWord(stream, items[i]						.getIntValue(ContactItem.CONTACTITEM_ID),						true);		} else			Util.writeWord(stream, 0, true);		return stream.toByteArray();	}	private byte[] packGroups()	{		ByteArrayOutputStream stream = new ByteArrayOutputStream();		ContactListGroupItem[] gItems = ContactList.getGroupItems();		/* Name */		Util.writeLenAndString(stream, "", true);		/* Group ID */		Util.writeWord(stream, 0, true);		Util.writeWord(stream, 0, true);		Util.writeWord(stream, 1, true);		Util.writeWord(stream, gItems.length * 2 + 4, true);		Util.writeWord(stream, 0xc8, true);		Util.writeWord(stream, gItems.length * 2, true);		for (int i = 0; i < gItems.length; i++)			Util.writeWord(stream, gItems[i].getId(), true);		return stream.toByteArray();	}}

⌨️ 快捷键说明

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