Autoselect bankroll for transaction when only one exists

hh
Laurent 6 years ago
parent 03ce732b95
commit 1e6de627a7
  1. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/data/BankrollDataFragment.kt
  2. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/data/CustomFieldDataFragment.kt
  3. 18
      app/src/main/java/net/pokeranalytics/android/ui/fragment/data/DataManagerFragment.kt
  4. 42
      app/src/main/java/net/pokeranalytics/android/ui/fragment/data/EditableDataFragment.kt
  5. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/data/LocationDataFragment.kt
  6. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/data/PlayerDataFragment.kt
  7. 23
      app/src/main/java/net/pokeranalytics/android/ui/fragment/data/TransactionDataFragment.kt
  8. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/data/TransactionTypeDataFragment.kt
  9. 16
      app/src/main/java/net/pokeranalytics/android/ui/fragment/report/AbstractReportFragment.kt

@ -38,7 +38,7 @@ class BankrollDataFragment : EditableDataFragment(), StaticRowRepresentableDataS
// Return the item as a Bankroll object
private val bankroll: Bankroll
get() {
return this.viewModel.item as Bankroll
return this.model.item as Bankroll
}
private lateinit var defaultCurrency: Currency

@ -34,7 +34,7 @@ class CustomFieldDataFragment : EditableDataFragment(), StaticRowRepresentableDa
// Return the item as a Custom TypedCSVField object
private val customField: CustomField
get() {
return this.viewModel.item as CustomField
return this.model.item as CustomField
}
private val itemTouchHelper = ItemTouchHelper(object : ItemTouchHelper.Callback() {

@ -20,7 +20,7 @@ import net.pokeranalytics.android.ui.viewmodel.DataManagerViewModel
open class DataManagerFragment : RealmFragment() {
protected val viewModel: DataManagerViewModel by lazy {
protected val model: DataManagerViewModel by lazy {
ViewModelProviders.of(this).get(DataManagerViewModel::class.java)
}
@ -78,7 +78,7 @@ open class DataManagerFragment : RealmFragment() {
private fun loadItem() {
// this.item = this.liveDataType.updateOrCreate(this.getRealm(), primaryKey)
this.deleteButtonShouldAppear = this.viewModel.primaryKey != null
this.deleteButtonShouldAppear = this.model.primaryKey != null
}
@ -87,7 +87,7 @@ open class DataManagerFragment : RealmFragment() {
*/
protected open fun saveData() {
val savable = this.viewModel.item
val savable = this.model.item
this.willSaveData()
when (savable) {
@ -96,7 +96,7 @@ open class DataManagerFragment : RealmFragment() {
when (status) {
SaveValidityStatus.VALID -> {
this.getRealm().executeTransaction {
val managedItem = it.copyToRealmOrUpdate(this.viewModel.item)
val managedItem = it.copyToRealmOrUpdate(this.model.item)
if (managedItem is Savable) {
val uniqueIdentifier = managedItem.id
finishActivityWithResult(uniqueIdentifier)
@ -134,14 +134,14 @@ open class DataManagerFragment : RealmFragment() {
val realm = this.getRealm()
if (this.viewModel.item.isValidForDelete(realm)) {
if (this.model.item.isValidForDelete(realm)) {
val intent = Intent()
intent.putExtra(DataListActivity.IntentKey.ITEM_DELETED.keyName, this.viewModel.item.id)
intent.putExtra(DataListActivity.IntentKey.ITEM_DELETED.keyName, this.model.item.id)
activity?.setResult(Activity.RESULT_OK, intent)
activity?.finish()
} else {
val status = this.viewModel.item.getDeleteStatus(requireContext(), realm)
val message = this.viewModel.item.getFailedDeleteMessage(status)
val status = this.model.item.getDeleteStatus(requireContext(), realm)
val message = this.model.item.getFailedDeleteMessage(status)
val builder = AlertDialog.Builder(requireContext())
.setMessage(message)
.setNegativeButton(R.string.ok, null)
@ -156,7 +156,7 @@ open class DataManagerFragment : RealmFragment() {
*/
private fun finishActivityWithResult(uniqueIdentifier: String) {
val intent = Intent()
intent.putExtra(EditableDataActivity.IntentKey.DATA_TYPE.keyName, viewModel.dataType)
intent.putExtra(EditableDataActivity.IntentKey.DATA_TYPE.keyName, model.dataType)
intent.putExtra(EditableDataActivity.IntentKey.PRIMARY_KEY.keyName, uniqueIdentifier)
activity?.setResult(Activity.RESULT_OK, intent)
activity?.finish()

@ -38,22 +38,15 @@ open class EditableDataFragment : DataManagerFragment(), RowRepresentableDelegat
open fun initData() {
this.viewModel.dataType = this.arguments?.getInt(BundleKey.DATA_TYPE.value)
this.viewModel.primaryKey = this.arguments?.getString(BundleKey.PRIMARY_KEY.value)
viewModel.loadItemWithRealm(getRealm())
this.model.dataType = this.arguments?.getInt(BundleKey.DATA_TYPE.value)
this.model.primaryKey = this.arguments?.getString(BundleKey.PRIMARY_KEY.value)
val dataSource = getDataSource()
this.rowRepresentableAdapter = RowRepresentableAdapter(getDataSource(), this)
//this.rowRepresentableAdapter.setHasStableIds(true)
this.recyclerView.adapter = rowRepresentableAdapter
this.model.loadItemWithRealm(getRealm())
// When creating an object, open automatically the keyboard for the first row
if (!deleteButtonShouldAppear && shouldOpenKeyboard) {
val row = dataSource.adapterRows()?.firstOrNull()
row?.let {
onRowSelected(0, it)
}
}
}
open fun indexOfFirstRowToSelect(): Int {
return 0
}
/**
@ -75,7 +68,7 @@ open class EditableDataFragment : DataManagerFragment(), RowRepresentableDelegat
override fun onRowValueChanged(value: Any?, row: RowRepresentable) {
this.getRealm().executeTransaction {
try {
(this.viewModel.item as Editable).updateValue(value, row)
(this.model.item as Editable).updateValue(value, row)
} catch (e: Exception) {
Crashlytics.log("Exception caught: row = $row, value=$value, class=${this.javaClass}")
throw e
@ -92,10 +85,10 @@ open class EditableDataFragment : DataManagerFragment(), RowRepresentableDelegat
setDisplayHomeAsUpEnabled(true)
val liveDataType = this.viewModel.liveDataType
val liveDataType = this.model.liveDataType
val proxyItem: RealmModel? =
liveDataType.getData(this.getRealm(), this.viewModel.primaryKey)
liveDataType.getData(this.getRealm(), this.model.primaryKey)
proxyItem?.let {
this.appBar.toolbar.title = liveDataType.updateEntityLocalizedTitle(requireContext())
deleteButtonShouldAppear = true
@ -109,13 +102,26 @@ open class EditableDataFragment : DataManagerFragment(), RowRepresentableDelegat
setHasFixedSize(true)
layoutManager = viewManager
}
val dataSource = getDataSource()
this.rowRepresentableAdapter = RowRepresentableAdapter(getDataSource(), this)
//this.rowRepresentableAdapter.setHasStableIds(true)
this.recyclerView.adapter = rowRepresentableAdapter
// When creating an object, open automatically the keyboard for the first row
if (!deleteButtonShouldAppear && shouldOpenKeyboard) {
val index = indexOfFirstRowToSelect()
dataSource.adapterRows()?.get(index)?.let { row ->
onRowSelected(index, row)
}
}
}
/**
* Return the data source
*/
open fun getDataSource(): RowRepresentableDataSource {
return this.viewModel.item as RowRepresentableDataSource
return this.model.item as RowRepresentableDataSource
}
}

@ -24,7 +24,7 @@ class LocationDataFragment : EditableDataFragment(), StaticRowRepresentableDataS
// Return the item as a Location object
private val location: Location
get() {
return this.viewModel.item as Location
return this.model.item as Location
}
// Loader boolean

@ -41,7 +41,7 @@ class PlayerDataFragment : EditableDataFragment(), StaticRowRepresentableDataSou
private val player: Player
get() {
return this.viewModel.item as Player
return this.model.item as Player
}
private var mediaActivity: MediaActivity? = null

@ -3,6 +3,7 @@ package net.pokeranalytics.android.ui.fragment.data
import android.content.Context
import android.os.Bundle
import android.view.View
import io.realm.kotlin.where
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.delay
@ -30,12 +31,28 @@ class TransactionDataFragment : EditableDataFragment(), StaticRowRepresentableDa
// Return the item as a Transaction object
private val transaction: Transaction
get() {
return this.viewModel.item as Transaction
return this.model.item as Transaction
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
shouldOpenKeyboard = false
// shouldOpenKeyboard = false
}
override fun initData() {
super.initData()
// Initialize with the only bankroll if possible
if (this.transaction.bankroll == null) {
val bankrolls = getRealm().where<Bankroll>().findAll()
if (bankrolls.size == 1) {
this.transaction.bankroll = bankrolls.first()
}
}
}
override fun indexOfFirstRowToSelect(): Int {
return if (this.transaction.bankroll == null) 0 else 1
}
override fun getDataSource(): RowRepresentableDataSource {
@ -99,7 +116,7 @@ class TransactionDataFragment : EditableDataFragment(), StaticRowRepresentableDa
super.onRowValueChanged(value, row)
rowRepresentableAdapter.refreshRow(row)
if (viewModel.primaryKey == null) { // automatically change the row for new data
if (model.primaryKey == null) { // automatically change the row for new data
GlobalScope.launch(Dispatchers.Main) {
delay(200)
when (row) {

@ -13,7 +13,7 @@ class TransactionTypeDataFragment : EditableDataFragment(), RowRepresentableData
val transactionType: TransactionType
get() {
return this.viewModel.item as TransactionType
return this.model.item as TransactionType
}
// RowRepresentableDataSource

@ -37,10 +37,10 @@ abstract class AbstractReportFragment : DataManagerFragment() {
private fun initData() {
this.viewModel.dataType = LiveData.REPORT_SETUP.ordinal
this.viewModel.primaryKey = this.selectedReport.options.reportSetupId
this.model.dataType = LiveData.REPORT_SETUP.ordinal
this.model.primaryKey = this.selectedReport.options.reportSetupId
this.viewModel.loadItemWithRealm(getRealm())
this.model.loadItemWithRealm(getRealm())
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
@ -48,7 +48,7 @@ abstract class AbstractReportFragment : DataManagerFragment() {
initData()
this.deleteButtonShouldAppear = (this.viewModel.primaryKey != null)
this.deleteButtonShouldAppear = (this.model.primaryKey != null)
this.saveButtonShouldAppear = this.selectedReport.options.userGenerated
setDisplayHomeAsUpEnabled(true)
@ -71,7 +71,7 @@ abstract class AbstractReportFragment : DataManagerFragment() {
view.findViewById<EditText>(net.pokeranalytics.android.R.id.reportName)
nameEditText.inputType = InputType.TYPE_TEXT_FLAG_CAP_SENTENCES
this.viewModel.primaryKey?.let { id ->
this.model.primaryKey?.let { id ->
getRealm().findById<ReportSetup>(id)?.let { reportSetup ->
nameEditText.hint = reportSetup.name
}
@ -110,10 +110,10 @@ abstract class AbstractReportFragment : DataManagerFragment() {
private fun saveReport(name: String) {
this.reportViewModel.title = name
val rs = this.viewModel.item as ReportSetup
val rs = this.model.item as ReportSetup
getRealm().executeTransaction { realm ->
val firstSave = (this.viewModel.primaryKey == null)
val firstSave = (this.model.primaryKey == null)
if (firstSave) {
val options = this.selectedReport.options
rs.name = name
@ -139,7 +139,7 @@ abstract class AbstractReportFragment : DataManagerFragment() {
}
this.viewModel.primaryKey = rs.id
this.model.primaryKey = rs.id
this.deleteButtonShouldAppear = true
setToolbarTitle(this.reportViewModel.title)
}

Loading…
Cancel
Save