diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 83fac011..312c9703 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -30,6 +30,7 @@ android:windowSoftInputMode="adjustNothing" /> + + CurrencyRow( + this.systemCurrencies.filter { + it.currencyCode == code + }.first() + ) + } + + private val availableCurrencies = this.systemCurrencies.filter { + !mostUsedCurrencyCodes.contains(it.currencyCode) + }.sortedBy { + it.displayName + }.map { + CurrencyRow(it) + } + + private class CurrencyRow(var currency:Currency) : RowRepresentable { + + override fun localizedTitle(context: Context): String { + return currency.getDisplayName(Locale.getDefault()) + } + + fun value(): String { + return "${currency.currencyCode} (${currency.getSymbol(Locale.getDefault())})" + } + + override val viewType: Int = RowViewType.TITLE_VALUE.ordinal + } + + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + return inflater.inflate(R.layout.fragment_currencies, container, false) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + initData() + initUI() + } + + + // StaticRowRepresentableDataSource + + override fun adapterRows(): List? { + val rows = ArrayList() + rows.addAll(mostUsedCurrencies) + rows.add(HeaderRowRepresentable(customViewType = RowViewType.HEADER_SESSION, resId = R.string.currency)) + rows.addAll(availableCurrencies) + return rows + + } + + override fun stringForRow(row: RowRepresentable): String { + return (row as CurrencyRow).value() + } + + // RowRepresentableDelegate + override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { + } + + private fun initData() { + } + + /** + * Init UI + */ + private fun initUI() { + + val activity = activity as PokerAnalyticsActivity + + // Avoid a bug during setting the title + toolbar.title = activity.baseContext.getString( R.string.currency) + + activity.setSupportActionBar(toolbar) + activity.supportActionBar?.setDisplayHomeAsUpEnabled(true) + setHasOptionsMenu(true) + + val viewManager = LinearLayoutManager(requireContext()) + val dataListAdapter = RowRepresentableAdapter(this, this) + + recyclerView.apply { + setHasFixedSize(true) + layoutManager = viewManager + adapter = dataListAdapter + } + } +} \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt index 5341c686..a82357bd 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt @@ -8,7 +8,7 @@ import android.widget.Toast import androidx.recyclerview.widget.LinearLayoutManager import kotlinx.android.synthetic.main.fragment_settings.* import net.pokeranalytics.android.BuildConfig -import net.pokeranalytics.android.R +import net.pokeranalytics.android.ui.activity.CurrenciesActivity import net.pokeranalytics.android.ui.activity.DataListActivity import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter @@ -18,6 +18,9 @@ import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.rowrepresentable.SettingRow import net.pokeranalytics.android.util.* +import android.content.Intent + + class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, StaticRowRepresentableDataSource { @@ -47,7 +50,7 @@ class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Sta override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - return inflater.inflate(R.layout.fragment_settings, container, false) + return inflater.inflate(net.pokeranalytics.android.R.layout.fragment_settings, container, false) } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { @@ -67,7 +70,9 @@ class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Sta SettingRow.RATE_APP -> parentActivity.openPlayStorePage() SettingRow.CONTACT_US -> parentActivity.openContactMail() SettingRow.BUG_REPORT -> Toast.makeText(requireContext(), "Bug report", Toast.LENGTH_SHORT).show() - SettingRow.CURRENCY -> Toast.makeText(requireContext(), "Currency", Toast.LENGTH_SHORT).show() + SettingRow.CURRENCY -> { + CurrenciesActivity.newInstance(requireContext()) + } SettingRow.PRIVACY_POLICY -> parentActivity.openUrl(URL_PRIVACY_POLICY) SettingRow.TERMS_OF_USE -> parentActivity.openUrl(URL_TERMS) SettingRow.GDPR -> Toast.makeText(requireContext(), "Show GDPR", Toast.LENGTH_SHORT).show() 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 a283f7dc..f6eb8f1c 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt @@ -29,6 +29,18 @@ class Preferences { } 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)); + + */ val currencyLanguage = Preferences.getString(Keys.CURRENCY_LANGUAGE, context) if (currencyLanguage != null) { return Locale(currencyLanguage) diff --git a/app/src/main/res/layout/activity_currencies.xml b/app/src/main/res/layout/activity_currencies.xml new file mode 100644 index 00000000..72f6fd70 --- /dev/null +++ b/app/src/main/res/layout/activity_currencies.xml @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_currencies.xml b/app/src/main/res/layout/fragment_currencies.xml new file mode 100644 index 00000000..bab049a9 --- /dev/null +++ b/app/src/main/res/layout/fragment_currencies.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file