Refactored onRowSelected: change fromAction:Boolean to tag:Int to allow more flexible usages + HH progression

hh
Laurent 6 years ago
parent e437591748
commit f624546598
  1. 18
      app/src/main/java/net/pokeranalytics/android/model/handhistory/ComputedAction.kt
  2. 20
      app/src/main/java/net/pokeranalytics/android/model/handhistory/HHBuilder.kt
  3. 2
      app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableAdapter.kt
  4. 2
      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/fragment/CalendarDetailsFragment.kt
  7. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarFragment.kt
  8. 4
      app/src/main/java/net/pokeranalytics/android/ui/fragment/ComparisonChartFragment.kt
  9. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/CurrenciesFragment.kt
  10. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt
  11. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt
  12. 4
      app/src/main/java/net/pokeranalytics/android/ui/fragment/FilterDetailsFragment.kt
  13. 4
      app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersFragment.kt
  14. 4
      app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersListFragment.kt
  15. 41
      app/src/main/java/net/pokeranalytics/android/ui/fragment/HandHistoryFragment.kt
  16. 4
      app/src/main/java/net/pokeranalytics/android/ui/fragment/MoreFragment.kt
  17. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportCreationFragment.kt
  18. 4
      app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportsFragment.kt
  19. 4
      app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt
  20. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt
  21. 4
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListFragment.kt
  22. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListGameFragment.kt
  23. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetMultiSelectionFragment.kt
  24. 4
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetStaticListFragment.kt
  25. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetTableSizeGridFragment.kt
  26. 4
      app/src/main/java/net/pokeranalytics/android/ui/fragment/data/BankrollDataFragment.kt
  27. 4
      app/src/main/java/net/pokeranalytics/android/ui/fragment/data/CustomFieldDataFragment.kt
  28. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/data/EditableDataFragment.kt
  29. 4
      app/src/main/java/net/pokeranalytics/android/ui/fragment/data/LocationDataFragment.kt
  30. 4
      app/src/main/java/net/pokeranalytics/android/ui/fragment/data/PlayerDataFragment.kt
  31. 4
      app/src/main/java/net/pokeranalytics/android/ui/fragment/data/TransactionDataFragment.kt
  32. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ComposableTableReportFragment.kt
  33. 8
      app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt
  34. 2
      app/src/main/java/net/pokeranalytics/android/ui/view/handhistory/KeyboardActionView.kt
  35. 8
      app/src/main/java/net/pokeranalytics/android/ui/view/handhistory/StreetCardHeader.kt
  36. 2
      app/src/main/java/net/pokeranalytics/android/ui/viewmodel/HandHistoryViewModel.kt

