diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CurrenciesFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CurrenciesFragment.kt index 9665c990..f374ad6f 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CurrenciesFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CurrenciesFragment.kt @@ -19,8 +19,8 @@ import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.ui.view.rowrepresentable.HeaderRowRepresentable +import net.pokeranalytics.android.util.Preferences import java.util.* -import java.util.prefs.Preferences class CurrenciesFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource, RowRepresentableDelegate { @@ -85,6 +85,7 @@ class CurrenciesFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataS // RowRepresentableDelegate override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { + Preferences.setCurrencyCode((row as CurrencyRow).currency.currencyCode, this.context!!) } private fun initData() { @@ -98,7 +99,7 @@ class CurrenciesFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataS val activity = activity as PokerAnalyticsActivity // Avoid a bug during setting the title - toolbar.title = activity.baseContext.getString( R.string.currency) + toolbar.title = this.getString( R.string.currency) activity.setSupportActionBar(toolbar) activity.supportActionBar?.setDisplayHomeAsUpEnabled(true) diff --git a/app/src/main/java/net/pokeranalytics/android/util/FormatUtils.kt b/app/src/main/java/net/pokeranalytics/android/util/FormatUtils.kt index 69620ad8..9c9b27ad 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/FormatUtils.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/FormatUtils.kt @@ -2,13 +2,14 @@ package net.pokeranalytics.android.util import android.content.Context import java.text.NumberFormat +import java.util.* class FormatUtils { companion object { fun getCurrencyFormatter(context: Context) : NumberFormat { - var formatter = NumberFormat.getCurrencyInstance(Preferences.getCurrencyLocale(context)) + val formatter = NumberFormat.getCurrencyInstance(Preferences.getCurrencyLocale(context)) formatter.minimumFractionDigits = 0 formatter.maximumFractionDigits = 2 return formatter diff --git a/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt b/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt index f62d4674..d87d9cdf 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt @@ -7,47 +7,55 @@ import java.util.* class Preferences { enum class Keys(var identifier: String) { - CURRENCY_LANGUAGE("CurrencyLanguage") + CURRENCY_CODE("CurrencyCode") } companion object { + var currencyLocale : Locale? = null + fun setString(key: Keys, value: String, context: Context) { - var preferences = PreferenceManager.getDefaultSharedPreferences(context) - var editor = preferences.edit() + val preferences = PreferenceManager.getDefaultSharedPreferences(context) + val editor = preferences.edit() editor.putString(key.identifier, value) editor.commit() } fun getString(key: Keys, context: Context) : String? { - var preferences = PreferenceManager.getDefaultSharedPreferences(context) + val preferences = PreferenceManager.getDefaultSharedPreferences(context) return preferences.getString(key.identifier, null) } - fun setCurrencyLanguage(language: String, context: Context) { - Preferences.setString(Keys.CURRENCY_LANGUAGE, language, context) + fun setCurrencyCode(currencyCode: String, context: Context) { + Preferences.setString(Keys.CURRENCY_CODE, currencyCode, context) + currencyLocale = null } - fun getCurrencyLocale(context : Context) : Locale { + private fun getCurrencyCode(context: Context) : String? { + return Preferences.getString(Keys.CURRENCY_CODE, context) + } - /* + fun getCurrencyLocale(context : Context) : Locale { - java.util.Currency usd = java.util.Currency.getInstance("USD"); - java.text.NumberFormat format = java.text.NumberFormat.getCurrencyInstance( - java.util.Locale.JAPAN); - format.setCurrency(usd); - System.out.println(format.format(23.23)); - format.setMaximumFractionDigits(usd.getDefaultFractionDigits()); - System.out.println(format.format(23.23)); + currencyLocale?. let { + return it + } - */ - val currencyLanguage = Preferences.getString(Keys.CURRENCY_LANGUAGE, context) - if (currencyLanguage != null) { - return Locale(currencyLanguage) + Preferences.getCurrencyCode(context)?.let { currencyCode -> + Locale.getAvailableLocales().filter{ + try { + Currency.getInstance(it).currencyCode == currencyCode + } catch (e: Exception) { + false + } + }.first().let { + currencyLocale = it + return it + } } - return Locale.getDefault() + currencyLocale = Locale.getDefault() + return currencyLocale!! } - } } \ No newline at end of file