transform ascii to emoticons (on display only)

This commit is contained in:
M. Dietrich 2014-09-01 23:48:42 +02:00
parent 3558fa5f5b
commit 546082147a
3 changed files with 25 additions and 2 deletions

View File

@ -59,7 +59,7 @@ public class ConversationAdapter extends ArrayAdapter<Conversation> {
|| latestMessage.getType() == Message.TYPE_PRIVATE) {
if ((latestMessage.getEncryption() != Message.ENCRYPTION_PGP)
&& (latestMessage.getEncryption() != Message.ENCRYPTION_DECRYPTION_FAILED)) {
convLastMsg.setText(conv.getLatestMessage().getBody());
convLastMsg.setText(UIHelper.transformAsciiEmoticons(conv.getLatestMessage().getBody()));
} else {
convLastMsg.setText(activity
.getText(R.string.encrypted_message_received));

View File

@ -215,7 +215,7 @@ public class MessageAdapter extends ArrayAdapter<Message> {
viewHolder.messageBody.setVisibility(View.VISIBLE);
if (message.getBody() != null) {
if (message.getType() != Message.TYPE_PRIVATE) {
viewHolder.messageBody.setText(message.getMergedBody());
viewHolder.messageBody.setText(UIHelper.transformAsciiEmoticons(message.getMergedBody()));
} else {
String privateMarker;
if (message.getStatus() <= Message.STATUS_RECEIVED) {

View File

@ -545,4 +545,27 @@ public class UIHelper {
return getContactPicture(account.getJid(), size, context, false);
}
}
public static String transformAsciiEmoticons(String body) {
if (body != null) {
for (String[] r: new String[][]{ // see https://de.wikipedia.org/wiki/Unicodeblock_Smileys
{":-?\\)", " 😀 ", },
{";-?\\)", " 😉 ", },
{":-?D", " 😃 ", },
{":-?[Ppb]", " 😋 ", },
{"8-?\\)", " 😎 ", },
{":-?\\|", " 😐 ", },
{":-?[/\\\\]", " 😕 ", },
{":-?\\*", " 😗 ", },
{":-?[0Oo]", " 😮 ", },
{":-?\\(", " 😞 ", },
{"\\^\\^", " 😁 ", },
}) {
String p = r[0];
p = "(^" + p + "$|^" + p + " +| +" + p + " +| +" + p + "$)";
body = body.replaceAll(p, r[1]);
}
body = body.trim();
}
return body;
}
}