# HG changeset patch # User Da Risk # Date 1354837405 -3600 # Node ID c3598834218be6be6e8afdf0d4129179163dec97 # Parent 246d10f27fc6735a7bf1648e339cf3442bd9cb38 Add SmileyParser from the android Mms application. Integrate it in the Chat activity. Fix #66 Improvement will be to put the smiley spannable in the current EditText diff -r 246d10f27fc6 -r c3598834218b res/drawable-hdpi/emo_im_angel.png Binary file res/drawable-hdpi/emo_im_angel.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-hdpi/emo_im_cool.png Binary file res/drawable-hdpi/emo_im_cool.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-hdpi/emo_im_crying.png Binary file res/drawable-hdpi/emo_im_crying.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-hdpi/emo_im_embarrassed.png Binary file res/drawable-hdpi/emo_im_embarrassed.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-hdpi/emo_im_foot_in_mouth.png Binary file res/drawable-hdpi/emo_im_foot_in_mouth.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-hdpi/emo_im_happy.png Binary file res/drawable-hdpi/emo_im_happy.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-hdpi/emo_im_heart.png Binary file res/drawable-hdpi/emo_im_heart.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-hdpi/emo_im_kissing.png Binary file res/drawable-hdpi/emo_im_kissing.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-hdpi/emo_im_laughing.png Binary file res/drawable-hdpi/emo_im_laughing.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-hdpi/emo_im_lips_are_sealed.png Binary file res/drawable-hdpi/emo_im_lips_are_sealed.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-hdpi/emo_im_mad.png Binary file res/drawable-hdpi/emo_im_mad.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-hdpi/emo_im_money_mouth.png Binary file res/drawable-hdpi/emo_im_money_mouth.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-hdpi/emo_im_pokerface.png Binary file res/drawable-hdpi/emo_im_pokerface.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-hdpi/emo_im_sad.png Binary file res/drawable-hdpi/emo_im_sad.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-hdpi/emo_im_smirk.png Binary file res/drawable-hdpi/emo_im_smirk.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-hdpi/emo_im_surprised.png Binary file res/drawable-hdpi/emo_im_surprised.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-hdpi/emo_im_tongue_sticking_out.png Binary file res/drawable-hdpi/emo_im_tongue_sticking_out.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-hdpi/emo_im_undecided.png Binary file res/drawable-hdpi/emo_im_undecided.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-hdpi/emo_im_winking.png Binary file res/drawable-hdpi/emo_im_winking.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-hdpi/emo_im_wtf.png Binary file res/drawable-hdpi/emo_im_wtf.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-hdpi/emo_im_yelling.png Binary file res/drawable-hdpi/emo_im_yelling.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-mdpi/emo_im_angel.png Binary file res/drawable-mdpi/emo_im_angel.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-mdpi/emo_im_cool.png Binary file res/drawable-mdpi/emo_im_cool.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-mdpi/emo_im_crying.png Binary file res/drawable-mdpi/emo_im_crying.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-mdpi/emo_im_embarrassed.png Binary file res/drawable-mdpi/emo_im_embarrassed.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-mdpi/emo_im_foot_in_mouth.png Binary file res/drawable-mdpi/emo_im_foot_in_mouth.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-mdpi/emo_im_happy.png Binary file res/drawable-mdpi/emo_im_happy.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-mdpi/emo_im_heart.png Binary file res/drawable-mdpi/emo_im_heart.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-mdpi/emo_im_kissing.png Binary file res/drawable-mdpi/emo_im_kissing.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-mdpi/emo_im_laughing.png Binary file res/drawable-mdpi/emo_im_laughing.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-mdpi/emo_im_lips_are_sealed.png Binary file res/drawable-mdpi/emo_im_lips_are_sealed.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-mdpi/emo_im_mad.png Binary file res/drawable-mdpi/emo_im_mad.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-mdpi/emo_im_money_mouth.png Binary file res/drawable-mdpi/emo_im_money_mouth.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-mdpi/emo_im_pokerface.png Binary file res/drawable-mdpi/emo_im_pokerface.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-mdpi/emo_im_sad.png Binary file res/drawable-mdpi/emo_im_sad.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-mdpi/emo_im_smirk.png Binary file res/drawable-mdpi/emo_im_smirk.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-mdpi/emo_im_surprised.png Binary file res/drawable-mdpi/emo_im_surprised.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-mdpi/emo_im_tongue_sticking_out.png Binary file res/drawable-mdpi/emo_im_tongue_sticking_out.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-mdpi/emo_im_undecided.png Binary file res/drawable-mdpi/emo_im_undecided.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-mdpi/emo_im_winking.png Binary file res/drawable-mdpi/emo_im_winking.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-mdpi/emo_im_wtf.png Binary file res/drawable-mdpi/emo_im_wtf.png has changed diff -r 246d10f27fc6 -r c3598834218b res/drawable-mdpi/emo_im_yelling.png Binary file res/drawable-mdpi/emo_im_yelling.png has changed diff -r 246d10f27fc6 -r c3598834218b res/values-de/smileys.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/res/values-de/smileys.xml Fri Dec 07 00:43:25 2012 +0100 @@ -0,0 +1,44 @@ + + + + + + "Glücklich" + "Traurig" + "Zwinkern" + "Frech" + "Überrascht" + "Kuss" + "Schreien" + "Cool" + "Dollarzeichen" + "Fettnäpfchen" + "Peinlich berührt" + "Engel" + "Unentschlossen" + "Weinen" + "Versiegelte Lippen" + "Fröhlich" + "Verwirrt" + "Verliebt" + "Verärgert" + "Grinsen" + "Pokergesicht" + + diff -r 246d10f27fc6 -r c3598834218b res/values-es/smileys.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/res/values-es/smileys.xml Fri Dec 07 00:43:25 2012 +0100 @@ -0,0 +1,44 @@ + + + + + + "Contento" + "Triste" + "Guiño" + "Sacando la lengua" + "Sorprendido" + "Besando" + "Sorpresa" + "Atractivo" + "Dinero en la boca" + "Metedura de pata" + "Avergonzado" + "Ángel" + "Indeciso" + "Llorando" + "Labios sellados" + "Riendo" + "Confuso" + "Corazón" + "Enfadado" + "No mola" + "Cara de póquer" + + diff -r 246d10f27fc6 -r c3598834218b res/values-fr/smileys.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/res/values-fr/smileys.xml Fri Dec 07 00:43:25 2012 +0100 @@ -0,0 +1,44 @@ + + + + + + "Content" + "Triste" + "Clin d\'œil" + "Tire la langue" + "Surpris" + "Bisou" + "Hurle" + "Cool" + "Argent" + "Embarrassé" + "Gêné" + "Ange" + "Indécis" + "Pleure" + "Motus" + "Rigole" + "Confus" + "Cœur" + "Mécontent" + "Sourire en coin" + "Impassible" + + diff -r 246d10f27fc6 -r c3598834218b res/values-it/smileys.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/res/values-it/smileys.xml Fri Dec 07 00:43:25 2012 +0100 @@ -0,0 +1,44 @@ + + + + + + "Felice" + "Triste" + "Occhiolino" + "Linguaccia" + "Sorpreso" + "Bacio" + "Urlo" + "Fico" + "Fatti, non parole" + "Gaffe" + "Imbarazzato" + "Angelo" + "Indeciso" + "Piango" + "Labbra cucite" + "Risata" + "Confuso" + "Cuore" + "Arrabbiato" + "Ghigno" + "Impassibile" + + diff -r 246d10f27fc6 -r c3598834218b res/values-nb/smileys.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/res/values-nb/smileys.xml Fri Dec 07 00:43:25 2012 +0100 @@ -0,0 +1,44 @@ + + + + + + "Glad" + "Trist" + "Blunker" + "Rekker tunge" + "Overrasket" + "Kyss" + "Roper" + "Kul" + "Pengemunn" + "Fot i munnen" + "Flau" + "Engel" + "Usikker" + "Gråter" + "Stille som graven" + "Ler" + "Forvirret" + "Hjerte" + "Sint" + "Glis" + "Pokerfjes" + + diff -r 246d10f27fc6 -r c3598834218b res/values-pt/smileys.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/res/values-pt/smileys.xml Fri Dec 07 00:43:25 2012 +0100 @@ -0,0 +1,44 @@ + + + + + + "Feliz" + "Triste" + "Piscando" + "Mostrando a língua" + "Surpreso" + "Beijando" + "Gritando" + "Tranquilo" + "Louco por dinheiro" + "Falei besteira" + "Envergonhado" + "Anjo" + "Indeciso" + "Chorando" + "Boca fechada" + "Rindo" + "Confuso" + "Coração" + "Louco" + "Sorriso forçado" + "Indiferente" + + diff -r 246d10f27fc6 -r c3598834218b res/values-ru/smileys.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/res/values-ru/smileys.xml Fri Dec 07 00:43:25 2012 +0100 @@ -0,0 +1,44 @@ + + + + + + "Радость" + "Грустный" + "Подмигивает" + "Показывает язык" + "Удивлен" + "Поцелуй" + "Кричит" + "Крутой" + "Не болтай попусту" + "В замешательстве" + "Смущение" + "Ангел" + "Нерешительный" + "Плачет" + "Не скажу" + "Смех" + "Озадаченный" + "Сердце" + "Злой" + "Ухмылка" + "Невозмутимость" + + diff -r 246d10f27fc6 -r c3598834218b res/values-sv/smileys.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/res/values-sv/smileys.xml Fri Dec 07 00:43:25 2012 +0100 @@ -0,0 +1,44 @@ + + + + + + "Glad" + "Ledsen" + "Blinkar" + "Lipar" + "Förvånad" + "Pussar" + "Skriker" + "Cool" + "Dollarmun" + "Bortgjord" + "Generad" + "Ängel" + "Tveksam" + "Gråter" + "Hemlis" + "Skrattar" + "Förvirrad" + "Hjärta" + "Arg" + "Flinar" + "Pokeransikte" + + diff -r 246d10f27fc6 -r c3598834218b res/values-zh-rCN/smileys.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/res/values-zh-rCN/smileys.xml Fri Dec 07 00:43:25 2012 +0100 @@ -0,0 +1,44 @@ + + + + + + "开心" + "忧伤" + "眨眼" + "吐舌" + "惊讶" + "亲吻" + "叫喊" + "酷" + "财迷" + "说错了话" + "尴尬" + "天使" + "犹豫" + "哭泣" + "保密" + "大笑" + "困惑" + "爱之心" + "生气" + "傻笑" + "一本正经" + + diff -r 246d10f27fc6 -r c3598834218b res/values-zh-rTW/smileys.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/res/values-zh-rTW/smileys.xml Fri Dec 07 00:43:25 2012 +0100 @@ -0,0 +1,44 @@ + + + + + + "開心" + "傷心" + "眨眼" + "吐舌頭" + "驚訝" + "紅唇" + "大喊" + "酷" + "滿嘴錢" + "說錯話" + "害羞" + "天使" + "還沒決定" + "嚎啕大哭" + "不要告訴別人" + "開懷大笑" + "疑惑" + "愛心" + "生氣" + "傻笑" + "撲克臉" + + diff -r 246d10f27fc6 -r c3598834218b res/values/smileys.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/res/values/smileys.xml Fri Dec 07 00:43:25 2012 +0100 @@ -0,0 +1,73 @@ + + + + + + :-) + :-( + ;-) + :-P + =-O + :-* + :O + B-) + :-$ + :-! + :-[ + O:-) + :-\\ + :\'( + :-X + :-D + o_O + <3 + x-( + :-/ + :-I + + + + + Happy + Sad + Winking + Tongue sticking out + Surprised + Kissing + Yelling + Cool + Money mouth + Foot in mouth + Embarrassed + Angel + Undecided + Crying + Lips are sealed + Laughing + Confused + Heart + Mad + Smirk + Poker face + + + diff -r 246d10f27fc6 -r c3598834218b src/com/android/mms/util/SmileyParser.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/com/android/mms/util/SmileyParser.java Fri Dec 07 00:43:25 2012 +0100 @@ -0,0 +1,200 @@ +/* + * Copyright (C) 2009 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.mms.util; + +import java.util.HashMap; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import android.content.Context; +import android.text.Spannable; +import android.text.SpannableStringBuilder; +import android.text.style.ImageSpan; + +import com.beem.project.beem.R; + +/** + * A class for annotating a CharSequence with spans to convert textual emoticons + * to graphical ones. + */ +public class SmileyParser { + // Singleton stuff + private static SmileyParser sInstance; + public static SmileyParser getInstance() { return sInstance; } + public static void init(Context context) { + sInstance = new SmileyParser(context); + } + + private final Context mContext; + private final String[] mSmileyTexts; + private final Pattern mPattern; + private final HashMap mSmileyToRes; + + private SmileyParser(Context context) { + mContext = context; + mSmileyTexts = mContext.getResources().getStringArray(DEFAULT_SMILEY_TEXTS); + mSmileyToRes = buildSmileyToRes(); + mPattern = buildPattern(); + } + + static class Smileys { + private static final int[] sIconIds = { + R.drawable.emo_im_happy, + R.drawable.emo_im_sad, + R.drawable.emo_im_winking, + R.drawable.emo_im_tongue_sticking_out, + R.drawable.emo_im_surprised, + R.drawable.emo_im_kissing, + R.drawable.emo_im_yelling, + R.drawable.emo_im_cool, + R.drawable.emo_im_money_mouth, + R.drawable.emo_im_foot_in_mouth, + R.drawable.emo_im_embarrassed, + R.drawable.emo_im_angel, + R.drawable.emo_im_undecided, + R.drawable.emo_im_crying, + R.drawable.emo_im_lips_are_sealed, + R.drawable.emo_im_laughing, + R.drawable.emo_im_wtf, + R.drawable.emo_im_heart, + R.drawable.emo_im_mad, + R.drawable.emo_im_smirk, + R.drawable.emo_im_pokerface + }; + + public static int HAPPY = 0; + public static int SAD = 1; + public static int WINKING = 2; + public static int TONGUE_STICKING_OUT = 3; + public static int SURPRISED = 4; + public static int KISSING = 5; + public static int YELLING = 6; + public static int COOL = 7; + public static int MONEY_MOUTH = 8; + public static int FOOT_IN_MOUTH = 9; + public static int EMBARRASSED = 10; + public static int ANGEL = 11; + public static int UNDECIDED = 12; + public static int CRYING = 13; + public static int LIPS_ARE_SEALED = 14; + public static int LAUGHING = 15; + public static int WTF = 16; + public static int MAD = 17; + public static int HEART = 18; + public static int SMIRK = 19; + public static int POKERFACE = 20; + + public static int getSmileyResource(int which) { + return sIconIds[which]; + } + } + + // NOTE: if you change anything about this array, you must make the corresponding change + // to the string arrays: default_smiley_texts and default_smiley_names in res/values/arrays.xml + public static final int[] DEFAULT_SMILEY_RES_IDS = { + Smileys.getSmileyResource(Smileys.HAPPY), // 0 + Smileys.getSmileyResource(Smileys.SAD), // 1 + Smileys.getSmileyResource(Smileys.WINKING), // 2 + Smileys.getSmileyResource(Smileys.TONGUE_STICKING_OUT), // 3 + Smileys.getSmileyResource(Smileys.SURPRISED), // 4 + Smileys.getSmileyResource(Smileys.KISSING), // 5 + Smileys.getSmileyResource(Smileys.YELLING), // 6 + Smileys.getSmileyResource(Smileys.COOL), // 7 + Smileys.getSmileyResource(Smileys.MONEY_MOUTH), // 8 + Smileys.getSmileyResource(Smileys.FOOT_IN_MOUTH), // 9 + Smileys.getSmileyResource(Smileys.EMBARRASSED), // 10 + Smileys.getSmileyResource(Smileys.ANGEL), // 11 + Smileys.getSmileyResource(Smileys.UNDECIDED), // 12 + Smileys.getSmileyResource(Smileys.CRYING), // 13 + Smileys.getSmileyResource(Smileys.LIPS_ARE_SEALED), // 14 + Smileys.getSmileyResource(Smileys.LAUGHING), // 15 + Smileys.getSmileyResource(Smileys.WTF), // 16 + Smileys.getSmileyResource(Smileys.MAD), // 17 + Smileys.getSmileyResource(Smileys.HEART), // 18 + Smileys.getSmileyResource(Smileys.SMIRK), // 19 + Smileys.getSmileyResource(Smileys.POKERFACE), // 20 + }; + + public static final int DEFAULT_SMILEY_TEXTS = R.array.default_smiley_texts; + public static final int DEFAULT_SMILEY_NAMES = R.array.default_smiley_names; + + /** + * Builds the hashtable we use for mapping the string version + * of a smiley (e.g. ":-)") to a resource ID for the icon version. + */ + private HashMap buildSmileyToRes() { + if (DEFAULT_SMILEY_RES_IDS.length != mSmileyTexts.length) { + // Throw an exception if someone updated DEFAULT_SMILEY_RES_IDS + // and failed to update arrays.xml + throw new IllegalStateException("Smiley resource ID/text mismatch"); + } + + HashMap smileyToRes = + new HashMap(mSmileyTexts.length); + for (int i = 0; i < mSmileyTexts.length; i++) { + smileyToRes.put(mSmileyTexts[i], DEFAULT_SMILEY_RES_IDS[i]); + } + + return smileyToRes; + } + + /** + * Builds the regular expression we use to find smileys in {@link #addSmileySpans}. + */ + private Pattern buildPattern() { + // Set the StringBuilder capacity with the assumption that the average + // smiley is 3 characters long. + StringBuilder patternString = new StringBuilder(mSmileyTexts.length * 3); + + // Build a regex that looks like (:-)|:-(|...), but escaping the smilies + // properly so they will be interpreted literally by the regex matcher. + patternString.append('('); + for (String s : mSmileyTexts) { + patternString.append(Pattern.quote(s)); + patternString.append('|'); + } + // Replace the extra '|' with a ')' + patternString.replace(patternString.length() - 1, patternString.length(), ")"); + + return Pattern.compile(patternString.toString()); + } + + + /** + * Adds ImageSpans to a CharSequence that replace textual emoticons such + * as :-) with a graphical version. + * + * @param text A CharSequence possibly containing emoticons + * @return A CharSequence annotated with ImageSpans covering any + * recognized emoticons. + */ + public CharSequence addSmileySpans(CharSequence text) { + SpannableStringBuilder builder = new SpannableStringBuilder(text); + + Matcher matcher = mPattern.matcher(text); + while (matcher.find()) { + int resId = mSmileyToRes.get(matcher.group()); + builder.setSpan(new ImageSpan(mContext, resId), + matcher.start(), matcher.end(), + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + } + + return builder; + } +} + + diff -r 246d10f27fc6 -r c3598834218b src/com/beem/project/beem/BeemApplication.java --- a/src/com/beem/project/beem/BeemApplication.java Fri Nov 02 10:56:48 2012 +0100 +++ b/src/com/beem/project/beem/BeemApplication.java Fri Dec 07 00:43:25 2012 +0100 @@ -49,6 +49,8 @@ import android.preference.PreferenceManager; import android.text.TextUtils; +import com.android.mms.util.SmileyParser; + /** * This class contains informations that needs to be global in the application. * Theses informations must be necessary for the activities and the service. @@ -133,6 +135,7 @@ String password = mSettings.getString(BeemApplication.ACCOUNT_PASSWORD_KEY, ""); mIsAccountConfigured = !("".equals(login) || "".equals(password)); mSettings.registerOnSharedPreferenceChangeListener(mPreferenceListener); + SmileyParser.init(this); } @Override diff -r 246d10f27fc6 -r c3598834218b src/com/beem/project/beem/ui/Chat.java --- a/src/com/beem/project/beem/ui/Chat.java Fri Nov 02 10:56:48 2012 +0100 +++ b/src/com/beem/project/beem/ui/Chat.java Fri Dec 07 00:43:25 2012 +0100 @@ -90,6 +90,8 @@ import android.widget.ListView; import android.widget.TextView; +import com.android.mms.util.SmileyParser; + import com.beem.project.beem.BeemApplication; import com.beem.project.beem.R; import com.beem.project.beem.providers.AvatarProvider; @@ -603,6 +605,16 @@ BitmapFactory.decodeResource(getResources(), R.drawable.status_requested)); } + /** + * Add smileys Spannable to a message string. + * + * @param msg the message containing optional smileys strings + * @return the message with smileys spannable + */ + private CharSequence addSmileysToMessage(String msg) { + SmileyParser parser = SmileyParser.getInstance(); + return parser.addSmileySpans(msg); + } /** * {@inheritDoc}. @@ -851,7 +863,8 @@ msgName.setTextColor(Color.WHITE); msgName.setError(null); TextView msgText = (TextView) sv.findViewById(R.id.chatmessagetext); - msgText.setText(msg.getMessage()); + CharSequence msgBody = addSmileysToMessage(msg.getMessage()); + msgText.setText(msgBody); registerForContextMenu(msgText); TextView msgDate = (TextView) sv.findViewById(R.id.chatmessagedate); if (msg.getTimestamp() != null) {