From a3ed7f244eb1dedebb5379ed82404214174003fe Mon Sep 17 00:00:00 2001 From: M66B Date: Tue, 13 Sep 2022 08:31:45 +0200 Subject: [PATCH] Added $date$ placeholder --- .../java/eu/faircode/email/EntityAnswer.java | 27 +++++++++++++++++++ .../eu/faircode/email/FragmentAnswer.java | 3 +++ app/src/main/res/menu/menu_answer.xml | 3 +++ app/src/main/res/values/strings.xml | 1 + 4 files changed, 34 insertions(+) diff --git a/app/src/main/java/eu/faircode/email/EntityAnswer.java b/app/src/main/java/eu/faircode/email/EntityAnswer.java index 7a3a5b0d45..5e1f3f8c28 100644 --- a/app/src/main/java/eu/faircode/email/EntityAnswer.java +++ b/app/src/main/java/eu/faircode/email/EntityAnswer.java @@ -48,9 +48,12 @@ import org.json.JSONObject; import java.io.Serializable; import java.text.Collator; import java.text.NumberFormat; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Calendar; import java.util.Collections; import java.util.Comparator; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Locale; @@ -178,6 +181,30 @@ public class EntityAnswer implements Serializable { text = text.replace("$lastname$", last == null ? "" : Html.escapeHtml(last)); text = text.replace("$email$", email == null ? "" : Html.escapeHtml(email)); + int s = text.indexOf("$date"); + while (s >= 0) { + int e = text.indexOf('$', s + 5); + if (e < 0) + break; + + Calendar c = null; + String v = text.substring(s + 5, e); + if (v.startsWith("-") || v.startsWith("+")) { + Integer days = Helper.parseInt(v.substring(1)); + if (days != null) { + c = Calendar.getInstance(); + c.add(Calendar.DATE, days * (v.startsWith("-") ? -1 : 1)); + } + } else if (TextUtils.isEmpty(v)) + c = Calendar.getInstance(); + + if (c != null) { + v = Html.escapeHtml(SimpleDateFormat.getDateInstance(SimpleDateFormat.LONG).format(c.getTime())); + text = text.substring(0, s) + v + text.substring(e); + s = text.indexOf("$date", s + v.length()); + } + } + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); for (String key : prefs.getAll().keySet()) if (key.startsWith(PREF_PLACEHOLDER)) { diff --git a/app/src/main/java/eu/faircode/email/FragmentAnswer.java b/app/src/main/java/eu/faircode/email/FragmentAnswer.java index 2670aa8adb..f0b41ee17c 100644 --- a/app/src/main/java/eu/faircode/email/FragmentAnswer.java +++ b/app/src/main/java/eu/faircode/email/FragmentAnswer.java @@ -321,6 +321,9 @@ public class FragmentAnswer extends FragmentBase { } else if (itemId == R.id.menu_placeholder_lastname) { onMenuPlaceholder("$lastname$"); return true; + } else if (itemId == R.id.menu_placeholder_date) { + onMenuPlaceholder("$date$"); + return true; } } return super.onOptionsItemSelected(item); diff --git a/app/src/main/res/menu/menu_answer.xml b/app/src/main/res/menu/menu_answer.xml index e2e939728f..47c8b08396 100644 --- a/app/src/main/res/menu/menu_answer.xml +++ b/app/src/main/res/menu/menu_answer.xml @@ -22,6 +22,9 @@ + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index af5bcef8fa..51b0f2a37c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1682,6 +1682,7 @@ Sender\'s email address Sender\'s first name Sender\'s last name + Current date No action Mark read