From f2cbbeb83a0f0048f0348a462de9be2fd48f8790 Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 31 Mar 2022 19:17:10 +0200 Subject: [PATCH] Auto confirm forward raw --- .../email/FragmentDialogForwardRaw.java | 40 ++++++++++++++----- .../faircode/email/FragmentOptionsMisc.java | 3 +- .../main/res/layout/dialog_forward_raw.xml | 9 +++++ app/src/main/res/values/strings.xml | 1 + 4 files changed, 42 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentDialogForwardRaw.java b/app/src/main/java/eu/faircode/email/FragmentDialogForwardRaw.java index b352cd8379..46f1d980c4 100644 --- a/app/src/main/java/eu/faircode/email/FragmentDialogForwardRaw.java +++ b/app/src/main/java/eu/faircode/email/FragmentDialogForwardRaw.java @@ -23,6 +23,7 @@ import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.content.SharedPreferences; import android.net.ConnectivityManager; import android.net.Network; import android.net.NetworkCapabilities; @@ -32,6 +33,8 @@ import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; +import android.widget.CheckBox; +import android.widget.CompoundButton; import android.widget.ProgressBar; import android.widget.TextView; @@ -42,6 +45,7 @@ import androidx.core.content.FileProvider; import androidx.lifecycle.Lifecycle; import androidx.lifecycle.LiveData; import androidx.lifecycle.Observer; +import androidx.preference.PreferenceManager; import java.io.File; import java.text.NumberFormat; @@ -52,7 +56,7 @@ import java.util.Objects; public class FragmentDialogForwardRaw extends FragmentDialogBase { private boolean enabled; - private static final long AUTO_CONFIRM_DELAY = 10 * 1000L; + private static final long AUTO_CONFIRM_DELAY = 2 * 1000L; @NonNull @Override @@ -64,15 +68,21 @@ public class FragmentDialogForwardRaw extends FragmentDialogBase { if (savedInstanceState != null) enabled = savedInstanceState.getBoolean("fair:enabled"); - View dview = LayoutInflater.from(getContext()).inflate(R.layout.dialog_forward_raw, null); + final Context context = getContext(); + View dview = LayoutInflater.from(context).inflate(R.layout.dialog_forward_raw, null); ProgressBar pbDownloaded = dview.findViewById(R.id.pbDownloaded); TextView tvRemaining = dview.findViewById(R.id.tvRemaining); TextView tvOption = dview.findViewById(R.id.tvOption); TextView tvNoInternet = dview.findViewById(R.id.tvNoInternet); + CheckBox cbAutoConfirm = dview.findViewById(R.id.cbAutoConfirm); + + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + boolean eml_auto_confirm = prefs.getBoolean("eml_auto_confirm", false); pbDownloaded.setProgress(0); pbDownloaded.setMax(ids.length); tvRemaining.setText(getString(R.string.title_eml_downloaded, "-")); + cbAutoConfirm.setChecked(eml_auto_confirm); tvOption.setOnClickListener(new View.OnClickListener() { @Override @@ -83,6 +93,13 @@ public class FragmentDialogForwardRaw extends FragmentDialogBase { } }); + cbAutoConfirm.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { + prefs.edit().putBoolean("eml_auto_confirm", checked).apply(); + } + }); + NumberFormat NF = NumberFormat.getNumberInstance(); new SimpleTask() { @@ -158,7 +175,7 @@ public class FragmentDialogForwardRaw extends FragmentDialogBase { @Override protected void onExecuted(Bundle args, long[] ids) { - DB db = DB.getInstance(getContext()); + DB db = DB.getInstance(context); LiveData ld = db.message().liveRaw(ids); ld.observe(getViewLifecycleOwner(), new Observer() { @Override @@ -181,12 +198,15 @@ public class FragmentDialogForwardRaw extends FragmentDialogBase { enabled = true; Button ok = getPositiveButton(); ok.setEnabled(enabled); - ok.postDelayed(new Runnable() { - @Override - public void run() { - getPositiveButton().performClick(); - } - }, AUTO_CONFIRM_DELAY); + + boolean eml_auto_confirm = prefs.getBoolean("eml_auto_confirm", false); + if (eml_auto_confirm) + ok.postDelayed(new Runnable() { + @Override + public void run() { + getPositiveButton().performClick(); + } + }, AUTO_CONFIRM_DELAY); } } }); @@ -198,7 +218,7 @@ public class FragmentDialogForwardRaw extends FragmentDialogBase { } }.execute(this, getArguments(), "messages:forward"); - return new AlertDialog.Builder(getContext()) + return new AlertDialog.Builder(context) .setView(dview) .setPositiveButton(R.string.title_send, new DialogInterface.OnClickListener() { @Override diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java index d2fd72fe9a..f8d47740fe 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java @@ -228,7 +228,8 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc "cc_bcc", "inline_image_hint", "compose_reference", "send_dialog", "setup_reminder", "setup_advanced", "signature_images_hint", - "gmail_checked" + "gmail_checked", + "eml_auto_confirm" }; @Override diff --git a/app/src/main/res/layout/dialog_forward_raw.xml b/app/src/main/res/layout/dialog_forward_raw.xml index 67a0cfb757..c2c77e8e99 100644 --- a/app/src/main/res/layout/dialog_forward_raw.xml +++ b/app/src/main/res/layout/dialog_forward_raw.xml @@ -82,5 +82,14 @@ android:textColor="?attr/colorWarning" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tvRemaining" /> + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 95c834d70f..da8312356f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1161,6 +1161,7 @@ To forward messages, the raw (original) messages need to be downloaded from the email server. This requires an internet connection and the messages must still be stored on the email server. This can be prevented by enabling always downloading raw message files in the connection settings Raw messages downloaded: %1$s + Automatically confirm after a few seconds Select buttons The actual actions available depend on the account type and configuration