diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java
index c2b29af889..a1ed2cc67e 100644
--- a/app/src/main/java/eu/faircode/email/FragmentCompose.java
+++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java
@@ -3178,9 +3178,9 @@ public class FragmentCompose extends FragmentBase {
File file = data.draft.getFile(context);
Document doc = JsoupEx.parse(Helper.readText(file));
+ doc.select("div[fairemail=signature]").remove();
Elements ref = doc.select("div[fairemail=reference]");
ref.remove();
- doc.select("div[fairemail=signature]").remove();
File refFile = data.draft.getRefFile(context);
if (refFile.exists()) {
@@ -3190,13 +3190,19 @@ public class FragmentCompose extends FragmentBase {
Document document = HtmlHelper.sanitize(context, doc.html(), true, false);
+ EntityIdentity identity = null;
+ if (data.draft.identity != null)
+ identity = db.identity().getIdentity(data.draft.identity);
+ boolean signature_end = prefs.getBoolean("signature_end", false);
+
+ if (!signature_end && identity != null)
+ addSignature(context, document, data.draft, identity);
+
for (Element e : ref)
document.body().appendChild(e);
- if (data.draft.identity != null) {
- EntityIdentity identity = db.identity().getIdentity(data.draft.identity);
+ if (signature_end && identity != null)
addSignature(context, document, data.draft, identity);
- }
String html = JsoupEx.parse(document.html()).html();
Helper.writeText(file, html);
@@ -3579,26 +3585,41 @@ public class FragmentCompose extends FragmentBase {
(extras != null && extras.containsKey("html"))) {
dirty = true;
+ doc.select("div[fairemail=signature]").remove();
Elements ref = doc.select("div[fairemail=reference]");
ref.remove();
- doc.select("div[fairemail=signature]").remove();
+
+ boolean signature_end = prefs.getBoolean("signature_end", false);
// Get saved body
Document d;
if (extras != null && extras.containsKey("html")) {
// Save current revision
Document c = JsoupEx.parse(body);
+
+ if (!signature_end)
+ addSignature(context, c, draft, identity);
+
for (Element e : ref)
c.body().appendChild(e);
- addSignature(context, c, draft, identity);
+
+ if (signature_end)
+ addSignature(context, c, draft, identity);
+
Helper.writeText(draft.getFile(context, draft.revision), c.html());
d = JsoupEx.parse(extras.getString("html"));
} else {
d = JsoupEx.parse(body);
+
+ if (!signature_end)
+ addSignature(context, d, draft, identity);
+
for (Element e : ref)
d.body().appendChild(e);
- addSignature(context, d, draft, identity);
+
+ if (signature_end)
+ addSignature(context, d, draft, identity);
}
body = d.html();
@@ -3679,8 +3700,8 @@ public class FragmentCompose extends FragmentBase {
for (String text : Helper.getStrings(context, R.string.title_attachment_keywords))
keywords.addAll(Arrays.asList(text.split(",")));
- d.select("div[fairemail=reference]").remove();
d.select("div[fairemail=signature]").remove();
+ d.select("div[fairemail=reference]").remove();
String text = d.text();
for (String keyword : keywords)
@@ -3955,9 +3976,9 @@ public class FragmentCompose extends FragmentBase {
throw new IllegalArgumentException(context.getString(R.string.title_no_body));
Document doc = JsoupEx.parse(Helper.readText(draft.getFile(context)));
+ doc.select("div[fairemail=signature]").remove();
Elements ref = doc.select("div[fairemail=reference]");
ref.remove();
- doc.select("div[fairemail=signature]").remove();
Spanned spannedBody = HtmlHelper.fromHtml(doc.html(), new Html.ImageGetter() {
@Override
diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java b/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java
index 65dfbd7ea2..8e4eaaaaa9 100644
--- a/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java
+++ b/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java
@@ -50,6 +50,7 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc
private SwitchCompat swPrefixOnce;
private SwitchCompat swExtendedReply;
private SwitchCompat swQuoteReply;
+ private SwitchCompat swSignatureEnd;
private SwitchCompat swPlainOnly;
private SwitchCompat swUsenetSignature;
private SwitchCompat swResizeImages;
@@ -63,7 +64,7 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc
private final static String[] RESET_OPTIONS = new String[]{
"keyboard", "suggest_sent", "suggested_received",
- "prefix_once", "extended_reply", "quote_reply",
+ "prefix_once", "extended_reply", "quote_reply", "signature_end",
"plain_only", "usenet_signature",
"resize_images", "resize_attachments", "send_reminders", "receipt_default", "resize", "lookup_mx", "send_delayed"
};
@@ -85,6 +86,7 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc
swPrefixOnce = view.findViewById(R.id.swPrefixOnce);
swExtendedReply = view.findViewById(R.id.swExtendedReply);
swQuoteReply = view.findViewById(R.id.swQuoteReply);
+ swSignatureEnd = view.findViewById(R.id.swSignatureEnd);
swPlainOnly = view.findViewById(R.id.swPlainOnly);
swUsenetSignature = view.findViewById(R.id.swUsenetSignature);
swResizeImages = view.findViewById(R.id.swResizeImages);
@@ -152,6 +154,13 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc
}
});
+ swSignatureEnd.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
+ prefs.edit().putBoolean("signature_end", checked).apply();
+ }
+ });
+
swPlainOnly.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@@ -282,6 +291,7 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc
swPrefixOnce.setChecked(prefs.getBoolean("prefix_once", true));
swExtendedReply.setChecked(prefs.getBoolean("extended_reply", false));
swQuoteReply.setChecked(prefs.getBoolean("quote_reply", true));
+ swSignatureEnd.setChecked(prefs.getBoolean("signature_end", false));
swPlainOnly.setChecked(prefs.getBoolean("plain_only", false));
swUsenetSignature.setChecked(prefs.getBoolean("usenet_signature", false));
diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java
index 243368bb99..db1e0ba8dd 100644
--- a/app/src/main/java/eu/faircode/email/MessageHelper.java
+++ b/app/src/main/java/eu/faircode/email/MessageHelper.java
@@ -484,7 +484,7 @@ public class MessageHelper {
// When sending message
if (identity != null)
- document.select("div[fairemail=reference],div[fairemail=signature]").removeAttr("fairemail");
+ document.select("div[fairemail=signature],div[fairemail=reference]").removeAttr("fairemail");
// multipart/mixed
// multipart/related
diff --git a/app/src/main/res/layout/fragment_options_send.xml b/app/src/main/res/layout/fragment_options_send.xml
index c201e238a4..01ef03974b 100644
--- a/app/src/main/res/layout/fragment_options_send.xml
+++ b/app/src/main/res/layout/fragment_options_send.xml
@@ -119,6 +119,17 @@
app:layout_constraintTop_toBottomOf="@id/swExtendedReply"
app:switchPadding="12dp" />
+
+
Prefix subject only once on replying or forwarding
Use extended reply/forward header
Quote replied text
+ Add signature after quoted/forwarded message
Send plain text only by default
Usenet signature convention
Automatically resize embedded images