Merge pull request #380 from emdete/unicode_emoticons

Daniel Gultsch created

add translation from ascii to unicode emoticons

Change summary

src/eu/siacs/conversations/ui/adapter/ConversationAdapter.java |  2 
src/eu/siacs/conversations/ui/adapter/MessageAdapter.java      |  2 
src/eu/siacs/conversations/utils/UIHelper.java                 | 23 ++++
3 files changed, 25 insertions(+), 2 deletions(-)

Detailed changes

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));

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) {

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;
+	}
 }