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