From d0b142dad944cfc8cd2ceac0e943c5681d973e0b Mon Sep 17 00:00:00 2001 From: Laurent Date: Wed, 12 Jun 2019 11:25:17 +0200 Subject: [PATCH] Fixes currency and such --- .../calculus/bankroll/BankrollCalculator.kt | 1 + .../calculus/bankroll/BankrollReport.kt | 5 ++ .../android/model/realm/Bankroll.kt | 9 +++ .../ui/fragment/BankrollDetailsFragment.kt | 81 +++++++++---------- .../android/ui/fragment/BankrollFragment.kt | 2 +- .../android/ui/view/RowViewType.kt | 2 +- 6 files changed, 56 insertions(+), 44 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollCalculator.kt b/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollCalculator.kt index 3f7b144a..63507abc 100644 --- a/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollCalculator.kt +++ b/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollCalculator.kt @@ -22,6 +22,7 @@ class BankrollCalculator { val bankrolls: List = if (setup.bankrollId != null) { val bankroll = realm.findById(setup.bankrollId) ?: throw PAIllegalStateException("Bankroll not found with id=${setup.bankrollId}") + report.currency = bankroll.utilCurrency listOf(bankroll) } else realm.where(Bankroll::class.java).findAll() diff --git a/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollReport.kt b/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollReport.kt index f3bbe059..e8a3c761 100644 --- a/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollReport.kt +++ b/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollReport.kt @@ -21,6 +21,11 @@ import kotlin.collections.HashMap */ class BankrollReport(var setup: BankrollReportSetup) { + /** + * The java.util.Currency + */ + var currency: Currency? = null + /** * The value of the bankroll */ diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt index 8f5574a2..9c1c4f08 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt @@ -14,6 +14,7 @@ import net.pokeranalytics.android.model.interfaces.SaveValidityStatus import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.rowrepresentable.BankrollRow import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow +import net.pokeranalytics.android.util.UserDefaults import java.util.* open class Bankroll : RealmObject(), NameManageable, RowRepresentable { @@ -118,4 +119,12 @@ open class Bankroll : RealmObject(), NameManageable, RowRepresentable { } + val utilCurrency: java.util.Currency + get() { + this.currency?.code?.let { + return java.util.Currency.getInstance(it) + } + return UserDefaults.currency + } + } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollDetailsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollDetailsFragment.kt index 533b8c7b..88e393ce 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollDetailsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollDetailsFragment.kt @@ -56,6 +56,7 @@ class BankrollDetailsFragment : RealmFragment(), StaticRowRepresentableDataSourc super.onViewCreated(view, savedInstanceState) initData() initUI() + updateUI() } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { @@ -65,17 +66,17 @@ class BankrollDetailsFragment : RealmFragment(), StaticRowRepresentableDataSourc activity?.setResult(RESULT_OK, data) activity?.finish() } else { - BankrollReportManager.reportForBankroll(this.bankrollId) { - updateUI(it) - } + updateUI() } } } - private fun updateUI(bankrollReport: BankrollReport) { - this.initRows(bankrollReport) - this.updateMenuUI() - this.bankrollAdapter.notifyDataSetChanged() + override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) { + menu?.clear() + inflater?.inflate(R.menu.toolbar_comparison_chart, menu) // TODO R.menu.toolbar_comparison_chart? + this.bankrollDetailsMenu = menu + updateMenuUI() + super.onCreateOptionsMenu(menu, inflater) } /** @@ -87,10 +88,33 @@ class BankrollDetailsFragment : RealmFragment(), StaticRowRepresentableDataSourc this.bankroll = getRealm().findById(id) ?: throw PAIllegalStateException("Bankroll not found, id=$id") } - BankrollReportManager.reportForBankroll(this.bankrollId) { - updateUI(it) + } + + /** + * Init UI + */ + private fun initUI() { + + setDisplayHomeAsUpEnabled(true) + this.updateMenuUI() + + bankrollAdapter = RowRepresentableAdapter(this, this) + + val viewManager = LinearLayoutManager(requireContext()) + + recyclerView.apply { + setHasFixedSize(true) + layoutManager = viewManager + adapter = bankrollAdapter } + } + private fun updateUI() { + this.updateMenuUI() + BankrollReportManager.reportForBankroll(this.bankrollId) { bankrollReport -> + this.initRows(bankrollReport) + this.bankrollAdapter.notifyDataSetChanged() + } } private fun initRows(bankrollReport: BankrollReport) { @@ -99,9 +123,10 @@ class BankrollDetailsFragment : RealmFragment(), StaticRowRepresentableDataSourc rows.add(CustomizableRowRepresentable(RowViewType.HEADER_TITLE, resId = R.string.global)) - val totalComputedStat = ComputedStat(Stat.NET_RESULT, bankrollReport.total) - val netComputedStat = ComputedStat(Stat.NET_RESULT, bankrollReport.netResult) - val netBankedComputedStat = ComputedStat(Stat.NET_RESULT, bankrollReport.netBanked) + val currency = this.bankroll.utilCurrency + val totalComputedStat = ComputedStat(Stat.NET_RESULT, bankrollReport.total, currency = currency) + val netComputedStat = ComputedStat(Stat.NET_RESULT, bankrollReport.netResult, currency = currency) + val netBankedComputedStat = ComputedStat(Stat.NET_RESULT, bankrollReport.netBanked, currency = currency) rows.add( CustomizableRowRepresentable( @@ -130,7 +155,7 @@ class BankrollDetailsFragment : RealmFragment(), StaticRowRepresentableDataSourc bankrollReport.transactionBuckets.keys.forEach { key -> bankrollReport.transactionBuckets[key]?.let { transactionBucket -> val typeName = transactionBucket.name - val computedStat = ComputedStat(Stat.NET_RESULT, transactionBucket.total) + val computedStat = ComputedStat(Stat.NET_RESULT, transactionBucket.total, currency = currency) rows.add( CustomizableRowRepresentable( RowViewType.TITLE_VALUE, @@ -144,25 +169,6 @@ class BankrollDetailsFragment : RealmFragment(), StaticRowRepresentableDataSourc } - /** - * Init UI - */ - private fun initUI() { - - setDisplayHomeAsUpEnabled(true) - this.updateMenuUI() - - bankrollAdapter = RowRepresentableAdapter(this, this) - - val viewManager = LinearLayoutManager(requireContext()) - - recyclerView.apply { - setHasFixedSize(true) - layoutManager = viewManager - adapter = bankrollAdapter - } - } - /** * Update menu UI */ @@ -175,7 +181,6 @@ class BankrollDetailsFragment : RealmFragment(), StaticRowRepresentableDataSourc setToolbarTitle(this.bankroll.name) bankrollDetailsMenu?.findItem(R.id.settings)?.isVisible = true } - } // StaticRowRepresentableDataSource @@ -190,16 +195,8 @@ class BankrollDetailsFragment : RealmFragment(), StaticRowRepresentableDataSourc } - override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) { - menu?.clear() - inflater?.inflate(R.menu.toolbar_comparison_chart, menu) - this.bankrollDetailsMenu = menu - updateMenuUI() - super.onCreateOptionsMenu(menu, inflater) - } - override fun onOptionsItemSelected(item: MenuItem?): Boolean { - when (item!!.itemId) { + when (item?.itemId) { R.id.settings -> editBankroll() } return true diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollFragment.kt index 6cb4fb42..47cc09fc 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollFragment.kt @@ -101,7 +101,7 @@ class BankrollFragment : DeletableItemFragment(), StaticRowRepresentableDataSour //TODO: Refresh bankrolls initData() } else { - dataListAdapter.notifyDataSetChanged() + initData() } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt index 9a453d39..d5044187 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt @@ -151,7 +151,7 @@ enum class RowViewType(private var layoutRes: Int) { itemView.findViewById(R.id.title)?.let { it.text = row.localizedTitle(itemView.context) } - val computedStat = ComputedStat(Stat.NET_RESULT, report.total) + val computedStat = ComputedStat(Stat.NET_RESULT, report.total, currency = report.currency) itemView.findViewById(R.id.value)?.setTextFormat(computedStat.format(), itemView.context) }