From 0f6b2b316ab82f1b996483583696a605eb691dfa Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 7 Nov 2019 08:56:54 +0100 Subject: [PATCH] Added extended reply header --- .../eu/faircode/email/FragmentCompose.java | 37 ++++++++++++++++--- .../faircode/email/FragmentOptionsSend.java | 12 +++++- .../main/res/layout/fragment_options_send.xml | 13 ++++++- app/src/main/res/values/strings.xml | 1 + 4 files changed, 56 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index fd6cf678eb..d8739e8c1d 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -2520,11 +2520,38 @@ public class FragmentCompose extends FragmentBase { if ("reply".equals(action) || "reply_all".equals(action)) refText = "
" + refText + "
"; - String refBody = String.format("

%s %s:

\n%s", - Html.escapeHtml(new Date(ref.received).toString()), - Html.escapeHtml(MessageHelper.formatAddresses(ref.from)), - refText); - Helper.writeText(data.draft.getRefFile(context), refBody); + // Build reply header + StringBuilder sb = new StringBuilder(); + boolean extended_reply = prefs.getBoolean("extended_reply", false); + if (extended_reply) { + sb.append("

"); + if (ref.from != null && ref.from.length > 0) + sb.append("").append(context.getString(R.string.title_from)).append(" ") + .append(Html.escapeHtml(MessageHelper.formatAddresses(ref.from))) + .append("
\n"); + if (ref.to != null && ref.to.length > 0) + sb.append("").append(context.getString(R.string.title_to)).append(" ") + .append(Html.escapeHtml(MessageHelper.formatAddresses(ref.to))). + append("
\n"); + if (ref.cc != null && ref.cc.length > 0) + sb.append("").append(context.getString(R.string.title_cc)).append(" ") + .append(Html.escapeHtml(MessageHelper.formatAddresses(ref.cc))) + .append("
\n"); + sb.append("").append(context.getString(R.string.title_received)).append(" ") + .append(Html.escapeHtml(new Date(ref.received).toString())) + .append("
\n"); + sb.append("").append(context.getString(R.string.title_subject)).append(" ") + .append(Html.escapeHtml(ref.subject == null ? "" : ref.subject)); + sb.append("

\n"); + } else { + sb.append("

"); + sb.append(Html.escapeHtml(new Date(ref.received).toString())).append(" "); + sb.append(Html.escapeHtml(MessageHelper.formatAddresses(ref.from))).append(":"); + sb.append("

\n"); + } + + sb.append(refText); + Helper.writeText(data.draft.getRefFile(context), sb.toString()); } if ("new".equals(action)) { diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java b/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java index 8bddabd14a..fab84725c1 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java @@ -48,6 +48,7 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc private SwitchCompat swSuggestReceived; private Button btnLocalContacts; private SwitchCompat swPrefixOnce; + private SwitchCompat swExtendedReply; private SwitchCompat swPlainOnly; private SwitchCompat swUsenetSignature; private SwitchCompat swAutoResize; @@ -59,7 +60,7 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc private Spinner spSendDelayed; private final static String[] RESET_OPTIONS = new String[]{ - "keyboard", "suggest_sent", "suggested_received", "prefix_once", "plain_only", "usenet_signature", + "keyboard", "suggest_sent", "suggested_received", "prefix_once", "extended_reply", "plain_only", "usenet_signature", "autoresize", "encrypt_default", "receipt_default", "resize", "lookup_mx", "send_delayed" }; @@ -78,6 +79,7 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc swSuggestReceived = view.findViewById(R.id.swSuggestReceived); btnLocalContacts = view.findViewById(R.id.btnLocalContacts); swPrefixOnce = view.findViewById(R.id.swPrefixOnce); + swExtendedReply = view.findViewById(R.id.swExtendedReply); swPlainOnly = view.findViewById(R.id.swPlainOnly); swUsenetSignature = view.findViewById(R.id.swUsenetSignature); swAutoResize = view.findViewById(R.id.swAutoResize); @@ -130,6 +132,13 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc } }); + swExtendedReply.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { + prefs.edit().putBoolean("extended_reply", checked).apply(); + } + }); + swPlainOnly.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { @@ -250,6 +259,7 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc swSuggestSent.setChecked(prefs.getBoolean("suggest_sent", false)); swSuggestReceived.setChecked(prefs.getBoolean("suggest_received", false)); swPrefixOnce.setChecked(prefs.getBoolean("prefix_once", true)); + swExtendedReply.setChecked(prefs.getBoolean("extended_reply", false)); swPlainOnly.setChecked(prefs.getBoolean("plain_only", false)); swUsenetSignature.setChecked(prefs.getBoolean("usenet_signature", false)); diff --git a/app/src/main/res/layout/fragment_options_send.xml b/app/src/main/res/layout/fragment_options_send.xml index 75484c5ead..db740d75a0 100644 --- a/app/src/main/res/layout/fragment_options_send.xml +++ b/app/src/main/res/layout/fragment_options_send.xml @@ -108,6 +108,17 @@ app:layout_constraintTop_toBottomOf="@id/btnLocalContacts" app:switchPadding="12dp" /> + + Suggest addresses found in sent messages Suggest addresses found in received messages Prefix subject only once on replying or forwarding + Use extended reply header Send plain text only by default Usenet signature convention Automatically resize attached and embedded images