- public synchronized static void scheduleTransactionListRetrieval(MainActivity activity) {
- if (retrieveTransactionsTask != null) {
- Logger.debug("db", "Ignoring request for transaction retrieval - already active");
- return;
+ public static void refreshCurrencyData(Locale locale) {
+ NumberFormat formatter = NumberFormat.getCurrencyInstance(locale);
+ java.util.Currency currency = formatter.getCurrency();
+ String symbol = currency != null ? currency.getSymbol() : "";
+ Logger.debug("locale", String.format(
+ "Discovering currency symbol position for locale %s (currency is %s; symbol is %s)",
+ locale.toString(), currency != null ? currency.toString() : "<none>", symbol));
+ String formatted = formatter.format(1234.56f);
+ Logger.debug("locale", String.format("1234.56 formats as '%s'", formatted));
+
+ if (formatted.startsWith(symbol)) {
+ currencySymbolPosition.setValue(Currency.Position.before);
+
+ // is the currency symbol directly followed by the first formatted digit?
+ final char canary = formatted.charAt(symbol.length());
+ currencyGap.setValue(canary != '1');