@ -4,10 +4,14 @@ import net.pokeranalytics.android.model.realm.handhistory.Action
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.ui.view.RowViewType
interface HandHistoryRow : RowRepresentable {
fun isValid() : Boolean
}
class ComputedAction(var action: Action, class ComputedAction(var action: Action,
var totalPotSize: Double = 0.0, var totalPotSize: Double = 0.0,
var playerRemainingStack: Double? = null, var playerRemainingStack: Double? = null,
var position: Position) : RowRepresentable { var position: Position) : HandHistoryRow {
/*** /***
* Returns whether the action requires the user to enter an amount for the selected action * Returns whether the action requires the user to enter an amount for the selected action
@ -34,4 +38,16 @@ class ComputedAction(var action: Action,
override val viewType: Int = RowViewType.ROW_HAND_ACTION.ordinal override val viewType: Int = RowViewType.ROW_HAND_ACTION.ordinal
override fun isValid() : Boolean {
return action.type?.let { type ->
if (this.requireAmount) {
return this.action.amount != null
} else {
return true
}
} ?: run {
false
}
}
} }

@ -6,8 +6,7 @@ import net.pokeranalytics.android.model.realm.handhistory.Action
import net.pokeranalytics.android.model.realm.handhistory.HandHistory import net.pokeranalytics.android.model.realm.handhistory.HandHistory
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.ui.view.RowViewType
import net.pokeranalytics.android.ui.view.handhistory.HandHistoryKeyboard import net.pokeranalytics.android.ui.view.handhistory.StreetCardHeader
import net.pokeranalytics.android.ui.view.handhistory.StreetHeader
import net.pokeranalytics.android.ui.view.rowrepresentable.CustomizableRowRepresentable import net.pokeranalytics.android.ui.view.rowrepresentable.CustomizableRowRepresentable
import java.util.* import java.util.*
import kotlin.math.min import kotlin.math.min
@ -269,6 +268,8 @@ class HHBuilder {
} }
private var currentRowRepresentables = mutableListOf<RowRepresentable>()
fun rowRepresentables() : List<RowRepresentable> { fun rowRepresentables() : List<RowRepresentable> {
val rows: MutableList<RowRepresentable> = mutableListOf() val rows: MutableList<RowRepresentable> = mutableListOf()
@ -285,7 +286,7 @@ class HHBuilder {
// Cards if not preflop // Cards if not preflop
if (street.totalBoardCards > 0) { if (street.totalBoardCards > 0) {
rows.add(StreetHeader(street, this.handHistory.cardsForStreet(street), potSize)) rows.add(StreetCardHeader(street, this.handHistory.cardsForStreet(street), potSize))
} }
// Actions // Actions
@ -296,14 +297,23 @@ class HHBuilder {
} }
this.currentRowRepresentables = rows
return rows return rows
} }
/*** /***
* Finds the index of the first incomplete action, if existing * Finds the index of the first incomplete action, if existing
*/ */
fun findIndexForEdition(): Pair<Int, HandHistoryKeyboard>? { fun findIndexForEdition(): RowRepresentable? {
return Pair(2, HandHistoryKeyboard.ACTION) // TODO implement
this.currentRowRepresentables.forEach { rowRepresentable ->
if (rowRepresentable is HandHistoryRow) {
if (!rowRepresentable.isValid()) {
return rowRepresentable
}
}
}
return null
} }
} }

@ -9,7 +9,7 @@ import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.ui.view.RowViewType
interface RowRepresentableDelegate { interface RowRepresentableDelegate {
fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean = false) {} fun onRowSelected(position: Int, row: RowRepresentable, tag: Int = 0) {}
fun onRowValueChanged(value: Any?, row: RowRepresentable) {} fun onRowValueChanged(value: Any?, row: RowRepresentable) {}
fun onRowDeleted(row: RowRepresentable) {} fun onRowDeleted(row: RowRepresentable) {}
fun onRowLongClick(itemView: View, row: RowRepresentable, position: Int) {} fun onRowLongClick(itemView: View, row: RowRepresentable, position: Int) {}

@ -193,7 +193,7 @@ class BankrollDetailsFragment : RealmFragment(), StaticRowRepresentableDataSourc
// RowRepresentableDelegate // RowRepresentableDelegate
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
} }

