From 9a6e56cf169d823277d5110e08e353b4ac50a22b Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 13 Sep 2018 13:15:08 +0000 Subject: [PATCH] Ask before opening links, with the option to edit the link --- .../java/eu/faircode/email/ActivityView.java | 3 +- .../eu/faircode/email/FragmentAccount.java | 6 +-- .../eu/faircode/email/FragmentCompose.java | 6 +-- .../eu/faircode/email/FragmentIdentity.java | 6 +-- .../eu/faircode/email/FragmentMessage.java | 39 +++++++++++++------ app/src/main/res/layout/dialog_link.xml | 25 ++++++++++++ app/src/main/res/values/strings.xml | 1 + 7 files changed, 63 insertions(+), 23 deletions(-) create mode 100644 app/src/main/res/layout/dialog_link.xml diff --git a/app/src/main/java/eu/faircode/email/ActivityView.java b/app/src/main/java/eu/faircode/email/ActivityView.java index 6200e09c..940558b0 100644 --- a/app/src/main/java/eu/faircode/email/ActivityView.java +++ b/app/src/main/java/eu/faircode/email/ActivityView.java @@ -637,8 +637,7 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB if (faq.resolveActivity(getPackageManager()) == null) startActivity(getIntentRate()); else { - AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder + new AlertDialog.Builder(this) .setMessage(R.string.title_issue) .setPositiveButton(R.string.title_yes, new DialogInterface.OnClickListener() { @Override diff --git a/app/src/main/java/eu/faircode/email/FragmentAccount.java b/app/src/main/java/eu/faircode/email/FragmentAccount.java index 12edba2c..85298b91 100644 --- a/app/src/main/java/eu/faircode/email/FragmentAccount.java +++ b/app/src/main/java/eu/faircode/email/FragmentAccount.java @@ -699,8 +699,7 @@ public class FragmentAccount extends FragmentEx { ibDelete.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); - builder + new AlertDialog.Builder(getContext()) .setMessage(R.string.title_account_delete) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override @@ -735,7 +734,8 @@ public class FragmentAccount extends FragmentEx { }.load(FragmentAccount.this, args); } }) - .setNegativeButton(android.R.string.cancel, null).show(); + .setNegativeButton(android.R.string.cancel, null) + .show(); } }); diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index fe014c57..708e95fc 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -235,8 +235,7 @@ public class FragmentCompose extends FragmentEx { public boolean onNavigationItemSelected(@NonNull MenuItem item) { int action = item.getItemId(); if (action == R.id.action_delete) { - AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); - builder + new AlertDialog.Builder(getContext()) .setMessage(R.string.title_ask_delete) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override @@ -244,7 +243,8 @@ public class FragmentCompose extends FragmentEx { onAction(R.id.action_delete); } }) - .setNegativeButton(android.R.string.cancel, null).show(); + .setNegativeButton(android.R.string.cancel, null) + .show(); } else onAction(action); diff --git a/app/src/main/java/eu/faircode/email/FragmentIdentity.java b/app/src/main/java/eu/faircode/email/FragmentIdentity.java index cbea606c..bd389451 100644 --- a/app/src/main/java/eu/faircode/email/FragmentIdentity.java +++ b/app/src/main/java/eu/faircode/email/FragmentIdentity.java @@ -347,8 +347,7 @@ public class FragmentIdentity extends FragmentEx { ibDelete.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); - builder + new AlertDialog.Builder(getContext()) .setMessage(R.string.title_identity_delete) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override @@ -381,7 +380,8 @@ public class FragmentIdentity extends FragmentEx { }.load(FragmentIdentity.this, args); } }) - .setNegativeButton(android.R.string.cancel, null).show(); + .setNegativeButton(android.R.string.cancel, null) + .show(); } }); diff --git a/app/src/main/java/eu/faircode/email/FragmentMessage.java b/app/src/main/java/eu/faircode/email/FragmentMessage.java index d3c0e38c..3587542a 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessage.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessage.java @@ -52,6 +52,7 @@ import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.Button; +import android.widget.EditText; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.TextView; @@ -247,12 +248,26 @@ public class FragmentMessage extends FragmentEx { .putExtra("uri", uri)); } else { - // https://developer.chrome.com/multidevice/android/customtabs - CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder(); - builder.setToolbarColor(Helper.resolveColor(getContext(), R.attr.colorPrimary)); - - CustomTabsIntent customTabsIntent = builder.build(); - customTabsIntent.launchUrl(getContext(), Uri.parse(url)); + View view = LayoutInflater.from(getContext()).inflate(R.layout.dialog_link, null); + final EditText etLink = view.findViewById(R.id.etLink); + etLink.setText(url); + new AlertDialog.Builder(getContext()) + .setView(view) + .setPositiveButton(R.string.title_yes, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + Uri uri = Uri.parse(etLink.getText().toString()); + + // https://developer.chrome.com/multidevice/android/customtabs + CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder(); + builder.setToolbarColor(Helper.resolveColor(getContext(), R.attr.colorPrimary)); + + CustomTabsIntent customTabsIntent = builder.build(); + customTabsIntent.launchUrl(getContext(), uri); + } + }) + .setNegativeButton(R.string.title_no, null) + .show(); } } @@ -712,8 +727,7 @@ public class FragmentMessage extends FragmentEx { } private void onActionSpam() { - AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); - builder + new AlertDialog.Builder(getContext()) .setMessage(R.string.title_ask_spam) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override @@ -761,15 +775,15 @@ public class FragmentMessage extends FragmentEx { }.load(FragmentMessage.this, args); } }) - .setNegativeButton(android.R.string.cancel, null).show(); + .setNegativeButton(android.R.string.cancel, null) + .show(); } private void onActionDelete() { boolean delete = (Boolean) bottom_navigation.getTag(); if (delete) { // No trash or is trash - AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); - builder + new AlertDialog.Builder(getContext()) .setMessage(R.string.title_ask_delete) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override @@ -819,7 +833,8 @@ public class FragmentMessage extends FragmentEx { }.load(FragmentMessage.this, args); } }) - .setNegativeButton(android.R.string.cancel, null).show(); + .setNegativeButton(android.R.string.cancel, null) + .show(); } else { Helper.setViewsEnabled(view, false); diff --git a/app/src/main/res/layout/dialog_link.xml b/app/src/main/res/layout/dialog_link.xml new file mode 100644 index 00000000..da0a63cc --- /dev/null +++ b/app/src/main/res/layout/dialog_link.xml @@ -0,0 +1,25 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 894af731..333693e3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -222,6 +222,7 @@ Long press for options Swipe left to trash; swipe right to archive (if available); long press to mark read/unread or to add/remove star + Open link There is an update to version %1$s available Do you have a question or problem? Yes