diff options
3 files changed, 25 insertions, 2 deletions
diff --git a/src/eu/siacs/conversations/ui/adapter/ConversationAdapter.java b/src/eu/siacs/conversations/ui/adapter/ConversationAdapter.java index fcc576018..ecae62318 100644 --- a/src/eu/siacs/conversations/ui/adapter/ConversationAdapter.java +++ b/src/eu/siacs/conversations/ui/adapter/ConversationAdapter.java @@ -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)); diff --git a/src/eu/siacs/conversations/ui/adapter/MessageAdapter.java b/src/eu/siacs/conversations/ui/adapter/MessageAdapter.java index 637711aba..553584cd7 100644 --- a/src/eu/siacs/conversations/ui/adapter/MessageAdapter.java +++ b/src/eu/siacs/conversations/ui/adapter/MessageAdapter.java @@ -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) { diff --git a/src/eu/siacs/conversations/utils/UIHelper.java b/src/eu/siacs/conversations/utils/UIHelper.java index 1f584fe57..69f833f2a 100644 --- a/src/eu/siacs/conversations/utils/UIHelper.java +++ b/src/eu/siacs/conversations/utils/UIHelper.java @@ -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; + } } |