From 015edd6053f3df31c85354ab4e4d4c6f2cd52587 Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Fri, 17 Feb 2017 19:26:25 +0100 Subject: [PATCH] Create a new chat by clicking on email-links. --- .../main/java/com/b44t/ui/ChatActivity.java | 52 ++++++++++++++++--- 1 file changed, 44 insertions(+), 8 deletions(-) diff --git a/MessengerProj/src/main/java/com/b44t/ui/ChatActivity.java b/MessengerProj/src/main/java/com/b44t/ui/ChatActivity.java index 0cc7b71a2..660d34aef 100644 --- a/MessengerProj/src/main/java/com/b44t/ui/ChatActivity.java +++ b/MessengerProj/src/main/java/com/b44t/ui/ChatActivity.java @@ -1570,7 +1570,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { - int chatId = MrMailbox.createChatByContactId(fromId); + int chatId = MrMailbox.createChatByContactId(fromId); if( chatId != 0 ) { Bundle args = new Bundle(); args.putInt("chat_id", chatId); @@ -2947,8 +2947,16 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } else*/ { final String urlFinal = ((URLSpan) url).getURL(); - if (longPress) { + String urlTitle = urlFinal; + boolean isMailto = urlFinal.startsWith("mailto:"); + if( isMailto ) { + urlTitle = urlFinal.substring(7); + } + + if (longPress) + { AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + builder.setTitle(urlTitle); builder.setItems(new CharSequence[]{LocaleController.getString("Open", R.string.Open), LocaleController.getString("CopyToClipboard", R.string.CopyToClipboard)}, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, final int which) { @@ -2960,12 +2968,40 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } }); showDialog(builder.create()); - } else { - /*if (url instanceof URLSpanReplacement) { - showOpenUrlAlert(((URLSpanReplacement) url).getURL()); - } else*/ if (url instanceof URLSpan) { - Browser.openUrl(getParentActivity(), urlFinal); - } else { + } + else + { + if (url instanceof URLSpan) + { + if( isMailto ) + { + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + int contactId = MrMailbox.createContact("", urlFinal); + int chatId = MrMailbox.createChatByContactId(contactId); + if( chatId != 0 ) { + Bundle args = new Bundle(); + args.putInt("chat_id", chatId); + presentFragment(new ChatActivity(args), true /*removeLast*/); + } + else { + Toast.makeText(getParentActivity(), "Cannot create chat.", Toast.LENGTH_LONG).show(); // should not happen + } + } + }); + builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); + builder.setMessage(AndroidUtilities.replaceTags(LocaleController.formatString("AskStartChatWith", R.string.AskStartChatWith, urlTitle))); + showDialog(builder.create()); + } + else + { + Browser.openUrl(getParentActivity(), urlFinal); + } + } + else + { url.onClick(fragmentView); } }