From e980e7f7a49d2f5fcd42b30dc78b5c37f9b0a49b Mon Sep 17 00:00:00 2001 From: Damyan Ivanov Date: Thu, 20 Feb 2020 19:37:45 +0200 Subject: [PATCH] detect and store whether currency is right next to the value or there is a gap --- .../java/net/ktnx/mobileledger/model/Data.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/net/ktnx/mobileledger/model/Data.java b/app/src/main/java/net/ktnx/mobileledger/model/Data.java index 0a2efe9f..b79ed766 100644 --- a/app/src/main/java/net/ktnx/mobileledger/model/Data.java +++ b/app/src/main/java/net/ktnx/mobileledger/model/Data.java @@ -54,6 +54,7 @@ public final class Data { public static MutableLiveData accountFilter = new MutableLiveData<>(); public static MutableLiveData currencySymbolPosition = new MutableLiveData<>(); + public static MutableLiveData currencyGap = new MutableLiveData<>(true); private static AtomicInteger backgroundTaskCount = new AtomicInteger(0); private static Locker profilesLocker = new Locker(); private static RetrieveTransactionsTask retrieveTransactionsTask; @@ -171,10 +172,21 @@ public final class Data { locale.toString(), currency.toString(), symbol)); String formatted = formatter.format(1234.56f); Logger.debug("locale", String.format("1234.56 formats as '%s'", formatted)); - if (formatted.startsWith(symbol)) + + if (formatted.startsWith(symbol)) { currencySymbolPosition.setValue(Currency.Position.before); - else if (formatted.endsWith(symbol)) + + // is the currency symbol directly followed by the first formatted digit? + final char canary = formatted.charAt(symbol.length()); + currencyGap.setValue(canary != '1'); + } + else if (formatted.endsWith(symbol)) { currencySymbolPosition.setValue(Currency.Position.after); + + // is the currency symbol directly preceded bu the last formatted digit? + final char canary = formatted.charAt(formatted.length() - symbol.length() - 1); + currencyGap.setValue(canary != '6'); + } else currencySymbolPosition.setValue(Currency.Position.none); } -- 2.39.2