📄 icq.java.svn-base
字号:
} catch (Exception e) {} sendPacket(new SnacPacket(SnacPacket.CLI_SETUSERINFO_FAMILY, SnacPacket.CLI_SETUSERINFO_COMMAND, 4, new byte[0], packet)); byte[] buf = new byte[4]; Util.putDWord(buf, 0, 0x00040000); sendPacket(new SnacPacket(SnacPacket.CLI_SETUSERINFO_FAMILY, SnacPacket.CLI_SETUSERINFO_COMMAND, 4, new byte[0], buf)); } //////////////// // CAPS public static final byte[] CAP_AIM_ISICQ = Util.explodeToBytes("09,46,13,44,4C,7F,11,D1,82,22,44,45,53,54,00,00", ',', 16); public static final byte[] CAP_ICHAT = Util.explodeToBytes("09,46,00,00,4C,7F,11,D1,82,22,44,45,53,54,00,00", ',', 16); public static final byte[] CAP_VERSION = Util.explodeToBytes("*Jimm,20,00,00,00,00,00,00,00,00,00,00,00", ',', 16); public static final byte[] CAP_MTN = Util.explodeToBytes("56,3f,c8,09,0b,6f,41,bd,9f,79,42,26,09,df,a2,f3", ',', 16); public static final byte[] CAP_AIM_SERVERRELAY = Util.explodeToBytes("09,46,13,49,4C,7F,11,D1,82,22,44,45,53,54,00,00", ',', 16); public static final byte[] CAP_UTF8 = Util.explodeToBytes("09,46,13,4E,4C,7F,11,D1,82,22,44,45,53,54,00,00", ',', 16); public static final byte[] CAP_UTF8_GUID = Util.explodeToBytes("7b,30,39,34,36,31,33,34,45,2D,34,43,37,46,2D,31,31,44,31,2D,38,32,32,32,2D,34,34,34,35,35,33,35,34,30,30,30,30,7D", ',', 16); private static final byte[] CAP_QIPINFIUM = Util.explodeToBytes("7c,73,75,02,c3,be,4f,3e,a6,9f,01,53,13,43,1e,1a", ',', 16); private static final byte[] CAP_QIPPDASYM = Util.explodeToBytes("51,AD,D1,90,72,04,47,3D,A1,A1,49,F4,A3,97,A4,1F", ',', 16); private static final byte[] CAP_QIPPDAWIN = Util.explodeToBytes("56,3F,C8,09,0B,6F,41,51,49,50,20,20,20,20,20,21", ',', 16);// private static final byte[] CAP_QIPPLUGINS = Util.explodeToBytes("7C,53,3F,FA,68,00,4F,21,BC,FB,C7,D2,43,9A,AD,31", ',', 16);// private static final byte[] CAP_AUDIO = Util.explodeToBytes("09,46,01,04,4c,7f,11,d1,82,22,44,45,53,54,00,00", ',', 16);// private static final byte[] CAP_VIDEO = Util.explodeToBytes("09,46,01,01,4c,7f,11,d1,82,22,44,45,53,54,00,00", ',', 16); private static final byte[] CAP_HTMLMESSAGES = Util.explodeToBytes("01,38,ca,7b,76,9a,49,15,88,f2,13,fc,00,97,9e,a8", ',', 16);// private static final byte[] CAP_XMultiUserChat = Util.explodeToBytes("67,36,15,15,61,2d,4c,07,8f,3d,bd,e6,40,8e,a0,41", ',', 16);// private static final byte[] CAP_XtZers = Util.explodeToBytes("b2,ec,8f,16,7c,6f,45,1b,bd,79,dc,58,49,78,88,b9", ',', 16); private static final byte[] CAP_IsICQLITE = Util.explodeToBytes("17,8c,2d,9b,da,a5,45,bb,8d,db,f3,bd,bd,53,a1,0a", ',', 16); private static final byte[] CAP_MIRANDAIM = Util.explodeToBytes("4D,69,72,61,6E,64,61,4D,00,00,00,00,00,00,00,00", ',', 16); private static final byte[] CAP_TRILLIAN = Util.explodeToBytes("97,b1,27,51,24,3c,43,34,ad,22,d6,ab,f7,3f,14,09", ',', 16); private static final byte[] CAP_TRILCRYPT = Util.explodeToBytes("f2,e7,c7,f4,fe,ad,4d,fb,b2,35,36,79,8b,df,00,00", ',', 16); private static final byte[] CAP_SIM = Util.explodeToBytes("*SIM client ,0,0,0,0", ',', 16); private static final byte[] CAP_SIMOLD = Util.explodeToBytes("97,b1,27,51,24,3c,43,34,ad,22,d6,ab,f7,3f,14,00", ',', 16); private static final byte[] CAP_LICQ = Util.explodeToBytes("*Licq client ',0,0,0,0", ',', 16); private static final byte[] CAP_KOPETE = Util.explodeToBytes("*Kopete ICQ ',0,0,0,0", ',', 16); private static final byte[] CAP_MICQ = Util.explodeToBytes("*mICQ ,A9,* R.K. ',0,0,0,0", ',', 16); private static final byte[] CAP_ANDRQ = Util.explodeToBytes("*&RQinside,0,0,0,0,0,0,0", ',', 16); private static final byte[] CAP_QIP = Util.explodeToBytes("56,3F,C8,09,0B,6F,41,*QIP 2005a", ',', 16); private static final byte[] CAP_IM2 = Util.explodeToBytes("74,ED,C3,36,44,DF,48,5B,8B,1C,67,1A,1F,86,09,9F", ',', 16); private static final byte[] CAP_MACICQ = Util.explodeToBytes("dd,16,f2,02,84,e6,11,d4,90,db,00,10,4b,9b,4b,7d", ',', 16); private static final byte[] CAP_RICHTEXT = Util.explodeToBytes("97,b1,27,51,24,3c,43,34,ad,22,d6,ab,f7,3f,14,92", ',', 16); private static final byte[] CAP_IS2001 = Util.explodeToBytes("2e,7a,64,75,fa,df,4d,c8,88,6f,ea,35,95,fd,b6,df", ',', 16); private static final byte[] CAP_IS2002 = Util.explodeToBytes("10,cf,40,d1,4c,7f,11,d1,82,22,44,45,53,54,00,00", ',', 16); private static final byte[] CAP_STR20012 = Util.explodeToBytes("a0,e9,3f,37,4f,e9,d3,11,bc,d2,00,04,ac,96,dd,96", ',', 16); private static final byte[] CAP_AIMICON = Util.explodeToBytes("09,46,13,46,4c,7f,11,d1,82,22,44,45,53,54,00,00", ',', 16); private static final byte[] CAP_AIMIMIMAGE = Util.explodeToBytes("09,46,13,45,4c,7f,11,d1,82,22,44,45,53,54,00,00", ',', 16); private static final byte[] CAP_AIMCHAT = Util.explodeToBytes("74,8F,24,20,62,87,11,D1,82,22,44,45,53,54,00,00", ',', 16); private static final byte[] CAP_UIM = Util.explodeToBytes("A7,E4,0A,96,B3,A0,47,9A,B8,45,C9,E4,67,C5,6B,1F", ',', 16); private static final byte[] CAP_RAMBLER = Util.explodeToBytes("7E,11,B7,78,A3,53,49,26,A8,02,44,73,52,08,C4,2A", ',', 16); private static final byte[] CAP_ABV = Util.explodeToBytes("00,E7,E0,DF,A9,D0,4F,e1,91,62,C8,90,9A,13,2A,1B", ',', 16); private static final byte[] CAP_NETVIGATOR = Util.explodeToBytes("4C,6B,90,A3,3D,2D,48,0E,89,D6,2E,4B,2C,10,D9,9F", ',', 16); private static final byte[] CAP_XTRAZ = Util.explodeToBytes("1A,09,3C,6C,D7,FD,4E,C5,9D,51,A6,47,4E,34,F5,A0", ',', 16); private static final byte[] CAP_AIMFILE = Util.explodeToBytes("09,46,13,43,4C,7F,11,D1,82,22,44,45,53,54,00,00", ',', 16); private static final byte[] CAP_DIRECT = Util.explodeToBytes("09,46,13,44,4C,7F,11,D1,82,22,44,45,53,54,00,00", ',', 16); private static final byte[] CAP_JIMM = Util.explodeToBytes("*Jimm ", ',', 16); private static final byte[] CAP_AVATAR = Util.explodeToBytes("09,46,13,4C,4C,7F,11,D1,82,22,44,45,53,54,00,00", ',', 16); private static final byte[] CAP_TYPING = Util.explodeToBytes("56,3f,c8,09,0b,6f,41,bd,9f,79,42,26,09,df,a2,f3", ',', 16); private static final byte[] CAP_MCHAT = Util.explodeToBytes("*mChat icq", ',', 16); private static final byte[] CAP_IMPLUS = Util.explodeToBytes("8e,cd,90,e7,4f,18,28,f8,02,ec,d6,18,a4,e9,de,68", ',', 16); private static final byte[] CAP_SMAPER = Util.explodeToBytes("*Smaper ", ',', 16); private static final byte[] CAP_JIMM_DICHAT = Util.explodeToBytes("44,5B,69,5D,43,68,61,74,20", ',', 16); private static final byte[] CAP_QUTIM = Util.explodeToBytes("*qutim", ',', 16); // Arrays for new capability blowup private static final byte[] CAP_OLD_HEAD = { (byte) 0x09, (byte) 0x46 }; private static final byte[] CAP_OLD_TAIL = Util.explodeToBytes("4C,7F,11,D1,82,22,44,45,53,54,00,00", ',', 16); private static final byte[] XSTATUS_CONSTS = Util.explodeToBytes( "63,62,73,37,A0,3F,49,FF,80,E5,F7,09,CD,E0,A4,EE,"+ // 00 SHOPPING "5A,58,1E,A1,E5,80,43,0C,A0,6F,61,22,98,B7,E4,C7,"+ // 01 DUCK "83,C9,B7,8E,77,E7,43,78,B2,C5,FB,6C,FC,C3,5B,EC,"+ // 02 TIRED "E6,01,E4,1C,33,73,4B,D1,BC,06,81,1D,6C,32,3D,81,"+ // 03 PARTY "8C,50,DB,AE,81,ED,47,86,AC,CA,16,CC,32,13,C7,B7,"+ // 04 BEER "3F,B0,BD,36,AF,3B,4A,60,9E,EF,CF,19,0F,6A,5A,7F,"+ // 05 THINKING "F8,E8,D7,B2,82,C4,41,42,90,F8,10,C6,CE,0A,89,A6,"+ // 06 EATING "80,53,7D,E2,A4,67,4A,76,B3,54,6D,FD,07,5F,5E,C6,"+ // 07 TV "F1,8A,B5,2E,DC,57,49,1D,99,DC,64,44,50,24,57,AF,"+ // 08 FRIENDS "1B,78,AE,31,FA,0B,4D,38,93,D1,99,7E,EE,AF,B2,18,"+ // 09 COFFEE "61,BE,E0,DD,8B,DD,47,5D,8D,EE,5F,4B,AA,CF,19,A7,"+ // 0A MUSIC "48,8E,14,89,8A,CA,4A,08,82,AA,77,CE,7A,16,52,08,"+ // 0B BUSINESS "10,7A,9A,18,12,32,4D,A4,B6,CD,08,79,DB,78,0F,09,"+ // 0C CAMERA "6F,49,30,98,4F,7C,4A,FF,A2,76,34,A0,3B,CE,AE,A7,"+ // 0D FUNNY "12,92,E5,50,1B,64,4F,66,B2,06,B2,9A,F3,78,E4,8D,"+ // 0E PHONE "D4,A6,11,D0,8F,01,4E,C0,92,23,C5,B6,BE,C6,CC,F0,"+ // 0F GAMES "60,9D,52,F8,A2,9A,49,A6,B2,A0,25,24,C5,E9,D2,60,"+ // 10 COLLEGE "1F,7A,40,71,BF,3B,4E,60,BC,32,4C,57,87,B0,4C,F1,"+ // 11 SICK "78,5E,8C,48,40,D3,4C,65,88,6F,04,CF,3F,3F,43,DF,"+ // 12 SLEEPING "A6,ED,55,7E,6B,F7,44,D4,A5,D4,D2,E7,D9,5C,E8,1F,"+ // 13 SURFING "12,D0,7E,3E,F8,85,48,9E,8E,97,A7,2A,65,51,E5,8D,"+ // 14 INTERNET "BA,74,DB,3E,9E,24,43,4B,87,B6,2F,6B,8D,FE,E5,0F,"+ // 15 ENGINEERING "63,4F,6B,D8,AD,D2,4A,A1,AA,B9,11,5B,C2,6D,05,A1,"+ // 16 TYPING "01,D8,D7,EE,AC,3B,49,2A,A5,8D,D3,D8,77,E6,6B,92,"+ // 17 ANGRY "2C,E0,E4,E5,7C,64,43,70,9C,3A,7A,1C,E8,78,A7,DC,"+ // 18 UNK "10,11,17,C9,A3,B0,40,F9,81,AC,49,E1,59,FB,D5,D4,"+ // 19 PPC "16,0C,60,BB,DD,44,43,F3,91,40,05,0F,00,E6,C0,09,"+ // 1A MOBILE "64,43,C6,AF,22,60,45,17,B5,8C,D7,DF,8E,29,03,52,"+ // 1B MAN "16,F5,B7,6F,A9,D2,40,35,8C,C5,C0,84,70,3C,98,FA,"+ // 1C WC "63,14,36,FF,3F,8A,40,D0,A5,CB,7B,66,E0,51,B3,64,"+ // 1D QUESTION "B7,08,67,F5,38,25,43,27,A1,FF,CF,4C,C1,93,97,97,"+ // 1E WAY "DD,CF,0E,A9,71,95,40,48,A9,C6,41,32,06,D6,F2,80,"+ // 1F HEART "3F,B0,BD,36,AF,3B,4A,60,9E,EF,CF,19,0F,6A,5A,7E,"+ // 20 CIGARETTE "E6,01,E4,1C,33,73,4B,D1,BC,06,81,1D,6C,32,3D,82,"+ // 21 SEX "D4,E2,B0,BA,33,4E,4F,A5,98,D0,11,7D,BF,4D,3C,C8,"+ // 22 SEARCH "00,72,D9,08,4A,D1,43,DD,91,99,6F,02,69,66,02,6F", // 23 DIARY /*"64,43,c6,af,22,60,45,17,b5,8c,d7,df,8e,29,03,52,"+ // I'm hight (miranda) "63,14,36,ff,3f,8a,40,d0,a5,cb,7b,66,e0,51,b3,64,"+ // To be or not to be? (miranda) "10,11,17,c9,a3,b0,40,f9,81,ac,49,e1,59,fb,d5,d4", // Cooking (miranda) */ ',', 16); /* Capabilities */ public static final int CAPF_NO_INTERNAL = 0; // No capability public static final int CAPF_AIM_SERVERRELAY = 1 << 0; // Client unterstands type-2 messages public static final int CAPF_UTF8_INTERNAL = 1 << 1; // Client unterstands UTF-8 messages public static final int CAPF_RICHTEXT = 1 << 2; public static final int CAPF_AIMICON = 1 << 3; public static final int CAPF_AIMCHAT = 1 << 4; public static final int CAPF_XTRAZ = 1 << 5; public static final int CAPF_AIMFILE = 1 << 6; public static final int CAPF_AIMIMIMAGE = 1 << 7; public static final int CAPF_AVATAR = 1 << 8; public static final int CAPF_DIRECT = 1 << 9; public static final int CAPF_TYPING = 1 << 10; public static final int CAPF_HTMLMESSAGES = 1 << 11; public static final int CAPF_AUDIO = 1 << 12; public static final int CAPF_VIDEO = 1 << 14; // Client capabilities for detection private static final long CAPF_MIRANDAIM = 1l << 32; private static final long CAPF_TRILLIAN = 1l << 33; private static final long CAPF_TRILCRYPT = 1l << 34; private static final long CAPF_SIM = 1l << 35; private static final long CAPF_SIMOLD = 1l << 36; private static final long CAPF_LICQ = 1l << 37; private static final long CAPF_KOPETE = 1l << 38; private static final long CAPF_MICQ = 1l << 39; private static final long CAPF_ANDRQ = 1l << 40; private static final long CAPF_QIP = 1l << 41; private static final long CAPF_IM2 = 1l << 42; private static final long CAPF_MACICQ = 1l << 43; private static final long CAPF_IS2001 = 1l << 44; private static final long CAPF_IS2002 = 1l << 45; private static final long CAPF_STR20012 = 1l << 46; private static final long CAPF_UIM = 1l << 47; private static final long CAPF_RAMBLER = 1l << 48; private static final long CAPF_ABV = 1l << 49; private static final long CAPF_NETVIGATOR = 1l << 50; private static final long CAPF_JIMM = 1l << 51; private static final long CAPF_MCHAT = 1l << 52; private static final long CAPF_QIPINFIUM = 1l << 53; private static final long CAPF_IsICQLITE = 1l << 54; private static final long CAPF_QIPPDASYM = 1l << 55; private static final long CAPF_QIPPDAWIN = 1l << 56; private static final long CAPF_IMPLUS = 1l << 57; private static final long CAPF_SMAPER = 1l << 58; private static final long CAPF_JIMM_DICHAT = 1l << 59; private static final long CAPF_QUTIM = 1l << 60;// public static final int CAPF_QIPPLUGINS = 1l << 60;// public static final int CAPF_XMultiUserChat = 1l << 61;// public static final int CAPF_XtZers = 1l << 62; // Client IDs public static final byte CLI_NONE = 0; public static final byte CLI_QIP = 1; public static final byte CLI_MIRANDA = 2; public static final byte CLI_LICQ = 3; public static final byte CLI_TRILLIAN = 4; public static final byte CLI_SIM = 5; public static final byte CLI_KOPETE = 6; public static final byte CLI_MICQ = 7; public static final byte CLI_ANDRQ = 8; public static final byte CLI_IM2 = 9; public static final byte CLI_MACICQ = 10; public static final byte CLI_AIM = 11; public static final byte CLI_UIM = 12; public static final byte CLI_WEBICQ = 13; public static final byte CLI_GAIM = 14; public static final byte CLI_ALICQ = 15; public static final byte CLI_STRICQ = 16; public static final byte CLI_YSM = 17; public static final byte CLI_VICQ = 18; public static final byte CLI_LIBICQ2000 = 19; public static final byte CLI_JIMM = 20; public static final byte CLI_SMARTICQ = 21; public static final byte CLI_ICQLITE4 = 22; public static final byte CLI_ICQLITE5 = 23; public static final byte CLI_ICQ98 = 24; public static final byte CLI_ICQ99 = 25; public static final byte CLI_ICQ2001B = 26; public static final byte CLI_ICQ2002A2003A = 27; public static final byte CLI_ICQ2000 = 28; public static final byte CLI_ICQ2003B = 29; public static final byte CLI_ICQLITE = 30; public static final byte CLI_GNOMEICQ = 31; public static final byte CLI_AGILE = 32; public static final byte CLI_SPAM = 33; public static final byte CLI_CENTERICQ = 34; public static final byte CLI_LIBICQJABBER = 35; public static final byte CLI_ICQ2GO = 36; public static final byte CLI_ICQPPC = 37; public static final byte CLI_STICQ = 38; public static final byte CLI_MCHAT = 39; public static final byte CLI_QIPINFIUM = 40; public static final byte CLI_ICQ6 = 41; public static final byte CLI_QIPPDASYM = 42; public static final byte CLI_QIPPDAWIN = 43; public static final byte CLI_IMPLUS = 44; public static final byte CLI_SMAPER = 45; public static final byte CLI_JIMM_DICHAT = 46; public static final byte CLI_QUTIM = 47; public static final byte CLI_RANDQ = 48; private static int[] clientIndexes; private static int[] clientImageIndexes; private static String[] clientNames; private static void initClientIndData() { Vector vInd = new Vector(); Vector vImg = new Vector(); Vector vNames = new Vector(); // name index image index initClientIndDataItem("Not detected", CLI_NONE, -1, vInd, vImg, vNames); initClientIndDataItem("QIP", CLI_QIP, 1, vInd, vImg, vNames); initClientIndDataItem("Miranda", CLI_MIRANDA, 2, vInd, vImg, vNames); initClientIndDataItem("LIcq", CLI_LICQ, 26, vInd, vImg, vNames); initClientIndDataItem("Trillian", CLI_TRILLIAN, 5, vInd, vImg, vNames); initClientIndDataItem("SIM", CLI_SIM, 6, vInd, vImg, vNames); initClientIndDataItem("Kopete", CLI_KOPETE, 7, vInd, vImg, vNames); initClientIndDataItem("MICQ", CLI_MICQ, -1, vInd, vImg, vNames); initClientIndDataItem("&RQ", CLI_ANDRQ, 4, vInd, vImg, vNames); initClientIndDataItem("IM2", CLI_IM2, 29, vInd, vImg, vNames); initClientIndDataItem("ICQ for MAC", CLI_MACICQ, 23, vInd, vImg, vNames); initClientIndDataItem("AIM", CLI_AIM, -1, vInd, vImg, vNames); initClientIndDataItem("UIM", CLI_UIM, -1, vInd, vImg, vNames); initClientIndDataItem("WebICQ", CLI_WEBICQ, -1, vInd, vImg, vNames); initClientIndDataItem("Gaim", CLI_GAIM, 24, vInd, vImg, vNames); initClientIndDataItem("Alicq", CLI_ALICQ, -1, vInd, vImg, vNames); initClientIndDataItem("StrICQ", CLI_STRICQ, -1, vInd, vImg, vNames); initClientIndDataItem("YSM", CLI_YSM, -1, vInd, vImg, vNames); initClientIndDataItem("vICQ", CLI_VICQ, -1, vInd, vImg, vNames); initClientIndDataItem("Libicq2000", CLI_LIBICQ2000, 11, vInd, vImg, vNames); initClientIndDataItem("Jimm", CLI_JIMM, 8, vInd, vImg, vNames); initClientIndDataItem("SmartICQ", CLI_SMARTICQ, -1, vInd, vImg, vNames); initClientIndDataItem("ICQ Lite v4", CLI_ICQLITE4, 18, vInd, vImg, vNames); initClientIndDataItem("ICQ Lite v5", CLI_ICQLITE5, 19, vInd, vImg, vNames); initClientIndDataItem("ICQ 98", CLI_ICQ98, -1, vInd, vImg, vNames); initClientIndDataItem("ICQ 99", CLI_ICQ99, -1, vInd, vImg, vNames); initClientIndDataItem("ICQ 2001b", CLI_ICQ2001B, -1, vInd, vImg, vNames); initClientIndDataItem("ICQ 2002a/2003a", CLI_ICQ2002A2003A, -1, vInd, vImg, vNames); initClientIndDataItem("ICQ 2000", CLI_ICQ2000, -1, vInd, vImg, vNames); initClientIndDataItem("ICQ 2003b", CLI_ICQ2003B, 20, vInd, vImg, vNames); initClientIndDataItem("ICQ Lite", CLI_ICQLITE, 17, vInd, vImg, vNames); initClientIndDataItem("Gnome ICQ", CLI_GNOMEICQ, 25, vInd, vImg, vNames); initClientIndDataItem("Agile Messenger", CLI_AGILE, 10, vInd, vImg, vNames); initClientIndDataItem("SPAM:)", CLI_SPAM, -1, vInd, vImg, vNames); initClientIndDataItem("CenterICQ", CLI_CENTERICQ, -1, vInd, vImg, vNames); initClientIndDataItem("Libicq2000 from Jabber", CLI_LIBICQJABBER, -1, vInd, vImg, vNames); initClientIndDataItem("ICQ2GO!", CLI_ICQ2GO, 21, vInd, vImg, vNames); initClientIndDataItem("ICQ for Pocket PC", CLI_ICQPPC, -1, vInd, vImg, vNames); initClientIndDataItem("StIcq", CLI_STICQ, 9, vInd, vImg, vNames); initClientIndDataItem("MChat", CLI_MCHAT, 22, vInd, vImg, vNames); initClientIndDataItem("QIP Infium", CLI_QIPINFIUM, 15, vInd, vImg, vNames); initClientIndDataItem("ICQ 6", CLI_ICQ6, 16, vInd, vImg, vNames); initClientIndDataItem("QIP Mobile (Symbian)", CLI_QIPPDASYM, 13, vInd, vImg, vNames); initClientIndDataItem("QIP PDA (Windows)", CLI_QIPPDAWIN, 14, vInd, vImg, vNames); initClientIndDataItem("IM+", CLI_IMPLUS, 30, vInd, vImg, vNames); initClientIndDataItem("Smaper", CLI_SMAPER, 31, vInd, vImg, vNames); initClientIndDataItem("D[i]Chat", CLI_JIMM_DICHAT, 32, vInd, vImg, vNames); initClientIndDataItem("qutIM", CLI_QUTIM, 33, vInd, vImg, vNames); initClientIndDataItem("R&Q", CLI_RANDQ, 4, vInd, vImg, vNames); clientNames = new String[vNames.size()]; vNames.copyInto(clientNames); clientIndexes = new int[vInd.size()]; for (int i = vInd.size()-1; i >= 0; i--) clientIndexes[i] = ((Integer)vInd.elementAt(i)).intValue(); clientImageIndexes = new int[vImg.size()]; for (int i = vImg.size()-1; i >= 0; i--) clientImageIndexes[i] = ((Integer)vImg.elementAt(i)).intValue(); } private static void initClientIndDataItem(String name, int index, int imageIndex, Vector vIndexes, Vector vImg, Vector vNames) { vNames.addElement(name); vIndexes.addElement(new Integer(index)); vImg.addElement(new Integer(imageIndex-1)); } public static int detectStandartXStatus(String data) { int idx = data.indexOf("icqmood"); if (idx < 0) return -1; return Util.strToIntDef(data.substring(idx+7), -1); } public static int detectXStatus(byte[] capabilities) { int counter; if (capabilities == null) return -1; for (int i = 0; i < capabilities.length; i += 16) { for (int j = 0; j < XSTATUS_CONSTS.length; j += 16) { counter = 0; for (int k = 0; k < 16; k++, counter++) if (capabilities[i+k] != XSTATUS_CONSTS[j+k]) break; if (counter == 16) return j/16; } } return -1; } public static void detectUserClientAndParseCaps(ContactItem item, int dwFP1, int dwFP2, int dwFP3, byte[] capabilities, int wVersion, boolean statusChange) { int client = CLI_NONE; String szVersion = ""; long caps = CAPF_NO_INTERNAL; if (capabilities != null) { int offset; //Caps parsing for (int j = 0; j < capabilities.length / 16; j++) { offset = j * 16; if (Util.byteArrayEquals(capabilities, offset, CAP_AIM_SERVERRELAY, 0, 16)) { caps |= CAPF_AIM_SERVERRELAY; } else if (Util.byteArrayEquals(capabilities, offset, CAP_UTF8, 0, 16)) { caps |= CAPF_UTF8_INTERNAL; } else if (Util.byteArrayEquals(capabilities, offset, CAP_MIRANDAIM, 0, 8)) { caps |= CAPF_MIRANDAIM; szVersion = detectClientVersion(capabilities, CLI_MIRANDA, j); } else if (Util.byteArrayEquals(capabilities, offset, CAP_TRILLIAN, 0, 16)) { caps |= CAPF_TRILLIAN; } else if (Util.byteArrayEquals(capabilities, offset, CAP_TRILCRYPT, 0, 16)) { caps |= CAPF_TRILCRYPT; } else if (Util.byteArrayEquals(capabilities, offset, CAP_SIM, 0, 0xC)) { caps |= CAPF_SIM; } else if (Util.byteArrayEquals(capabilities, offset, CAP_SIMOLD, 0, 16)) { caps |= CAPF_SIMOLD; } else if (Util.byteArrayEquals(capabilities, offset, CAP_LICQ, 0, 0xC)) { caps |= CAPF_LICQ; szVersion = detectClientVersion(capabilities, CLI_LICQ, j); } else if (Util.byteArrayEquals(capabilities, offset, CAP_KOPETE, 0, 0xC)) { caps |= CAPF_KOPETE; szVersion = detectClientVersion(capabilities, CLI_KOPETE, j); } else if (Util.byteArrayEquals(capabilities, offset, CAP_MICQ, 0, 16)) { caps |= CAPF_MICQ; } else if (Util.byteArrayEquals(capabilities, offset, CAP_ANDRQ, 0, 9)) { caps |= CAPF_ANDRQ; szVersion = detectClientVersion(capabilities, CLI_ANDRQ, j); } else if (Util.byteArrayEquals(capabilities, offset, CAP_QIPPDASYM, 0, 16)) { caps |= CAPF_QIPPDASYM; } else if (Util.byteArrayEquals(capabilities, offset, CAP_QIPPDAWIN, 0, 16)) { caps |= CAPF_QIPPDAWIN; } else if (Util.byteArrayEquals(capabilities, offset, CAP_QIP, 0, 11)) { caps |= CAPF_QIP; szVersion = detectClientVersion(capabilities, CLI_QIP, j); } else if (Util.byteArrayEquals(capabilities, offset, CAP_IM2, 0, 16))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -