From abaa194b6141108b2cab1269336a44c51af088ac Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 22 Aug 2021 09:11:44 +0200 Subject: [PATCH] Added inline switching of write above/below --- .../eu/faircode/email/FragmentCompose.java | 30 +++++++++++++++++++ app/src/main/res/drawable/abovebelow.xml | 9 ++++++ app/src/main/res/layout/fragment_compose.xml | 14 +++++++++ app/src/main/res/values/strings.xml | 1 + 4 files changed, 54 insertions(+) create mode 100644 app/src/main/res/drawable/abovebelow.xml 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