Fixes currency and such

csv
Laurent 7 years ago
parent f327eab7ba
commit d0b142dad9
  1. 1
      app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollCalculator.kt
  2. 5
      app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollReport.kt
  3. 9
      app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt
  4. 81
      app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollDetailsFragment.kt
  5. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollFragment.kt
  6. 2
      app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt

@ -22,6 +22,7 @@ class BankrollCalculator {
val bankrolls: List<Bankroll> = val bankrolls: List<Bankroll> =
if (setup.bankrollId != null) { if (setup.bankrollId != null) {
val bankroll = realm.findById<Bankroll>(setup.bankrollId) ?: throw PAIllegalStateException("Bankroll not found with id=${setup.bankrollId}") val bankroll = realm.findById<Bankroll>(setup.bankrollId) ?: throw PAIllegalStateException("Bankroll not found with id=${setup.bankrollId}")
report.currency = bankroll.utilCurrency
listOf(bankroll) listOf(bankroll)
} }
else realm.where(Bankroll::class.java).findAll() else realm.where(Bankroll::class.java).findAll()

@ -21,6 +21,11 @@ import kotlin.collections.HashMap
*/ */
class BankrollReport(var setup: BankrollReportSetup) { class BankrollReport(var setup: BankrollReportSetup) {
/**
* The java.util.Currency
*/
var currency: Currency? = null
/** /**
* The value of the bankroll * The value of the bankroll
*/ */

@ -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
import net.pokeranalytics.android.ui.view.rowrepresentable.BankrollRow import net.pokeranalytics.android.ui.view.rowrepresentable.BankrollRow
import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow
import net.pokeranalytics.android.util.UserDefaults
import java.util.* import java.util.*
open class Bankroll : RealmObject(), NameManageable, RowRepresentable { 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
}
} }

@ -56,6 +56,7 @@ class BankrollDetailsFragment : RealmFragment(), StaticRowRepresentableDataSourc
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
initData() initData()
initUI() initUI()
updateUI()
} }
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
@ -65,17 +66,17 @@ class BankrollDetailsFragment : RealmFragment(), StaticRowRepresentableDataSourc
activity?.setResult(RESULT_OK, data) activity?.setResult(RESULT_OK, data)
activity?.finish() activity?.finish()
} else { } else {
BankrollReportManager.reportForBankroll(this.bankrollId) { updateUI()
updateUI(it)
}
} }
} }
} }
private fun updateUI(bankrollReport: BankrollReport) { override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
this.initRows(bankrollReport) menu?.clear()
this.updateMenuUI() inflater?.inflate(R.menu.toolbar_comparison_chart, menu) // TODO R.menu.toolbar_comparison_chart?
this.bankrollAdapter.notifyDataSetChanged() 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") 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) { private fun initRows(bankrollReport: BankrollReport) {
@ -99,9 +123,10 @@ class BankrollDetailsFragment : RealmFragment(), StaticRowRepresentableDataSourc
rows.add(CustomizableRowRepresentable(RowViewType.HEADER_TITLE, resId = R.string.global)) rows.add(CustomizableRowRepresentable(RowViewType.HEADER_TITLE, resId = R.string.global))
val totalComputedStat = ComputedStat(Stat.NET_RESULT, bankrollReport.total) val currency = this.bankroll.utilCurrency
val netComputedStat = ComputedStat(Stat.NET_RESULT, bankrollReport.netResult) val totalComputedStat = ComputedStat(Stat.NET_RESULT, bankrollReport.total, currency = currency)
val netBankedComputedStat = ComputedStat(Stat.NET_RESULT, bankrollReport.netBanked) val netComputedStat = ComputedStat(Stat.NET_RESULT, bankrollReport.netResult, currency = currency)
val netBankedComputedStat = ComputedStat(Stat.NET_RESULT, bankrollReport.netBanked, currency = currency)
rows.add( rows.add(
CustomizableRowRepresentable( CustomizableRowRepresentable(
@ -130,7 +155,7 @@ class BankrollDetailsFragment : RealmFragment(), StaticRowRepresentableDataSourc
bankrollReport.transactionBuckets.keys.forEach { key -> bankrollReport.transactionBuckets.keys.forEach { key ->
bankrollReport.transactionBuckets[key]?.let { transactionBucket -> bankrollReport.transactionBuckets[key]?.let { transactionBucket ->
val typeName = transactionBucket.name val typeName = transactionBucket.name
val computedStat = ComputedStat(Stat.NET_RESULT, transactionBucket.total) val computedStat = ComputedStat(Stat.NET_RESULT, transactionBucket.total, currency = currency)
rows.add( rows.add(
CustomizableRowRepresentable( CustomizableRowRepresentable(
RowViewType.TITLE_VALUE, 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 * Update menu UI
*/ */
@ -175,7 +181,6 @@ class BankrollDetailsFragment : RealmFragment(), StaticRowRepresentableDataSourc
setToolbarTitle(this.bankroll.name) setToolbarTitle(this.bankroll.name)
bankrollDetailsMenu?.findItem(R.id.settings)?.isVisible = true bankrollDetailsMenu?.findItem(R.id.settings)?.isVisible = true
} }
} }
// StaticRowRepresentableDataSource // 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 { override fun onOptionsItemSelected(item: MenuItem?): Boolean {
when (item!!.itemId) { when (item?.itemId) {
R.id.settings -> editBankroll() R.id.settings -> editBankroll()
} }
return true return true

@ -101,7 +101,7 @@ class BankrollFragment : DeletableItemFragment(), StaticRowRepresentableDataSour
//TODO: Refresh bankrolls //TODO: Refresh bankrolls
initData() initData()
} else { } else {
dataListAdapter.notifyDataSetChanged() initData()
} }
} }

@ -151,7 +151,7 @@ enum class RowViewType(private var layoutRes: Int) {
itemView.findViewById<AppCompatTextView>(R.id.title)?.let { itemView.findViewById<AppCompatTextView>(R.id.title)?.let {
it.text = row.localizedTitle(itemView.context) 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<AppCompatTextView?>(R.id.value)?.setTextFormat(computedStat.format(), itemView.context) itemView.findViewById<AppCompatTextView?>(R.id.value)?.setTextFormat(computedStat.format(), itemView.context)
} }

Loading…
Cancel
Save