From a9585547e9b5741a22c671eac3813cef1d3b0705 Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 14 Oct 2021 19:53:53 +0200 Subject: [PATCH] Let's talk like a Roman --- CHANGELOG.md | 2 +- app/src/main/assets/CHANGELOG.md | 2 +- .../main/java/eu/faircode/email/Helper.java | 14 ++++++++++++++ .../java/eu/faircode/email/NumberSpan.java | 19 ++++++++++++++----- metadata/en-US/changelogs/1763.txt | 2 +- 5 files changed, 31 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ed6316dded..3789fbf508 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ ### Next version -* Added support for alphabetical lists (view only) +* Added support for latin and roman numbered lists (view only) * Report new messages in same thread when composing a new message * Use account categories for identities * Small improvements and minor bug fixes diff --git a/app/src/main/assets/CHANGELOG.md b/app/src/main/assets/CHANGELOG.md index ed6316dded..3789fbf508 100644 --- a/app/src/main/assets/CHANGELOG.md +++ b/app/src/main/assets/CHANGELOG.md @@ -6,7 +6,7 @@ ### Next version -* Added support for alphabetical lists (view only) +* Added support for latin and roman numbered lists (view only) * Report new messages in same thread when composing a new message * Use account categories for identities * Small improvements and minor bug fixes diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java index d1aacdbada..689dce3c8d 100644 --- a/app/src/main/java/eu/faircode/email/Helper.java +++ b/app/src/main/java/eu/faircode/email/Helper.java @@ -174,6 +174,11 @@ public class Helper { // https://developer.android.com/distribute/marketing-tools/linking-to-google-play#PerformingSearch private static final String PLAY_STORE_SEARCH = "https://play.google.com/store/search"; + private static final String[] ROMAN_1000 = {"", "M", "MM", "MMM"}; + private static final String[] ROMAN_100 = {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"}; + private static final String[] ROMAN_10 = {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"}; + private static final String[] ROMAN_1 = {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"}; + static final Pattern EMAIL_ADDRESS = Pattern.compile( "[\\S]{1,256}" + @@ -1526,6 +1531,15 @@ public class Helper { } } + public static String toRoman(int value) { + if (value < 0 || value >= 4000) + return Integer.toString(value); + return ROMAN_1000[value / 1000] + + ROMAN_100[(value % 1000) / 100] + + ROMAN_10[(value % 100) / 10] + + ROMAN_1[value % 10]; + } + // Files static String sanitizeFilename(String name) { diff --git a/app/src/main/java/eu/faircode/email/NumberSpan.java b/app/src/main/java/eu/faircode/email/NumberSpan.java index 7fd1576178..c761439179 100644 --- a/app/src/main/java/eu/faircode/email/NumberSpan.java +++ b/app/src/main/java/eu/faircode/email/NumberSpan.java @@ -45,7 +45,8 @@ public class NumberSpan extends BulletSpan { private static final List SUPPORTED_TYPES = Collections.unmodifiableList(Arrays.asList( "lower-alpha", "lower-latin", - "upper-alpha", "upper-latin" + "upper-alpha", "upper-latin", + "lower-roman", "upper-roman" )); // https://developer.mozilla.org/en-US/docs/Web/CSS/list-style-type @@ -76,19 +77,27 @@ public class NumberSpan extends BulletSpan { if (TextUtils.isEmpty(type)) number = index + "."; - else + else { switch (type) { case "lower-alpha": case "lower-latin": - number = ((char) ((int) 'a' + index)) + "."; + number = Character.toString((char) ((int) 'a' + index)); break; case "upper-alpha": case "upper-latin": - number = ((char) ((int) 'A' + index)) + "."; + number = Character.toString((char) ((int) 'A' + index)); + break; + case "lower-roman": + number = Helper.toRoman(index).toLowerCase(Locale.ROOT); + break; + case "upper-roman": + number = Helper.toRoman(index); break; default: - number = index + "."; + number = Integer.toString(index); } + number += '.'; + } numberWidth = Math.round(tp.measureText(number)); margin = numberWidth + gapWidth; diff --git a/metadata/en-US/changelogs/1763.txt b/metadata/en-US/changelogs/1763.txt index ed6316dded..3789fbf508 100644 --- a/metadata/en-US/changelogs/1763.txt +++ b/metadata/en-US/changelogs/1763.txt @@ -6,7 +6,7 @@ ### Next version -* Added support for alphabetical lists (view only) +* Added support for latin and roman numbered lists (view only) * Report new messages in same thread when composing a new message * Use account categories for identities * Small improvements and minor bug fixes