@ -175,7 +175,7 @@ class BankrollFragment : DeletableItemFragment(), StaticRowRepresentableDataSour
return rows return rows
} }
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
when (row) { when (row) {
is BankrollGraphRow -> { is BankrollGraphRow -> {
val lineDataSet = row.dataSet as LineDataSet val lineDataSet = row.dataSet as LineDataSet

@ -134,7 +134,7 @@ class CalendarDetailsFragment : BaseFragment(), StaticRowRepresentableDataSource
return rowRepresentables return rowRepresentables
} }
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
when (row) { when (row) {
is GraphRow -> { is GraphRow -> {
val report = row.report val report = row.report

@ -96,7 +96,7 @@ class CalendarFragment : RealmFragment(), CoroutineScope, StaticRowRepresentable
return rows return rows
} }
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
when (currentTimeFilter) { when (currentTimeFilter) {
TimeFilter.MONTH -> { TimeFilter.MONTH -> {

@ -71,8 +71,8 @@ class ComparisonChartFragment : BaseFragment(), StaticRowRepresentableDataSource
return rowRepresentation return rowRepresentation
} }
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
super.onRowSelected(position, row, fromAction) super.onRowSelected(position, row, tag)
when(row) { when(row) {
MoreTabRow.BANKROLL -> BankrollActivity.newInstance(requireContext()) MoreTabRow.BANKROLL -> BankrollActivity.newInstance(requireContext())
MoreTabRow.SETTINGS -> SettingsActivity.newInstance(requireContext()) MoreTabRow.SETTINGS -> SettingsActivity.newInstance(requireContext())

@ -95,7 +95,7 @@ class CurrenciesFragment : BaseFragment(), StaticRowRepresentableDataSource, Row
} }
// RowRepresentableDelegate // RowRepresentableDelegate
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
val intent = Intent() val intent = Intent()
intent.putExtra(INTENT_CURRENCY_CODE, (row as CurrencyRow).currency.currencyCode) intent.putExtra(INTENT_CURRENCY_CODE, (row as CurrencyRow).currency.currencyCode)
this.activity?.setResult(Activity.RESULT_OK, intent) this.activity?.setResult(Activity.RESULT_OK, intent)

@ -167,7 +167,7 @@ open class DataListFragment : DeletableItemFragment(), LiveRowRepresentableDataS
return if (viewType != -1) viewType else RowViewType.DATA.ordinal return if (viewType != -1) viewType else RowViewType.DATA.ordinal
} }
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
when (this.dataType) { when (this.dataType) {
LiveData.FILTER -> { LiveData.FILTER -> {

@ -217,7 +217,7 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate {
realmTransactions.removeAllChangeListeners() realmTransactions.removeAllChangeListeners()
} }
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
when (row) { when (row) {
is Session -> SessionActivity.newInstance( is Session -> SessionActivity.newInstance(
requireContext(), requireContext(),

@ -58,8 +58,8 @@ open class FilterDetailsFragment : RealmFragment(), StaticRowRepresentableDataSo
saveData() saveData()
} }
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
super.onRowSelected(position, row, fromAction) super.onRowSelected(position, row, tag)
if (row.viewType == RowViewType.TITLE_CHECK.ordinal) { if (row.viewType == RowViewType.TITLE_CHECK.ordinal) {
updateRowsSelection(row) updateRowsSelection(row)

@ -144,8 +144,8 @@ open class FiltersFragment : RealmFragment(), StaticRowRepresentableDataSource,
return selectedFilters return selectedFilters
} }
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
super.onRowSelected(position, row, fromAction) super.onRowSelected(position, row, tag)
selectedRow = row selectedRow = row
currentFilter?.id?.let { filterId -> currentFilter?.id?.let { filterId ->
FilterDetailsActivity.newInstanceForResult(this, filterId, (row as FilterCategoryRow).ordinal, REQUEST_CODE_FILTER_DETAILS) FilterDetailsActivity.newInstanceForResult(this, filterId, (row as FilterCategoryRow).ordinal, REQUEST_CODE_FILTER_DETAILS)

@ -87,10 +87,10 @@ open class FiltersListFragment : DataListFragment() {
} }
} }
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
when (row) { when (row) {
is Filter -> { is Filter -> {
if (fromAction) { if (tag == 1) {
val data = row.editingDescriptors(mapOf("defaultValue" to row.name)) val data = row.editingDescriptors(mapOf("defaultValue" to row.name))
BottomSheetFragment.create(fragmentManager, row, this, data, false, isDeletable = true, valueHasPlaceholder = false) BottomSheetFragment.create(fragmentManager, row, this, data, false, isDeletable = true, valueHasPlaceholder = false)
} else { } else {

@ -10,6 +10,7 @@ import kotlinx.android.synthetic.main.fragment_hand_history.*
import kotlinx.android.synthetic.main.fragment_settings.recyclerView import kotlinx.android.synthetic.main.fragment_settings.recyclerView
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.exceptions.PAIllegalStateException import net.pokeranalytics.android.exceptions.PAIllegalStateException
import net.pokeranalytics.android.model.handhistory.ComputedAction
import net.pokeranalytics.android.model.handhistory.HHBuilder import net.pokeranalytics.android.model.handhistory.HHBuilder
import net.pokeranalytics.android.model.handhistory.HandSetup import net.pokeranalytics.android.model.handhistory.HandSetup
import net.pokeranalytics.android.model.realm.handhistory.Action import net.pokeranalytics.android.model.realm.handhistory.Action
@ -22,8 +23,10 @@ import net.pokeranalytics.android.ui.fragment.components.RealmFragment
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.handhistory.HandHistoryKeyboard import net.pokeranalytics.android.ui.view.handhistory.HandHistoryKeyboard
import net.pokeranalytics.android.ui.view.handhistory.KeyboardListener import net.pokeranalytics.android.ui.view.handhistory.KeyboardListener
import net.pokeranalytics.android.ui.view.handhistory.StreetCardHeader
import net.pokeranalytics.android.ui.viewmodel.HandHistoryViewModel import net.pokeranalytics.android.ui.viewmodel.HandHistoryViewModel
import net.pokeranalytics.android.util.extensions.findById import net.pokeranalytics.android.util.extensions.findById
import timber.log.Timber
class HandHistoryFragment : RealmFragment(), RowRepresentableDataSource, RowRepresentableDelegate, KeyboardListener { class HandHistoryFragment : RealmFragment(), RowRepresentableDataSource, RowRepresentableDelegate, KeyboardListener {
@ -101,12 +104,20 @@ class HandHistoryFragment : RealmFragment(), RowRepresentableDataSource, RowRepr
} }
private fun edit() { private fun edit() {
this.model.isEdited = true
}
private fun findNextActionToEdit() {
this.model.findIndexForEdition()?.let { this.model.findIndexForEdition()?.let {
this.keyboard.show(it) this.keyboard.show(it)
this.highlightCell(it) this.highlightCell(it)
} ?: run {
this.keyboard.hide()
} }
}
private fun closeEdition() {
this.model.isEdited = false
} }
private fun highlightCell(handHistoryKeyboard: HandHistoryKeyboard) { private fun highlightCell(handHistoryKeyboard: HandHistoryKeyboard) {
@ -131,18 +142,48 @@ class HandHistoryFragment : RealmFragment(), RowRepresentableDataSource, RowRepr
return this.rows[position].viewType return this.rows[position].viewType
} }
override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
super.onRowSelected(position, row, tag)
if (!this.model.isEdited) {
return
}
when (row) {
is ComputedAction -> {
val keyboard = when (tag) {
1 -> HandHistoryKeyboard.ACTION
2 -> HandHistoryKeyboard.AMOUNT
else -> throw PAIllegalStateException("Unmanaged tag")
}
this.keyboard.show(keyboard)
}
is StreetCardHeader -> {
this.keyboard.show(HandHistoryKeyboard.CARD)
}
}
}
// Keyboard Listener // Keyboard Listener
override fun actionSelected(action: Action.Type) { override fun actionSelected(action: Action.Type) {
Timber.d(">>> action $action selected")
this.model.actionSelected(action) this.model.actionSelected(action)
this.findNextActionToEdit()
} }
override fun cardSelected(value: Card, suit: Card.Suit) { override fun cardSelected(value: Card, suit: Card.Suit) {
Timber.d(">>> card $value$suit selected")
this.model.cardSelected(value, suit) this.model.cardSelected(value, suit)
// TODO add test about number of cards?
this.findNextActionToEdit()
} }
override fun amountSelected(amount: Double) { override fun amountSelected(amount: Double) {
Timber.d(">>> amount $amount selected")
this.model.amountSelected(amount) this.model.amountSelected(amount)
this.findNextActionToEdit()
} }
} }

@ -59,8 +59,8 @@ class MoreFragment : BaseFragment(), StaticRowRepresentableDataSource, RowRepres
return rowRepresentation return rowRepresentation
} }
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
super.onRowSelected(position, row, fromAction) super.onRowSelected(position, row, tag)
when(row) { when(row) {
MoreTabRow.BANKROLL -> BankrollActivity.newInstance(requireContext()) MoreTabRow.BANKROLL -> BankrollActivity.newInstance(requireContext())
MoreTabRow.TOP_10 -> Top10Activity.newInstance(requireContext()) MoreTabRow.TOP_10 -> Top10Activity.newInstance(requireContext())

@ -188,7 +188,7 @@ class ReportCreationFragment : RealmFragment(), RowRepresentableDataSource, RowR
// RowRepresentableDelegate // RowRepresentableDelegate
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
val newStep = this.assistant.onRowSelected(position - 1) val newStep = this.assistant.onRowSelected(position - 1)
if (newStep) { if (newStep) {

@ -143,8 +143,8 @@ class ReportsFragment : DeletableItemFragment(), StaticRowRepresentableDataSourc
return this.adapterRows return this.adapterRows
} }
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
super.onRowSelected(position, row, fromAction) super.onRowSelected(position, row, tag)
when (row) { when (row) {
is ReportRow -> { is ReportRow -> {

@ -194,8 +194,8 @@ class SessionFragment : RealmFragment(), RowRepresentableDelegate {
} }
} }
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
if (fromAction) { if (tag == 1) {
Toast.makeText(requireContext(), "Action for row: $row", Toast.LENGTH_SHORT).show() Toast.makeText(requireContext(), "Action for row: $row", Toast.LENGTH_SHORT).show()
return return
} }

@ -112,7 +112,7 @@ class SettingsFragment : BaseFragment(), RowRepresentableDelegate, StaticRowRepr
} }
} }
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
when (row) { when (row) {
SettingRow.BANKROLL_REPORT -> BankrollActivity.newInstance(requireContext()) SettingRow.BANKROLL_REPORT -> BankrollActivity.newInstance(requireContext())
SettingRow.TOP_10 -> Top10Activity.newInstance(requireContext()) SettingRow.TOP_10 -> Top10Activity.newInstance(requireContext())

@ -49,7 +49,7 @@ open class BottomSheetListFragment : BottomSheetFragment(), LiveRowRepresentable
return RowViewType.BOTTOM_SHEET_DATA.ordinal return RowViewType.BOTTOM_SHEET_DATA.ordinal
} }
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
this.viewModel.onRowSelected(position) this.viewModel.onRowSelected(position)
dismiss() dismiss()
@ -61,7 +61,7 @@ open class BottomSheetListFragment : BottomSheetFragment(), LiveRowRepresentable
// dismiss() // dismiss()
// } // }
// } // }
super.onRowSelected(position, row, fromAction) super.onRowSelected(position, row, tag)
} }
/** /**

@ -25,7 +25,7 @@ class BottomSheetListGameFragment : BottomSheetListFragment() {
initUI() initUI()
} }
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
this.viewModel.realmData?.let { this.viewModel.realmData?.let {
val selectedData = it[position] val selectedData = it[position]
selectedData?.let { data -> selectedData?.let { data ->

@ -31,7 +31,7 @@ open class BottomSheetMultiSelectionFragment : BottomSheetListFragment() {
} }
} }
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
this.viewModel.onRowSelected(row) this.viewModel.onRowSelected(row)
} }

@ -33,12 +33,12 @@ class BottomSheetStaticListFragment : BottomSheetFragment(), StaticRowRepresenta
return this.viewModel.staticRows return this.viewModel.staticRows
} }
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
this.viewModel.selectedRows.add(row) this.viewModel.selectedRows.add(row)
this.viewModel.onRowValueChanged() this.viewModel.onRowValueChanged()
// this.delegate.onRowValueChanged(row, this.row) // this.delegate.onRowValueChanged(row, this.row)
dismiss() dismiss()
super.onRowSelected(position, row, fromAction) super.onRowSelected(position, row, tag)
} }
/** /**

@ -57,7 +57,7 @@ class BottomSheetTableSizeGridFragment : BottomSheetFragment(), StaticRowReprese
return TableSize.all return TableSize.all
} }
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
this.viewModel.defaultSize = (row as TableSize).numberOfPlayer this.viewModel.defaultSize = (row as TableSize).numberOfPlayer
this.viewModel.onRowValueChanged() this.viewModel.onRowValueChanged()
dismiss() dismiss()

@ -130,13 +130,13 @@ class BankrollDataFragment : EditableDataFragment(), StaticRowRepresentableDataS
} }
} }
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
when (row) { when (row) {
BankrollRow.CURRENCY -> CurrenciesActivity.newInstanceForResult(this@BankrollDataFragment, BankrollRow.CURRENCY -> CurrenciesActivity.newInstanceForResult(this@BankrollDataFragment,
RequestCode.CURRENCY.value RequestCode.CURRENCY.value
) )
BankrollRow.REFRESH_RATE -> refreshRate() BankrollRow.REFRESH_RATE -> refreshRate()
else -> super.onRowSelected(position, row, fromAction) else -> super.onRowSelected(position, row, tag)
} }
} }

@ -150,13 +150,13 @@ class CustomFieldDataFragment : EditableDataFragment(), StaticRowRepresentableDa
} }
} }
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
when (row) { when (row) {
is CustomFieldEntry -> { is CustomFieldEntry -> {
val data = customField.editDescriptors(row) val data = customField.editDescriptors(row)
BottomSheetFragment.create(fragmentManager, row, this, data, isClearable = false, isDeletable = true) BottomSheetFragment.create(fragmentManager, row, this, data, isClearable = false, isDeletable = true)
} }
else -> super.onRowSelected(position, row, fromAction) else -> super.onRowSelected(position, row, tag)
} }
} }

@ -68,7 +68,7 @@ open class EditableDataFragment : DataManagerFragment(), RowRepresentableDelegat
} }
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
BottomSheetFragment.create(fragmentManager, row, this, getDataSource().editDescriptors(row)) BottomSheetFragment.create(fragmentManager, row, this, getDataSource().editDescriptors(row))
} }

@ -85,14 +85,14 @@ class LocationDataFragment : EditableDataFragment(), StaticRowRepresentableDataS
} }
} }
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
// If we click on a location row, save the location (and finish activity) // If we click on a location row, save the location (and finish activity)
placesForRows[row]?.place?.let { place -> placesForRows[row]?.place?.let { place ->
location.setPlace(place) location.setPlace(place)
saveData() saveData()
return return
} }
super.onRowSelected(position, row, fromAction) super.onRowSelected(position, row, tag)
} }
override fun onRowValueChanged(value: Any?, row: RowRepresentable) { override fun onRowValueChanged(value: Any?, row: RowRepresentable) {

@ -124,14 +124,14 @@ class PlayerDataFragment : EditableDataFragment(), StaticRowRepresentableDataSou
} }
} }
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
when (row) { when (row) {
PlayerRow.IMAGE -> openPictureDialog() PlayerRow.IMAGE -> openPictureDialog()
is Comment -> { is Comment -> {
val data = arrayListOf(RowRepresentableEditDescriptor(row.content)) val data = arrayListOf(RowRepresentableEditDescriptor(row.content))
BottomSheetFragment.create(fragmentManager, row, this, data, isClearable = false, isDeletable = true) BottomSheetFragment.create(fragmentManager, row, this, data, isClearable = false, isDeletable = true)
} }
else -> super.onRowSelected(position, row, fromAction) else -> super.onRowSelected(position, row, tag)
} }
} }

@ -77,7 +77,7 @@ class TransactionDataFragment : EditableDataFragment(), StaticRowRepresentableDa
} }
} }
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
when (row) { when (row) {
TransactionRow.DATE -> DateTimePickerManager.create( TransactionRow.DATE -> DateTimePickerManager.create(
requireContext(), requireContext(),
@ -87,7 +87,7 @@ class TransactionDataFragment : EditableDataFragment(), StaticRowRepresentableDa
onlyDate = true, onlyDate = true,
isClearable = false isClearable = false
) )
else -> super.onRowSelected(position, row, fromAction) else -> super.onRowSelected(position, row, tag)
} }
} }

@ -168,7 +168,7 @@ open class ComposableTableReportFragment : RealmFragment(), StaticRowRepresentab
// RowRepresentableDelegate // RowRepresentableDelegate
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
if (this.hasComputationInProgress) { if (this.hasComputationInProgress) {
return return

@ -260,7 +260,7 @@ enum class RowViewType(private var layoutRes: Int) {
if (row.imageClickable == true) { if (row.imageClickable == true) {
imageView.addCircleRipple() imageView.addCircleRipple()
imageView.setOnClickListener { imageView.setOnClickListener {
adapter.delegate?.onRowSelected(position, row, true) adapter.delegate?.onRowSelected(position, row, 1)
} }
} else { } else {
imageView.setBackgroundResource(0) imageView.setBackgroundResource(0)
@ -697,7 +697,7 @@ enum class RowViewType(private var layoutRes: Int) {
button.text = itemView.context.getString(it) button.text = itemView.context.getString(it)
} }
button.setOnClickListener { button.setOnClickListener {
adapter.delegate?.onRowSelected(position, row) adapter.delegate?.onRowSelected(position, row, 1)
} }
} }
@ -706,7 +706,9 @@ enum class RowViewType(private var layoutRes: Int) {
} }
itemView.findViewById<EditText>(R.id.amountEditText)?.let { editText -> itemView.findViewById<EditText>(R.id.amountEditText)?.let { editText ->
adapter.delegate?.onRowSelected(position, row) editText.setOnFocusChangeListener { v, hasFocus ->
adapter.delegate?.onRowSelected(position, row, 2)
}
} }
} }

@ -44,7 +44,7 @@ class KeyboardActionView(context: Context) : AbstractKeyboardView(context),
return Action.Type.defaultTypes return Action.Type.defaultTypes
} }
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) {
this.keyboardListener?.actionSelected(row as Action.Type) this.keyboardListener?.actionSelected(row as Action.Type)
} }

@ -1,12 +1,16 @@
package net.pokeranalytics.android.ui.view.handhistory package net.pokeranalytics.android.ui.view.handhistory
import net.pokeranalytics.android.model.handhistory.HandHistoryRow
import net.pokeranalytics.android.model.handhistory.Street import net.pokeranalytics.android.model.handhistory.Street
import net.pokeranalytics.android.model.realm.handhistory.Card import net.pokeranalytics.android.model.realm.handhistory.Card
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.ui.view.RowViewType
class StreetHeader(var street: Street, var cards: List<Card>, var potSize: Double) : RowRepresentable { class StreetCardHeader(var street: Street, var cards: List<Card>, var potSize: Double) : HandHistoryRow {
override val viewType: Int = RowViewType.ROW_HAND_STREET.ordinal override val viewType: Int = RowViewType.ROW_HAND_STREET.ordinal
override fun isValid(): Boolean {
return cards.size == street.totalBoardCards
}
} }

@ -10,6 +10,8 @@ import net.pokeranalytics.android.ui.view.handhistory.HandHistoryKeyboard
class HandHistoryViewModel : ViewModel() { class HandHistoryViewModel : ViewModel() {
var isEdited = true
var currentActionIndex: Int? = null var currentActionIndex: Int? = null
var builder = MutableLiveData<HHBuilder>() var builder = MutableLiveData<HHBuilder>()

Loading…
Cancel
Save