TIM v2.3.1版本的 MD5 值为:d6957e3ee7ce901ccc491cefdea0da8c

以下内容为反编译后的 EmoWindow.java 源代码,内容仅作参考


package com.tencent.mobileqq.activity.richmedia.view;

import android.graphics.drawable.BitmapDrawable;
import com.tencent.common.app.BaseApplicationImpl;
import com.tencent.mobileqq.emoticonview.SystemEmoticonInfo;
import com.tencent.mobileqq.filemanager.app.FileTransferHandler;
import com.tencent.mobileqq.text.EmotcationConstants;
import com.tencent.mobileqq.unifiedebug.UnifiedTraceRouter;
import com.tencent.qphone.base.util.QLog;
import java.util.HashMap;
import java.util.concurrent.ConcurrentHashMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class EmoWindow {
    public static final int f86767a = 20;
    public static final String f16194a = "EmoWindow";
    private static HashMap f16195a = null;
    public static final short f16198a = 65;
    private static boolean f16199a = false;
    public static final String f86768b = "http://qzonestyle.gtimg.cn/qzone/em/";
    public static final short f16204b = 135;
    public static final String f86769c = ".gif";
    public static final String d = "[/美女]";
    private static Pattern f16210d = null;
    public static final String e = "[/钱]";
    private static Pattern f16212e = null;
    public static final String f = "[em]";
    private static Pattern f16213f = null;
    public static final String g = "[/em]";
    static final String h = "[表情]";
    public static final String i = "w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";
    public static ConcurrentHashMap f16196a = new ConcurrentHashMap();
    public static final short[] f16201a = {13, 12, 56, 73, 88, 87, 97, 59, 33, 5, 9, 82, 51, 53, 106, 72, 92, FileTransferHandler.f22998l, 74, 2, 6, 4, 54, 14, 11, 10, 55, 96, 36, 116, 75, 76, 50, 0, 81, 8, 109, 57, 27, 85, 1, 108, 79, 3, 103, 62, 101, 21, 105, 83, 58, 111, 46, 47, 71, 95, 118, 34, 64, 38, 32, 113, 117, 119, 124, 122, 63, 89, 45, 16, 93, 25, 121, 120, 37, 42, 39, 29, 86, 129, 91, 77, 78, 80, 84, 98, 99, 100, 102, 104, 107, 110, 114, 115, 123, 23, 26, 125, 196, 127, 128, 130, 131, 132, 133, 134, 7};
    private static final String k = "\\[/美女\\]|\\[/钱\\]";
    public static final Pattern f16197a = Pattern.compile(k);
    public static final String[] f16200a = {"[em]e113[/em]", "[em]e112[/em]", "[em]e127[/em]", "[em]e120[/em]", "[em]e139[/em]", "[em]e138[/em]", "[em]e140[/em]", "[em]e162[/em]", "[em]e163[/em]", "[em]e105[/em]", "[em]e109[/em]", "[em]e133[/em]", "[em]e116[/em]", "[em]e118[/em]", "[em]e149[/em]", "[em]e174[/em]", "[em]e170[/em]", "[em]e155[/em]", "[em]e121[/em]", "[em]e102[/em]", "[em]e106[/em]", "[em]e104[/em]", "[em]e119[/em]", "[em]e100[/em]", "[em]e111[/em]", "[em]e110[/em]", "[em]e126[/em]", "[em]e117[/em]", "[em]e166[/em]", "[em]e165[/em]", "[em]e122[/em]", "[em]e123[/em]", "[em]e115[/em]", "[em]e114[/em]", "[em]e132[/em]", "[em]e108[/em]", "[em]e152[/em]", "[em]e128[/em]", "[em]e190[/em]", "[em]e136[/em]", "[em]e101[/em]", "[em]e151[/em]", "[em]e130[/em]", "[em]e103[/em]", "[em]e146[/em]", "[em]e178[/em]", "[em]e144[/em]", "[em]e191[/em]", "[em]e148[/em]", "[em]e134[/em]", "[em]e129[/em]", "[em]e154[/em]", "[em]e179[/em]", "[em]e180[/em]", "[em]e181[/em]", "[em]e182[/em]", "[em]e183[/em]", "[em]e164[/em]", "[em]e161[/em]", "[em]e168[/em]", "[em]e156[/em]", "[em]e157[/em]", "[em]e173[/em]", "[em]e184[/em]", "[em]e189[/em]", "[em]e187[/em]", "[em]e160[/em]", "[/钱]", "[em]e175[/em]", "[/美女]", "[em]e171[/em]", "[em]e193[/em]", "[em]e186[/em]", "[em]e185[/em]", "[em]e167[/em]", "[em]e176[/em]", "[em]e177[/em]", "[em]e172[/em]", "[em]e137[/em]", "[em]e199[/em]", "[em]e169[/em]", "[em]e124[/em]", "[em]e125[/em]", "[em]e131[/em]", "[em]e135[/em]", "[em]e141[/em]", "[em]e142[/em]", "[em]e143[/em]", "[em]e145[/em]", "[em]e147[/em]", "[em]e150[/em]", "[em]e153[/em]", "[em]e158[/em]", "[em]e159[/em]", "[em]e188[/em]", "[em]e192[/em]", "[em]e194[/em]", "[em]e195[/em]", "[em]e196[/em]", "[em]e197[/em]", "[em]e198[/em]", "[em]e200[/em]", "[em]e201[/em]", "[em]e202[/em]", "[em]e203[/em]", "[em]e204[/em]", "[em]e107[/em]", "[em]e121000[/em]", "[em]e121001[/em]", "[em]e121002[/em]", "[em]e121003[/em]", "[em]e121004[/em]", "[em]e121005[/em]", "[em]e121006[/em]", "[em]e121007[/em]", "[em]e121008[/em]", "[em]e121009[/em]", "[em]e121010[/em]", "[em]e121011[/em]", "[em]e121012[/em]", "[em]e121013[/em]", "[em]e121014[/em]", "[em]e121015[/em]", "[em]e121016[/em]", "[em]e121017[/em]", "[em]e121018[/em]", "[em]e121019[/em]", "[em]e121020[/em]", "[em]e121021[/em]", "[em]e121022[/em]", "[em]e121023[/em]", "[em]e121024[/em]", "[em]e121025[/em]", "[em]e121026[/em]", "[em]e121027[/em]", "[em]e121028[/em]", "[em]e121029[/em]", "[em]e121030[/em]", "[em]e121031[/em]", "[em]e121032[/em]", "[em]e121033[/em]", "[em]e121034[/em]", "[em]e121035[/em]"};
    public static final String[] f16205b = {"/微笑", "/撇嘴", "/色", "/发呆", "/得意", "/流泪", "/害羞", "/闭嘴", "/睡", "/大哭", "/尴尬", "/发怒", "/调皮", "/呲牙", "/惊讶", "/难过", "/酷", "/冷汗", "/抓狂", "/吐", "/偷笑", "/可爱", "/白眼", "/傲慢", "/饥饿", "/困", "/惊恐", "/流汗", "/憨笑", "/装逼", "/奋斗", "/咒骂", "/疑问", "/嘘...", "/晕", "/折磨", "/衰", "/骷髅", "/敲打", "/再见", "/擦汗", "/抠鼻", "/鼓掌", "/糗大了", "/坏笑", "/左哼哼", "/右哼哼", "/哈欠", "/鄙视", "/委屈", "/快哭了", "/阴险", "/亲亲", "/吓", "/可怜", "/菜刀", "/西瓜", "/啤酒", "/篮球", "/乒乓", "/咖啡", "/饭", "/猪头", "/玫瑰", "/凋谢", "/示爱", "/爱心", "/心碎", "/蛋糕", "/闪电", "/炸弹", "/刀", "/足球", "/瓢虫", "/便便", "/月亮", "/太阳", "/礼物", "/拥抱", "/赞", "/踩", "/握手", "/胜利", "/抱拳", "/勾引", "/拳头", "/差劲", "/爱你", "/NO", "/OK", "/爱情", "/飞吻", "/跳跳", "/发抖", "/怄火", "/转圈", "/磕头", "/回头", "/跳绳", "/挥手", "/激动", "/街舞", "/献吻", "/左太极", "/右太极", "/金钱", "/MM", "/招财进宝", "/双喜", "/鞭炮", "/灯笼", "/发财", "/K歌", "/购物", "/邮件", "/帅", "/喝彩", "/祈祷", "/爆筋", "/棒棒糖", "/喝奶", "/下面", "/香蕉", "/飞机", "/开车", "/高铁左车头", "/车厢", "/高铁右车头", "/多云", "/下雨", "/钞票", "/熊猫", "/灯泡", "/风车", "/闹钟", "/打伞", "/彩球", "/钻戒", "/沙发", "/纸巾", "/药", "/手枪", "/青蛙"};
    public static final String[] f16209c = {"[微笑]", "[撇嘴]", "[色]", "[发呆]", "[得意]", "[流泪]", "[害羞]", "[闭嘴]", "[睡]", "[大哭]", "[尴尬]", "[发怒]", "[调皮]", "[呲牙]", "[惊讶]", "[难过]", "[酷]", "[冷汗]", "[抓狂]", "[吐]", "[偷笑]", "[愉快]", "[白眼]", "[傲慢]", "[饥饿]", "[困]", "[惊恐]", "[流汗]", "[憨笑]", "[悠闲]", "[奋斗]", "[咒骂]", "[疑问]", "[嘘]", "[晕]", "[疯了]", "[衰]", "[骷髅]", "[敲打]", "[再见]", "[擦汗]", "[抠鼻]", "[鼓掌]", "[糗大了]", "[坏笑]", "[左哼哼]", "[右哼哼]", "[哈欠]", "[鄙视]", "[委屈]", "[快哭了]", "[阴险]", "[亲亲]", "[吓]", "[可怜]", "[菜刀]", "[西瓜]", "[啤酒]", "[篮球]", "[乒乓]", "[咖啡]", "[饭]", "[猪头]", "[玫瑰]", "[凋谢]", "[嘴唇]", "[爱心]", "[心碎]", "[蛋糕]", "[闪电]", "[炸弹]", "[刀]", "[足球]", "[瓢虫]", "[便便]", "[月亮]", "[太阳]", "[礼物]", "[拥抱]", "[强]", "[弱]", "[握手]", "[胜利]", "[抱拳]", "[勾引]", "[拳头]", "[差劲]", "[爱你]", "[NO]", "[OK]", "[爱情]", "[飞吻]", "[跳跳]", "[发抖]", "[怄火]", "[转圈]", "[磕头]", "[回头]", "[跳绳]", "[挥手]", "[激动]", "[街舞]", "[献吻]", "[左太极]", "[右太极]", "[金钱]", "[MM]", "[招财进宝]", "[双喜]", "[鞭炮]", "[灯笼]", "[发财]", "[K歌]", "[购物]", "[邮件]", "[帅]", "[喝彩]", "[祈祷]", "[爆筋]", "[棒棒糖]", "[喝奶]", "[下面]", "[香蕉]", "[飞机]", "[开车]", "[高铁左车头]", "[车厢]", "[高铁右车头]", "[多云]", "[下雨]", "[钞票]", "[熊猫]", "[灯泡]", "[风车]", "[闹钟]", "[打伞]", "[彩球]", "[钻戒]", "[沙发]", "[纸巾]", "[药]", "[手枪]", "[青蛙]"};
    public static final short f16208c = (short) f16205b.length;
    private static final HashMap f16202b = new HashMap(106);
    private static final HashMap f16206c = new HashMap(106);
    public static final String[] f16211d = {"[em]e100[/em]", "[em]e101[/em]", "[em]e102[/em]", "[em]e103[/em]", "[em]e104[/em]", "[em]e105[/em]", "[em]e106[/em]", "[em]e107[/em]", "[em]e108[/em]", "[em]e109[/em]", "[em]e110[/em]", "[em]e111[/em]", "[em]e112[/em]", "[em]e113[/em]", "[em]e114[/em]", "[em]e115[/em]", "[em]e116[/em]", "[em]e117[/em]", "[em]e118[/em]", "[em]e119[/em]", "[em]e120[/em]", "[em]e121[/em]", "[em]e122[/em]", "[em]e123[/em]", "[em]e124[/em]", "[em]e125[/em]", "[em]e126[/em]", "[em]e127[/em]", "[em]e128[/em]", "[em]e129[/em]", "[em]e130[/em]", "[em]e131[/em]", "[em]e132[/em]", "[em]e133[/em]", "[em]e134[/em]", "[em]e135[/em]", "[em]e136[/em]", "[em]e137[/em]", "[em]e138[/em]", "[em]e139[/em]", "[em]e140[/em]", "[em]e141[/em]", "[em]e142[/em]", "[em]e143[/em]", "[em]e144[/em]", "[em]e145[/em]", "[em]e146[/em]", "[em]e147[/em]", "[em]e148[/em]", "[em]e149[/em]", "[em]e150[/em]", "[em]e151[/em]", "[em]e152[/em]", "[em]e153[/em]", "[em]e154[/em]", "[em]e155[/em]", "[em]e156[/em]", "[em]e157[/em]", "[em]e158[/em]", "[em]e159[/em]", "[em]e160[/em]", "[em]e161[/em]", "[em]e162[/em]", "[em]e163[/em]", "[em]e164[/em]", "[em]e165[/em]", "[em]e166[/em]", "[em]e167[/em]", "[em]e168[/em]", "[em]e169[/em]", "[em]e170[/em]", "[em]e171[/em]", "[em]e172[/em]", "[em]e173[/em]", "[em]e174[/em]", "[em]e175[/em]", "[em]e176[/em]", "[em]e177[/em]", "[em]e178[/em]", "[em]e179[/em]", "[em]e180[/em]", "[em]e181[/em]", "[em]e182[/em]", "[em]e183[/em]", "[em]e184[/em]", "[em]e185[/em]", "[em]e186[/em]", "[em]e187[/em]", "[em]e188[/em]", "[em]e189[/em]", "[em]e190[/em]", "[em]e191[/em]", "[em]e192[/em]", "[em]e193[/em]", "[em]e194[/em]", "[em]e195[/em]", "[em]e196[/em]", "[em]e197[/em]", "[em]e198[/em]", "[em]e199[/em]", "[em]e200[/em]", "[em]e201[/em]", "[em]e202[/em]", "[em]e203[/em]", "[em]e204[/em]", "[/钱]", "[/美女]", "[em]e121000[/em]", "[em]e121001[/em]", "[em]e121002[/em]", "[em]e121003[/em]", "[em]e121004[/em]", "[em]e121005[/em]", "[em]e121006[/em]", "[em]e121007[/em]", "[em]e121008[/em]", "[em]e121009[/em]", "[em]e121010[/em]", "[em]e121011[/em]", "[em]e121012[/em]", "[em]e121013[/em]", "[em]e121014[/em]", "[em]e121015[/em]", "[em]e121016[/em]", "[em]e121017[/em]", "[em]e121018[/em]", "[em]e121019[/em]", "[em]e121020[/em]", "[em]e121021[/em]", "[em]e121022[/em]", "[em]e121023[/em]", "[em]e121024[/em]", "[em]e121025[/em]", "[em]e121026[/em]", "[em]e121027[/em]", "[em]e121028[/em]", "[em]e121029[/em]", "[em]e121030[/em]", "[em]e121031[/em]", "[em]e121032[/em]", "[em]e121033[/em]", "[em]e121034[/em]", "[em]e121035[/em]"};
    public static final String j = "\\b[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}\\b";
    public static final Pattern f16203b = Pattern.compile(j, 2);
    public static final Pattern f16207c = Pattern.compile("\\{uin:.*?\\}");

    public interface NickClickSpanIntf {
        int a(String str, int i);
    }

    private static synchronized void b() {
        synchronized (EmoWindow.class) {
            int length = f16205b.length;
            int i2 = 0;
            while (i2 < length) {
                f16202b.put(f16205b[i2], f16211d[i2]);
                f16206c.put(f16211d[i2], i2 < f16209c.length ? f16209c[i2] : "");
                i2++;
            }
            StringBuffer stringBuffer = new StringBuffer(UnifiedTraceRouter.e + f16205b[0] + UnifiedTraceRouter.f);
            for (int i3 = 1; i3 < length; i3++) {
                stringBuffer.append("|(" + f16205b[i3] + UnifiedTraceRouter.f);
            }
            f16212e = Pattern.compile("@\\{uin:.*?,\\s*nick:.*?\\}");
            f16210d = Pattern.compile(stringBuffer.toString());
            f16213f = Pattern.compile("\\[em\\]e\\d{1,}\\[/em\\]");
            f16199a = true;
        }
    }

    public static String m3962a(String str) {
        if (!f16199a) {
            b();
        }
        Matcher matcher = f16213f.matcher(str);
        while (matcher.find()) {
            String group = matcher.group();
            if (f16206c.containsKey(group)) {
                str = str.replace(group, (CharSequence) f16206c.get(group));
            }
        }
        return str;
    }

    public static String b(String str) {
        if (!f16199a) {
            b();
        }
        if (f16210d != null && str != null) {
            int i2 = 0;
            StringBuilder sb = new StringBuilder(str.length());
            Matcher matcher = f16212e.matcher(str);
            while (matcher.find()) {
                if (matcher.start() >= i2) {
                    sb.append(d(str.substring(i2, matcher.start())));
                    sb.append(str.substring(matcher.start(), matcher.end()));
                }
                i2 = matcher.end();
            }
            sb.append(d(str.substring(i2, str.length())));
            return sb.toString();
        }
        return str;
    }

    private static String d(String str) {
        String str2;
        String replace;
        Matcher matcher = f16210d.matcher(str);
        while (matcher.find()) {
            String group = matcher.group();
            if (group != null && (str2 = (String) f16202b.get(group)) != null && (replace = str.replace(group, str2)) != null) {
                str = replace;
            }
        }
        return str;
    }

    public static String c(String str) {
        if (!f16199a) {
            b();
        }
        if (str != null) {
            int length = f16205b.length;
            String str2 = null;
            for (int i2 = 0; i2 < length; i2++) {
                if (f16211d[i2].equalsIgnoreCase(str)) {
                    str2 = f16205b[i2];
                }
            }
            return str2;
        }
        return str;
    }

    private static void c() {
        f16195a = new HashMap();
        for (int i2 = 0; i2 < f16200a.length; i2++) {
            f16195a.put(f16200a[i2], Integer.valueOf(i2));
        }
    }

    public static int a(String str) {
        Integer num;
        if (f16195a == null) {
            c();
        }
        if (f16195a == null || (num = (Integer) f16195a.get(str)) == null) {
            return -1;
        }
        return num.intValue();
    }

    public static void a() {
        int i2 = 0;
        while (true) {
            int i3 = i2;
            if (i3 < SystemEmoticonInfo.f89202a.length) {
                int i4 = EmotcationConstants.f30357b[SystemEmoticonInfo.f89202a[i3]];
                if (f16196a.get(Integer.valueOf(i4)) == null) {
                    try {
                        f16196a.put(Integer.valueOf(i4), ((BitmapDrawable) BitmapDrawable.createFromStream(BaseApplicationImpl.getContext().getResources().openRawResource(i4), null).mutate()).getBitmap());
                    } catch (OutOfMemoryError e2) {
                        QLog.d(f16194a, 2, "emowindow memory error" + e2.getMessage());
                        return;
                    }
                }
                i2 = i3 + 1;
            } else {
                return;
            }
        }
    }
}