diff --git a/app/src/main/java/eu/faircode/email/FragmentDialogOpenLink.java b/app/src/main/java/eu/faircode/email/FragmentDialogOpenLink.java index 1b2b12f5c9..12f6a137ef 100644 --- a/app/src/main/java/eu/faircode/email/FragmentDialogOpenLink.java +++ b/app/src/main/java/eu/faircode/email/FragmentDialogOpenLink.java @@ -57,6 +57,7 @@ import androidx.appcompat.app.AlertDialog; import androidx.constraintlayout.widget.Group; import androidx.core.net.MailTo; import androidx.core.util.PatternsCompat; +import androidx.localbroadcastmanager.content.LocalBroadcastManager; import androidx.preference.PreferenceManager; import java.net.IDN; @@ -156,11 +157,12 @@ public class FragmentDialogOpenLink extends FragmentDialogBase { final ImageButton ibDifferent = dview.findViewById(R.id.ibDifferent); final EditText etLink = dview.findViewById(R.id.etLink); final TextView tvLink = dview.findViewById(R.id.tvLink); + final ImageButton ibSearch = dview.findViewById(R.id.ibSearch); + final ImageButton ibShare = dview.findViewById(R.id.ibShare); + final ImageButton ibCopy = dview.findViewById(R.id.ibCopy); final TextView tvSuspicious = dview.findViewById(R.id.tvSuspicious); final TextView tvDisconnect = dview.findViewById(R.id.tvDisconnect); final TextView tvDisconnectCategories = dview.findViewById(R.id.tvDisconnectCategories); - final ImageButton ibShare = dview.findViewById(R.id.ibShare); - final ImageButton ibCopy = dview.findViewById(R.id.ibCopy); final CheckBox cbSecure = dview.findViewById(R.id.cbSecure); final CheckBox cbSanitize = dview.findViewById(R.id.cbSanitize); final CheckBox cbNotAgain = dview.findViewById(R.id.cbNotAgain); @@ -241,6 +243,30 @@ public class FragmentDialogOpenLink extends FragmentDialogBase { } }); + MailTo mailto = null; + if ("mailto".equals(uri.getScheme())) + try { + mailto = MailTo.parse(uri); + } catch (Throwable ex) { + Log.w(ex); + } + ibSearch.setVisibility( + mailto != null && !TextUtils.isEmpty(mailto.getTo()) + ? View.VISIBLE : View.GONE); + ibSearch.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + dismiss(); + + LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(context); + lbm.sendBroadcast( + new Intent(ActivityView.ACTION_SEARCH_ADDRESS) + .putExtra("account", -1L) + .putExtra("folder", -1L) + .putExtra("query", MailTo.parse(uri).getTo())); + } + }); + ibShare.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -610,7 +636,7 @@ public class FragmentDialogOpenLink extends FragmentDialogBase { text = "tel://" + host; } else if ("mailto".equals(scheme)) { if (host == null) { - MailTo email = MailTo.parse(uri.toString()); + MailTo email = MailTo.parse(uri); host = UriHelper.getEmailDomain(email.getTo()); } } diff --git a/app/src/main/res/layout/dialog_open_link.xml b/app/src/main/res/layout/dialog_open_link.xml index 626bf3abaa..492f06ac63 100644 --- a/app/src/main/res/layout/dialog_open_link.xml +++ b/app/src/main/res/layout/dialog_open_link.xml @@ -82,10 +82,22 @@ android:singleLine="true" android:text="Original link" android:textAppearance="@style/TextAppearance.AppCompat.Small" - app:layout_constraintEnd_toStartOf="@+id/ibShare" + app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/etLink" /> + +