diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java
index e369d421ee..de0daba8af 100644
--- a/app/src/main/java/eu/faircode/email/FragmentCompose.java
+++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java
@@ -252,6 +252,7 @@ public class FragmentCompose extends FragmentBase {
private ImageButton ibSignature;
private TextView tvReference;
private ImageButton ibCloseRefHint;
+ private ImageButton ibWriteAboveBelow;
private ImageButton ibReferenceEdit;
private ImageButton ibReferenceImages;
private View vwAnchor;
@@ -370,6 +371,7 @@ public class FragmentCompose extends FragmentBase {
ibSignature = view.findViewById(R.id.ibSignature);
tvReference = view.findViewById(R.id.tvReference);
ibCloseRefHint = view.findViewById(R.id.ibCloseRefHint);
+ ibWriteAboveBelow = view.findViewById(R.id.ibWriteAboveBelow);
ibReferenceEdit = view.findViewById(R.id.ibReferenceEdit);
ibReferenceImages = view.findViewById(R.id.ibReferenceImages);
vwAnchor = view.findViewById(R.id.vwAnchor);
@@ -767,6 +769,21 @@ public class FragmentCompose extends FragmentBase {
}
});
+ ibWriteAboveBelow.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(v.getContext());
+ boolean write_below = !prefs.getBoolean("write_below", false);
+ prefs.edit().putBoolean("write_below", write_below).apply();
+ ibWriteAboveBelow.setImageLevel(write_below ? 1 : 0);
+ ToastEx.makeText(v.getContext(),
+ write_below
+ ? R.string.title_advanced_write_below
+ : R.string.title_advanced_write_above,
+ Toast.LENGTH_LONG).show();
+ }
+ });
+
ibReferenceEdit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -904,6 +921,7 @@ public class FragmentCompose extends FragmentBase {
grpBody.setVisibility(View.GONE);
grpSignature.setVisibility(View.GONE);
grpReferenceHint.setVisibility(View.GONE);
+ ibWriteAboveBelow.setVisibility(View.GONE);
ibReferenceEdit.setVisibility(View.GONE);
ibReferenceImages.setVisibility(View.GONE);
tvReference.setVisibility(View.GONE);
@@ -5235,6 +5253,8 @@ public class FragmentCompose extends FragmentBase {
}
Document doc = JsoupEx.parse(draft.getFile(context));
+ Element first = (doc.body().childrenSize() == 0 ? null : doc.body().child(0));
+ boolean below = (first != null && first.attr("fairemail").equals("reference"));
doc.select("div[fairemail=signature]").remove();
Elements ref = doc.select("div[fairemail=reference]");
ref.remove();
@@ -5242,6 +5262,11 @@ public class FragmentCompose extends FragmentBase {
if (extras != null && extras.containsKey("html"))
dirty = true;
+ if (below != write_below &&
+ doc.body().childrenSize() > 0 &&
+ draft.wasforwardedfrom == null)
+ dirty = true;
+
if (!dirty)
if (loaded == null) {
Document b = JsoupEx.parse(body); // Is-dirty
@@ -6022,10 +6047,15 @@ public class FragmentCompose extends FragmentBase {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
boolean ref_hint = prefs.getBoolean("compose_reference", true);
+ boolean write_below = prefs.getBoolean("write_below", false);
tvReference.setText(text[1]);
tvReference.setVisibility(text[1] == null ? View.GONE : View.VISIBLE);
grpReferenceHint.setVisibility(text[1] == null || !ref_hint ? View.GONE : View.VISIBLE);
+ ibWriteAboveBelow.setImageLevel(write_below ? 1 : 0);
+ ibWriteAboveBelow.setVisibility(text[1] == null ||
+ draft.wasforwardedfrom != null || BuildConfig.PLAY_STORE_RELEASE
+ ? View.GONE : View.VISIBLE);
ibReferenceEdit.setVisibility(text[1] == null ? View.GONE : View.VISIBLE);
ibReferenceImages.setVisibility(ref_has_images && !show_images ? View.VISIBLE : View.GONE);
diff --git a/app/src/main/res/drawable/abovebelow.xml b/app/src/main/res/drawable/abovebelow.xml
new file mode 100644
index 0000000000..7178809220
--- /dev/null
+++ b/app/src/main/res/drawable/abovebelow.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_compose.xml b/app/src/main/res/layout/fragment_compose.xml
index e51525e569..8df3311b97 100644
--- a/app/src/main/res/layout/fragment_compose.xml
+++ b/app/src/main/res/layout/fragment_compose.xml
@@ -406,6 +406,20 @@
app:layout_constraintStart_toEndOf="@id/ibCloseRefHint"
app:layout_constraintTop_toBottomOf="@id/vSeparatorSignature" />
+
+
Prefix subject only once on replying or forwarding
Insert a horizontal line before a reply/forward header
Use extended reply/forward header
+ Write above the sender\'s text
Write below the sender\'s text
Quote replied text
Limit the number of nested quotes