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 9bb7d6f7..61480660 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 @@ -83,6 +83,16 @@ open class Bankroll(name: String = "") : RealmObject(), Manageable, StaticRowRep BankrollRow.LIVE -> { this.live = if (value is Boolean) !value else false } + BankrollRow.CURRENCY -> { + val localCurrency = if (currency != null) currency as Currency else realm.createObject(Currency::class.java) + localCurrency.code = value as String? + this.currency = localCurrency + } + BankrollRow.RATE -> { + val localCurrency = if (currency != null) currency as Currency else realm.createObject(Currency::class.java) + localCurrency.rate = (value as String? ?: "0").toDouble() + this.currency = localCurrency + } } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollDataFragment.kt index edc9a40f..fde60f57 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollDataFragment.kt @@ -1,10 +1,13 @@ package net.pokeranalytics.android.ui.fragment +import android.app.Activity.RESULT_OK +import android.content.Intent import android.os.Bundle import android.view.View import io.realm.kotlin.where import net.pokeranalytics.android.R import net.pokeranalytics.android.model.realm.Bankroll +import net.pokeranalytics.android.ui.activity.CurrenciesActivity import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource import net.pokeranalytics.android.ui.view.RowRepresentable @@ -23,6 +26,10 @@ import java.util.* */ class BankrollDataFragment : EditableDataFragment(), StaticRowRepresentableDataSource { + companion object { + const val REQUEST_CODE_CURRENCY: Int = 100 + } + // Return the item as a Bankroll object private val bankroll: Bankroll get() { @@ -43,6 +50,16 @@ class BankrollDataFragment : EditableDataFragment(), StaticRowRepresentableDataS updateAdapterUI() } + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (requestCode == REQUEST_CODE_CURRENCY && resultCode == RESULT_OK) { + data?.let { + val currencyCode = it.getStringExtra(CurrenciesFragment.INTENT_CURRENCY_CODE) + onRowValueChanged(currencyCode, BankrollRow.CURRENCY) + } + } + } + override fun getDataSource(): RowRepresentableDataSource { return this } @@ -75,9 +92,7 @@ class BankrollDataFragment : EditableDataFragment(), StaticRowRepresentableDataS override fun editDescriptors(row: RowRepresentable): ArrayList? { return when (row) { SimpleRow.NAME -> row.editingDescriptors(mapOf("defaultValue" to this.bankroll.name)) - BankrollRow.RATE -> { - row.editingDescriptors(mapOf("defaultValue" to (this.bankroll.currency?.rate ?: 1.0).round())) - } + BankrollRow.RATE -> row.editingDescriptors(mapOf("defaultValue" to (this.bankroll.currency?.rate ?: 1.0).round())) else -> null } } @@ -87,11 +102,16 @@ class BankrollDataFragment : EditableDataFragment(), StaticRowRepresentableDataS } override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { - super.onRowSelected(position, row, fromAction) + when (row) { + BankrollRow.CURRENCY -> CurrenciesActivity.newInstanceForResult(this@BankrollDataFragment, BankrollDataFragment.REQUEST_CODE_CURRENCY) + else -> super.onRowSelected(position, row, fromAction) + } } override fun onRowValueChanged(value: Any?, row: RowRepresentable) { super.onRowValueChanged(value, row) + updateAdapterUI() + } private fun initData() { @@ -119,10 +139,9 @@ class BankrollDataFragment : EditableDataFragment(), StaticRowRepresentableDataS val defaultCurrency = Currency.getInstance(Preferences.getCurrencyLocale(this.parentActivity)) var differentCurrency = false - bankroll.currency?.let {bankrollCurrency -> + bankroll.currency?.let { bankrollCurrency -> differentCurrency = bankrollCurrency.code != defaultCurrency.currencyCode } - differentCurrency = true if (differentCurrency) { rows.add(BankrollRow.RATE) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/BankrollRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/BankrollRow.kt index f651d580..d9a986c9 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/BankrollRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/BankrollRow.kt @@ -1,5 +1,6 @@ package net.pokeranalytics.android.ui.view.rowrepresentable +import android.text.InputType import net.pokeranalytics.android.R import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetType import net.pokeranalytics.android.ui.view.DefaultEditable @@ -45,7 +46,15 @@ enum class BankrollRow : RowRepresentable, DefaultEditable { } override fun editingDescriptors(map: Map): ArrayList? { - - return super.editingDescriptors(map) + return when (this) { + BankrollRow.RATE -> { + val defaultValue : Any? by map + arrayListOf( + RowRepresentableEditDescriptor(defaultValue, R.string.rate, InputType.TYPE_CLASS_NUMBER + or InputType.TYPE_NUMBER_FLAG_DECIMAL) + ) + } + else -> super.editingDescriptors(map) + } } } \ No newline at end of file