From e0d5331c2937fc33bc790a28a44ea6d66e1b8c3e Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 27 Apr 2022 07:54:19 +0200 Subject: [PATCH] Auto save after dots --- .../eu/faircode/email/FragmentCompose.java | 13 ++++------- .../faircode/email/FragmentOptionsSend.java | 23 ++++++++++++++----- .../main/java/eu/faircode/email/Helper.java | 4 ++++ .../main/res/layout/fragment_options_send.xml | 17 +++++++++++--- app/src/main/res/values/strings.xml | 3 ++- 5 files changed, 42 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index 4a5c6f5966..831c2dd66c 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -396,7 +396,8 @@ public class FragmentCompose extends FragmentBase { resolver = getContext().getContentResolver(); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); - final boolean auto_save = prefs.getBoolean("auto_save", true); + final boolean auto_save_paragraph = prefs.getBoolean("auto_save_paragraph", true); + final boolean auto_save_dot = prefs.getBoolean("auto_save_dot", false); final boolean keyboard_no_fullscreen = prefs.getBoolean("keyboard_no_fullscreen", false); final boolean suggest_names = prefs.getBoolean("suggest_names", true); final boolean suggest_sent = prefs.getBoolean("suggest_sent", true); @@ -646,7 +647,8 @@ public class FragmentCompose extends FragmentBase { if (count - before == 1 && index > 0) { char c = text.charAt(index); char b = text.charAt(index - 1); - save = (c == '\n' && b != '\n') || (isDot(c) && !isDot(b)); + save = (auto_save_paragraph && c == '\n' && b != '\n') || + (auto_save_dot && Helper.isDot(c) && !Helper.isDot(b)); if (save) Log.i("Save=" + index); @@ -800,7 +802,7 @@ public class FragmentCompose extends FragmentBase { translated = null; } - if (save && auto_save) + if (save) try { if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) { Bundle extras = new Bundle(); @@ -814,11 +816,6 @@ public class FragmentCompose extends FragmentBase { if (lp != null) TextUtils.dumpSpans(text, lp, "---after>"); } - - private boolean isDot(char c) { - return BuildConfig.DEBUG && - (c == '.' /* Latin */ || c == '。' /* Chinese */); - } }); tvSignature.setTypeface(StyleHelper.getTypeface(compose_font, getContext())); diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java b/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java index 53f3f9de34..2afcaeef1c 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java @@ -75,7 +75,8 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc private SwitchCompat swSendPending; private Button btnSound; - private SwitchCompat swAutoSave; + private SwitchCompat swAutoSaveParagraph; + private SwitchCompat swAutoSaveDot; private Spinner spComposeFont; private SwitchCompat swSeparateReply; private SwitchCompat swExtendedReply; @@ -108,7 +109,8 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc "alt_re", "alt_fwd", "send_reminders", "send_chips", "send_delayed", "attach_new", "answer_action", "send_pending", "sound_sent", - "auto_save", "compose_font", "prefix_once", "prefix_count", "separate_reply", "extended_reply", "write_below", "quote_reply", "quote_limit", "resize_reply", + "auto_save_paragraph", "auto_save_dot", + "compose_font", "prefix_once", "prefix_count", "separate_reply", "extended_reply", "write_below", "quote_reply", "quote_limit", "resize_reply", "signature_location", "signature_new", "signature_reply", "signature_reply_once", "signature_forward", "discard_delete", "reply_move", "auto_link", "plain_only", "format_flowed", "usenet_signature", "remove_signatures", @@ -146,7 +148,8 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc swSendPending = view.findViewById(R.id.swSendPending); btnSound = view.findViewById(R.id.btnSound); - swAutoSave = view.findViewById(R.id.swAutoSave); + swAutoSaveParagraph = view.findViewById(R.id.swAutoSaveParagraph); + swAutoSaveDot = view.findViewById(R.id.swAutoSaveDot); spComposeFont = view.findViewById(R.id.spComposeFont); swSeparateReply = view.findViewById(R.id.swSeparateReply); swExtendedReply = view.findViewById(R.id.swExtendedReply); @@ -361,10 +364,17 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc } }); - swAutoSave.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + swAutoSaveParagraph.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { - prefs.edit().putBoolean("auto_save", checked).apply(); + prefs.edit().putBoolean("auto_save_paragraph", checked).apply(); + } + }); + + swAutoSaveDot.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { + prefs.edit().putBoolean("auto_save_dot", checked).apply(); } }); @@ -651,7 +661,8 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc swSendPending.setChecked(prefs.getBoolean("send_pending", true)); - swAutoSave.setChecked(prefs.getBoolean("auto_save", true)); + swAutoSaveParagraph.setChecked(prefs.getBoolean("auto_save_paragraph", true)); + swAutoSaveDot.setChecked(prefs.getBoolean("auto_save_dot", false)); String compose_font = prefs.getString("compose_font", ""); List fonts = StyleHelper.getFonts(getContext()); diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java index 3e5100caca..fb5ed4568b 100644 --- a/app/src/main/java/eu/faircode/email/Helper.java +++ b/app/src/main/java/eu/faircode/email/Helper.java @@ -1861,6 +1861,10 @@ public class Helper { }; } + static boolean isDot(char c) { + return (c == '.' /* Latin */ || c == '。' /* Chinese */); + } + // Files static String sanitizeFilename(String name) { diff --git a/app/src/main/res/layout/fragment_options_send.xml b/app/src/main/res/layout/fragment_options_send.xml index 51f6c2c283..5bde6468ab 100644 --- a/app/src/main/res/layout/fragment_options_send.xml +++ b/app/src/main/res/layout/fragment_options_send.xml @@ -461,17 +461,28 @@ app:layout_constraintTop_toTopOf="parent" /> + + + app:layout_constraintTop_toBottomOf="@id/swAutoSaveDot" /> Long pressing on the answer button will: Show non-obtrusive send delayed icon - Automatically save after new paragraphs + Automatically save after new paragraphs + Automatically save after entering dots Default font Automatically select identities for new messages Prefix subject only once on replying or forwarding