亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? actionlistener.java.svn-base

?? 類似QQ的功能
?? SVN-BASE
?? 第 1 頁 / 共 3 頁
字號:
/******************************************************************************* Jimm - Mobile Messaging - J2ME ICQ clone Copyright (C) 2003-08  Jimm Project This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. ******************************************************************************** File: src/jimm/comm/ActionListener.java Version: ###VERSION###  Date: ###DATE### Author(s): Manuel Linsmayer, Andreas Rossbacher, Spassky Alexander, Igor Palkin *******************************************************************************/package jimm.comm;import java.io.ByteArrayInputStream;import jimm.ContactList;import jimm.ContactItem;import jimm.DebugLog;import jimm.Jimm;import jimm.JimmUI;import jimm.MainThread;import jimm.JimmException;import jimm.Options;import jimm.SplashCanvas;import jimm.StatusInfo;//#sijapp cond.if (target!="DEFAULT")&(modules_FILES="true")#import jimm.FileTransfer;//#sijapp cond.end#public class ActionListener{	/** ************************************************************************* */	// Forwards received packet	protected void forward(Packet packet) throws JimmException	{		// Watch out for channel 4 (Disconnect) packets		if (packet instanceof DisconnectPacket)		{			DisconnectPacket disconnectPacket = (DisconnectPacket) packet;			// Throw exception			if (disconnectPacket.getError() == 0x0001)			{ // Multiple logins				throw (new JimmException(110, 0));			} else			{ // Unknown error				throw (new JimmException(100, 0));			}		}		/** *********************************************************************** */		// Watch out for requested offline messages		if (packet instanceof FromIcqSrvPacket) {			FromIcqSrvPacket fromIcqSrvPacket = (FromIcqSrvPacket) packet;			if (fromIcqSrvPacket.getFamily() == 0x0015) {				int subCommand = fromIcqSrvPacket.getSubcommand();				switch (subCommand) {					// Watch out for SRV_OFFLINEMSG					case FromIcqSrvPacket.SRV_OFFLINEMSG_SUBCMD:						// Get raw data						byte[] buf = fromIcqSrvPacket.getData();						// Check length						if (buf.length > 13) {							// Extract UIN							long uinRaw = Util.getDWord(buf, 0, false);							String uin = String.valueOf(uinRaw);							// Extract date of dispatch							long date = Util.createLongTime(									Util.getWord(buf, 4, false),									Util.getByte(buf, 6),									Util.getByte(buf, 7),									Util.getByte(buf, 8),									Util.getByte(buf, 9),									0);							// Get type							int type = Util.getWord(buf, 10, false);							// Get text length							int textLen = Util.getWord(buf, 12, false);							// Get text							String text = Util.removeCr(Util.byteArrayToString(buf, 14, textLen, Util.isDataUTF8(buf, 14, textLen)));							// Normal message							if (type == 0x0001) {								// Check length								if (buf.length != 14 + textLen) {									throw (new JimmException(116, 1));								}								// Forward message to contact list								PlainMessage message = new PlainMessage(uin, Options.getString(Options.OPTION_UIN), Util.gmtTimeToLocalTime(date), text, true);								MainThread.addMessageSerially(message);							} // URL message							else if (type == 0x0004) {								if (buf.length != 14 + textLen) {									throw (new JimmException(116, 1));								}								// Search for delimiter								int delim = text.indexOf(0xFE);								// Split message, if delimiter could be found								String urlText;								String url;								if (delim != -1) {									urlText = text.substring(0, delim);									url = text.substring(delim + 1);								} else {									urlText = text;									url = "";								}								// Forward message message to contact list								UrlMessage message = new UrlMessage(uin, Options.getString(Options.OPTION_UIN), Util.gmtTimeToLocalTime(date), url, urlText);								MainThread.addMessageSerially(message);							}						}						break;					// Watch out for SRV_DONEOFFLINEMSGS					case FromIcqSrvPacket.SRV_DONEOFFLINEMSGS_SUBCMD:						// Send a CLI_TOICQSRV/CLI_ACKOFFLINEMSGS packet						ToIcqSrvPacket reply = new ToIcqSrvPacket(0x00000000, Options.getString(Options.OPTION_UIN), ToIcqSrvPacket.CLI_ACKOFFLINEMSGS_SUBCMD, new byte[0], new byte[0]);						Icq.c.sendPacket(reply);						break;				}			}		}		// Watch out for channel 2 (SNAC) packets		else if (packet instanceof SnacPacket)		{			SnacPacket snacPacket = (SnacPacket) packet;			// Typing notify			//#sijapp cond.if target isnot "DEFAULT"#			if ((snacPacket.getFamily() == 0x0004)					&& (snacPacket.getCommand() == 0x0014)					&& Options.getInt(Options.OPTION_TYPING_MODE) > 0)			{				byte[] p = snacPacket.getData();				int uin_len = Util.getByte(p, 10);				String uin = Util.byteArrayToString(p, 11, uin_len);				int flag = Util.getWord(p, 11 + uin_len);				DebugLog.addText("Typing notify: " + flag);				if (flag == 0x0002)					//Begin typing					MainThread.BeginTyping(uin, true);				else					//End typing					MainThread.BeginTyping(uin, false);			}			//#sijapp cond.end#			// Error after requesting offline messages?			if ((snacPacket.getFamily() == 0x0015) && (snacPacket.getCommand() == 0x0001))			{				// Get data				byte[] buf = snacPacket.getData();				// Read the error code from the packet				int errCode = Util.getWord(buf, 0);				DebugLog.addText("Error after requesting offline messages, error code: " + errCode);			}			// Watch out for SRV_USERONLINE packets			else if ((snacPacket.getFamily() == SnacPacket.SRV_USERONLINE_FAMILY)					&& (snacPacket.getCommand() == SnacPacket.SRV_USERONLINE_COMMAND))			{				int xStatus = -1;				String xStatusMessage = null;//#sijapp cond.if (target!="DEFAULT")&(modules_FILES="true")#				// DC variables				byte[] internalIP = new byte[4];				byte[] externalIP = new byte[4];				int dcPort = 0;				int dcType = -1;				int icqProt = 0;				int authCookie = 0;//#sijapp cond.end#				boolean statusChange = true;				int dwFT1 = 0, dwFT2 = 0, dwFT3 = 0;				// int wVersion = 0;				byte[] capabilities_old = null; // Buffer for old style capabilities (TLV 0x000D)				byte[] capabilities_new = null; // Buffer for new style capabilities (TLV 0x0019)				//#sijapp cond.if target!="DEFAULT" & modules_AVATARS="true"#
				// Buddy Icon				byte[] biHash = new byte[16];	// Buffer for buddy icon md5 hash				//#sijapp cond.end#				// Time variables				int idle = -1;				int online = -1;				int signon = -1;				int regdate = -1;				// Get data				byte[] buf = snacPacket.getData();				// Get UIN of the contact changing status				int uinLen = Util.getByte(buf, 0);				String uin = Util.byteArrayToString(buf, 1, uinLen);				// Get new status and client capabilities				int status = ContactList.STATUS_ONLINE;				int marker = 1 + uinLen + 2;				int tlvNum = Util.getWord(buf, marker);				marker += 2;				for (int i = 0; i < tlvNum; i++)				{					int tlvType = Util.getWord(buf, marker);					byte[] tlvData = Util.getTlv(buf, marker);					if (tlvType == 0x0006) // STATUS					{						status = (int) Util.getDWord(tlvData, 0);					} else if (tlvType == 0x000D) // Old style CAPABILITIES					{						//DebugLog.addText("Old caps");						capabilities_old = tlvData;					} else if (tlvType == 0x0019) // New style CAPABILITIES					{						//DebugLog.addText("New caps");						capabilities_new = tlvData;					}					else if (tlvType == 0x001D)					{						int marker1d = 0;						while (tlvData.length > marker1d)						{							int bart_id = Util.getWord(tlvData, marker1d);							marker1d += 2;							int bart_flg = Util.getByte(tlvData, marker1d);							marker1d ++;							int bart_len = Util.getByte(tlvData, marker1d);							marker1d ++;							//#sijapp cond.if target!="DEFAULT" & modules_AVATARS="true"#							if ((bart_id == 0x0001) && (bart_flg == 0x0001))	// ICON HASH							{								System.arraycopy(tlvData, marker1d, biHash, 0, (bart_len < 17) ? bart_len : 0x0010);							}							else							//#sijapp cond.end#							if ((bart_id == 0x0002) && (bart_flg == 0x0004))							{								int textLen = (int)Util.getWord(tlvData, marker1d);								xStatusMessage = Util.byteArrayToString(tlvData, marker1d+2, textLen, true);								if (xStatusMessage == null) xStatusMessage = new String();							}							else if ((bart_id == 0x000E) && (bart_flg == 0x0000))							{								String strData = Util.byteArrayToString(tlvData, marker1d, bart_len, false);								xStatus = Icq.detectStandartXStatus(strData);							}							marker1d += bart_len;						}					}					//#sijapp cond.if (target != "DEFAULT") & (modules_FILES = "true")#					else if (tlvType == 0x000A) // External IP					{						System.arraycopy(tlvData, 0, externalIP, 0, 4);					}					else if (tlvType == 0x000c) // DC Infos					{						// dcMarker						int dcMarker = 0;						// Get internal IP						System.arraycopy(tlvData, dcMarker, internalIP, 0, 4);						dcMarker += 4;						// Get tcp port						dcPort = (int) Util.getDWord(tlvData, dcMarker);						dcMarker += 4;						// Get DC type						dcType = Util.getByte(tlvData, dcMarker);						dcMarker++;						// Get protocol version						icqProt = Util.getWord(tlvData, dcMarker);						dcMarker += 2;						// Get auth cookie						authCookie = (int) Util.getDWord(tlvData, dcMarker);						dcMarker += 12;						// Get data for client detection						dwFT1 = (int) Util.getDWord(tlvData, dcMarker);						dcMarker += 4;						dwFT2 = (int) Util.getDWord(tlvData, dcMarker);						dcMarker += 4;						dwFT3 = (int) Util.getDWord(tlvData, dcMarker);						statusChange = false;					}//#sijapp cond.end#										else if (tlvType == 0x0003) // Signon time					{						signon = (int) Util.gmtTimeToLocalTime(Util.byteArrayToLong(tlvData));						//System.out.println(Util.getDateString(false,signon));					} else if (tlvType == 0x0004) // Idle time					{						idle = (int) Util.byteArrayToLong(tlvData) / 256;					} else if (tlvType == 0x000F) // Online time					{						online = (int) Util.byteArrayToLong(tlvData);					} else if (tlvType == 0x0005) // Date of registration					{						regdate = (int) Util.byteArrayToLong(tlvData);					}					marker += 2 + 2 + tlvData.length;				}//#sijapp cond.if (target!="DEFAULT") & (modules_FILES="true") #								ContactItem item = ContactList.getItembyUIN(uin);				if (item != null)				{					byte[] capsArray = Icq.mergeCapabilities(capabilities_old, capabilities_new);					Icq.detectUserClientAndParseCaps(item, dwFT1, dwFT2, dwFT3, capsArray, icqProt, statusChange);					if (xStatus == -1)						xStatus = Icq.detectXStatus(capsArray);				}				MainThread.updateContactList(uin, status, xStatus, xStatusMessage, internalIP, externalIP, dcPort, dcType, icqProt, authCookie, signon, online, idle, regdate					//#sijapp cond.if modules_AVATARS="true"#
					, biHash					//#sijapp cond.end#				);//#sijapp cond.else#				MainThread.updateContactList(uin, status, -1, null, null, null, 0, 0, 0, 0, signon, online, idle, regdate					//#sijapp cond.if target!="DEFAULT" & modules_AVATARS="true"#
					, null					//#sijapp cond.end#				);//#sijapp cond.end#			}			/** ********************************************************************* */			// Watch out for SRV_USEROFFLINE packets			if ((snacPacket.getFamily() == SnacPacket.SRV_USEROFFLINE_FAMILY)					&& (snacPacket.getCommand() == SnacPacket.SRV_USEROFFLINE_COMMAND))			{				// Get raw data				byte[] buf = snacPacket.getData();				// Get UIN of the contact that goes offline				int uinLen = Util.getByte(buf, 0);				String uin = Util.byteArrayToString(buf, 1, uinLen);				// Update contact list				MainThread.userOffline(uin);			}			/** ********************************************************************* */			// Watch out for CLI_ACKMSG_COMMAND packets			else if ((snacPacket.getFamily() == SnacPacket.CLI_ACKMSG_FAMILY)					&& (snacPacket.getCommand() == SnacPacket.CLI_ACKMSG_COMMAND))			{				// Get raw data				byte[] buf = snacPacket.getData();								int msgId1 = (int)Util.getDWord(buf, 0);				int msgId2 = (int)Util.getDWord(buf, 4);								// Get length of the uin 				int uinLen = Util.getByte(buf, 10);				String uin = Util.byteArrayToString(buf, 11, uinLen);				// Get message type				int msgType = Util.getWord(buf, 58 + uinLen, false); // TODO: fix java.lang.ArrayIndexOutOfBoundsException				boolean gotStausMsg = false;				int skip = 0;				if (((msgType == Message.MESSAGE_TYPE_NORM) || (msgType == 26)) // 26 is sended from ICQ6					&& (msgId2 == 0x0002) 					&& Options.getBoolean(Options.OPTION_DELIV_MES_INFO))				{					MainThread.messageIsDelevered(uin, msgId1);					return;				}								if ((msgType >= Message.MESSAGE_TYPE_AWAY)	&& (msgType <= Message.MESSAGE_TYPE_FFC))				{					skip = 64;					gotStausMsg = true;				} 				if (msgType == Message.MESSAGE_TYPE_EXTENDED)				{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美亚洲国产bt| 五月激情六月综合| 成人动漫一区二区三区| 国产日韩v精品一区二区| 不卡一卡二卡三乱码免费网站| 国产精品三级视频| 在线免费观看成人短视频| 午夜精品免费在线| 精品国产免费久久| 成人av资源在线| 亚洲欧美日韩久久| 欧美精品久久一区| 国产美女在线精品| 亚洲视频 欧洲视频| 欧美人xxxx| 国产美女在线精品| √…a在线天堂一区| 欧美高清hd18日本| 国产成人精品免费一区二区| 日韩美女久久久| 日韩一区二区三区免费观看| 成人av电影观看| 亚洲妇女屁股眼交7| 国产日韩欧美精品一区| 在线影视一区二区三区| 久久精品99国产国产精| 中文字幕久久午夜不卡| 欧美日韩精品一区二区天天拍小说| 美女视频一区二区三区| 亚洲欧洲韩国日本视频| 日韩一区二区中文字幕| av亚洲精华国产精华| 免费成人在线观看| 亚洲色图.com| 久久综合久久鬼色中文字| 欧洲精品中文字幕| 狠狠色丁香久久婷婷综合_中 | 97久久精品人人做人人爽| 日韩精品免费专区| 成人欧美一区二区三区在线播放| 91精品婷婷国产综合久久竹菊| av一二三不卡影片| 国产在线精品免费av| 亚洲第一电影网| 亚洲欧美自拍偷拍色图| 精品成人佐山爱一区二区| 欧洲av在线精品| 波多野洁衣一区| 国产盗摄视频一区二区三区| 天堂一区二区在线| 中文字幕亚洲欧美在线不卡| 2020国产精品自拍| 欧美一级片在线观看| 色综合久久久久综合99| 丰满白嫩尤物一区二区| 蜜臀av性久久久久蜜臀av麻豆| 亚洲高清在线精品| 亚洲乱码精品一二三四区日韩在线| 国产色91在线| 精品第一国产综合精品aⅴ| 69av一区二区三区| 在线观看视频91| 91碰在线视频| 91香蕉国产在线观看软件| 国产成人在线免费| 国产成人综合亚洲91猫咪| 久久91精品久久久久久秒播| 免费观看30秒视频久久| 日韩在线a电影| 亚洲va欧美va国产va天堂影院| 中文字幕亚洲精品在线观看| 国产精品免费观看视频| 中文欧美字幕免费| 国产蜜臀av在线一区二区三区| 久久蜜桃一区二区| 日本一区二区三区高清不卡| 久久久久亚洲综合| 国产日韩欧美一区二区三区综合 | 久久九九久久九九| 精品国产伦一区二区三区观看方式| 91精品国产福利在线观看| 在线电影院国产精品| 欧美日韩专区在线| 91精品国产麻豆国产自产在线| 欧美一区二区三区性视频| 日韩美女视频一区二区在线观看| 日韩免费视频线观看| 欧美精品一区二区三区高清aⅴ| 精品国产91洋老外米糕| 欧美国产乱子伦| 国产精品免费久久| 亚洲综合av网| 奇米精品一区二区三区在线观看| 麻豆精品在线观看| 国产精品一级片| 97se亚洲国产综合在线| 欧美色爱综合网| 日韩精品一区二区三区老鸭窝 | 91麻豆精品国产| 欧美成人一区二区| 国产欧美一区二区精品忘忧草| 亚洲国产经典视频| 亚洲午夜精品在线| 精品一区二区三区免费播放 | 国产精品国产三级国产aⅴ中文| 国产精品麻豆99久久久久久| 亚洲夂夂婷婷色拍ww47| 久久精品国产亚洲一区二区三区| 国产精品亚洲专一区二区三区| av亚洲精华国产精华精| 欧美久久一区二区| 国产欧美精品一区二区色综合朱莉| 亚洲色图另类专区| 久久激情五月婷婷| 不卡电影免费在线播放一区| 在线成人免费观看| 国产女人18毛片水真多成人如厕| 亚洲综合在线免费观看| 精彩视频一区二区| 欧美视频中文字幕| 国产午夜精品一区二区三区嫩草| 亚洲激情网站免费观看| 精彩视频一区二区三区| 91成人在线观看喷潮| 久久久久国产精品人| 午夜精品久久久久久不卡8050| 国产精品一级二级三级| 欧美日本在线看| 中文字幕一区二区三| 水野朝阳av一区二区三区| 成+人+亚洲+综合天堂| 精品噜噜噜噜久久久久久久久试看| 亚洲色图第一区| 国产成人在线视频网站| 日韩欧美另类在线| 亚洲宅男天堂在线观看无病毒| 高清不卡一区二区在线| 日韩一区二区三区观看| 一区二区三区在线视频观看58| 国产精品一区二区在线观看网站| 欧美美女一区二区| 一区二区三区日韩欧美| 丁香婷婷综合网| 久久精品一区四区| 日韩电影在线观看电影| 欧美视频一区二| 一区二区三区在线视频观看58| 成人免费毛片高清视频| 久久久国产精华| 韩国av一区二区三区四区| 欧美一区二区二区| 丝袜亚洲另类欧美综合| 欧美日韩一区不卡| 亚洲精品伦理在线| 91美女精品福利| 中文字幕一区免费在线观看| 成人午夜在线播放| 久久精品视频网| 国产一区二区不卡| 精品国产123| 国产一区二区三区电影在线观看 | 亚洲精品伦理在线| 91蝌蚪porny九色| 亚洲三级视频在线观看| 91亚洲午夜精品久久久久久| 国产精品天天看| 99久久精品国产导航| 亚洲日穴在线视频| 91免费观看视频在线| 一区二区三区四区中文字幕| 色婷婷久久综合| 亚洲一二三区视频在线观看| 欧美日韩在线三区| 日韩成人一区二区三区在线观看| 91精品免费观看| 九九视频精品免费| 久久久精品免费免费| 国产91精品一区二区麻豆网站| 国产精品丝袜在线| 成人晚上爱看视频| 亚洲欧美一区二区久久| 在线观看日韩一区| 三级欧美在线一区| 精品福利一二区| 成人国产精品视频| 亚洲欧美日韩一区二区| 欧美人与禽zozo性伦| 美女被吸乳得到大胸91| 国产亚洲欧美一级| 色av成人天堂桃色av| 日韩高清国产一区在线| 久久亚洲免费视频| 99re6这里只有精品视频在线观看| 亚洲精品大片www| 日韩视频在线永久播放| 国产999精品久久| 亚洲综合色区另类av| 2欧美一区二区三区在线观看视频| 国产不卡视频在线观看| 亚洲一区在线观看免费 |