From f624546598f57a9a53723db43b8b45875284ecb9 Mon Sep 17 00:00:00 2001 From: Laurent Date: Wed, 15 Jan 2020 18:02:29 +0100 Subject: [PATCH] Refactored onRowSelected: change fromAction:Boolean to tag:Int to allow more flexible usages + HH progression --- .../model/handhistory/ComputedAction.kt | 18 +++++++- .../android/model/handhistory/HHBuilder.kt | 20 ++++++--- .../ui/adapter/RowRepresentableAdapter.kt | 2 +- .../ui/fragment/BankrollDetailsFragment.kt | 2 +- .../android/ui/fragment/BankrollFragment.kt | 2 +- .../ui/fragment/CalendarDetailsFragment.kt | 2 +- .../android/ui/fragment/CalendarFragment.kt | 2 +- .../ui/fragment/ComparisonChartFragment.kt | 4 +- .../android/ui/fragment/CurrenciesFragment.kt | 2 +- .../android/ui/fragment/DataListFragment.kt | 2 +- .../android/ui/fragment/FeedFragment.kt | 2 +- .../ui/fragment/FilterDetailsFragment.kt | 4 +- .../android/ui/fragment/FiltersFragment.kt | 4 +- .../ui/fragment/FiltersListFragment.kt | 4 +- .../ui/fragment/HandHistoryFragment.kt | 41 +++++++++++++++++++ .../android/ui/fragment/MoreFragment.kt | 4 +- .../ui/fragment/ReportCreationFragment.kt | 2 +- .../android/ui/fragment/ReportsFragment.kt | 4 +- .../android/ui/fragment/SessionFragment.kt | 4 +- .../android/ui/fragment/SettingsFragment.kt | 2 +- .../bottomsheet/BottomSheetListFragment.kt | 4 +- .../BottomSheetListGameFragment.kt | 2 +- .../BottomSheetMultiSelectionFragment.kt | 2 +- .../BottomSheetStaticListFragment.kt | 4 +- .../BottomSheetTableSizeGridFragment.kt | 2 +- .../ui/fragment/data/BankrollDataFragment.kt | 4 +- .../fragment/data/CustomFieldDataFragment.kt | 4 +- .../ui/fragment/data/EditableDataFragment.kt | 2 +- .../ui/fragment/data/LocationDataFragment.kt | 4 +- .../ui/fragment/data/PlayerDataFragment.kt | 4 +- .../fragment/data/TransactionDataFragment.kt | 4 +- .../report/ComposableTableReportFragment.kt | 2 +- .../android/ui/view/RowViewType.kt | 8 ++-- .../ui/view/handhistory/KeyboardActionView.kt | 2 +- .../{StreetHeader.kt => StreetCardHeader.kt} | 8 +++- .../ui/viewmodel/HandHistoryViewModel.kt | 2 + 36 files changed, 130 insertions(+), 55 deletions(-) rename app/src/main/java/net/pokeranalytics/android/ui/view/handhistory/{StreetHeader.kt => StreetCardHeader.kt} (53%) diff --git a/app/src/main/java/net/pokeranalytics/android/model/handhistory/ComputedAction.kt b/app/src/main/java/net/pokeranalytics/android/model/handhistory/ComputedAction.kt index 00e4b9cb..21696c9b 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/handhistory/ComputedAction.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/handhistory/ComputedAction.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.RowViewType +interface HandHistoryRow : RowRepresentable { + fun isValid() : Boolean +} + class ComputedAction(var action: Action, var totalPotSize: Double = 0.0, 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 @@ -34,4 +38,16 @@ class ComputedAction(var action: Action, 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 + } + } + } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/model/handhistory/HHBuilder.kt b/app/src/main/java/net/pokeranalytics/android/model/handhistory/HHBuilder.kt index c83c9091..b7654631 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/handhistory/HHBuilder.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/handhistory/HHBuilder.kt @@ -6,8 +6,7 @@ import net.pokeranalytics.android.model.realm.handhistory.Action import net.pokeranalytics.android.model.realm.handhistory.HandHistory import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowViewType -import net.pokeranalytics.android.ui.view.handhistory.HandHistoryKeyboard -import net.pokeranalytics.android.ui.view.handhistory.StreetHeader +import net.pokeranalytics.android.ui.view.handhistory.StreetCardHeader import net.pokeranalytics.android.ui.view.rowrepresentable.CustomizableRowRepresentable import java.util.* import kotlin.math.min @@ -269,6 +268,8 @@ class HHBuilder { } + private var currentRowRepresentables = mutableListOf() + fun rowRepresentables() : List { val rows: MutableList = mutableListOf() @@ -285,7 +286,7 @@ class HHBuilder { // Cards if not preflop if (street.totalBoardCards > 0) { - rows.add(StreetHeader(street, this.handHistory.cardsForStreet(street), potSize)) + rows.add(StreetCardHeader(street, this.handHistory.cardsForStreet(street), potSize)) } // Actions @@ -296,14 +297,23 @@ class HHBuilder { } + this.currentRowRepresentables = rows return rows } /*** * Finds the index of the first incomplete action, if existing */ - fun findIndexForEdition(): Pair? { - return Pair(2, HandHistoryKeyboard.ACTION) // TODO implement + fun findIndexForEdition(): RowRepresentable? { + + this.currentRowRepresentables.forEach { rowRepresentable -> + if (rowRepresentable is HandHistoryRow) { + if (!rowRepresentable.isValid()) { + return rowRepresentable + } + } + } + return null } } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableAdapter.kt b/app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableAdapter.kt index 00eb4d9c..48ab3e53 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableAdapter.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableAdapter.kt @@ -9,7 +9,7 @@ import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowViewType 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 onRowDeleted(row: RowRepresentable) {} fun onRowLongClick(itemView: View, row: RowRepresentable, position: Int) {} 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 bdae834e..bf2d824e 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 @@ -193,7 +193,7 @@ class BankrollDetailsFragment : RealmFragment(), StaticRowRepresentableDataSourc // RowRepresentableDelegate - override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { + override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) { } 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 60214e3a..4cbf41c2 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 @@ -175,7 +175,7 @@ class BankrollFragment : DeletableItemFragment(), StaticRowRepresentableDataSour return rows } - override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { + override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) { when (row) { is BankrollGraphRow -> { val lineDataSet = row.dataSet as LineDataSet diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarDetailsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarDetailsFragment.kt index c1ff6b85..f98564d1 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarDetailsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarDetailsFragment.kt @@ -134,7 +134,7 @@ class CalendarDetailsFragment : BaseFragment(), StaticRowRepresentableDataSource return rowRepresentables } - override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { + override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) { when (row) { is GraphRow -> { val report = row.report diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarFragment.kt index ca1eb5a7..72462a88 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarFragment.kt @@ -96,7 +96,7 @@ class CalendarFragment : RealmFragment(), CoroutineScope, StaticRowRepresentable return rows } - override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { + override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) { when (currentTimeFilter) { TimeFilter.MONTH -> { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/ComparisonChartFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/ComparisonChartFragment.kt index 9c78ac5d..faabe20e 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/ComparisonChartFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/ComparisonChartFragment.kt @@ -71,8 +71,8 @@ class ComparisonChartFragment : BaseFragment(), StaticRowRepresentableDataSource return rowRepresentation } - override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { - super.onRowSelected(position, row, fromAction) + override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) { + super.onRowSelected(position, row, tag) when(row) { MoreTabRow.BANKROLL -> BankrollActivity.newInstance(requireContext()) MoreTabRow.SETTINGS -> SettingsActivity.newInstance(requireContext()) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CurrenciesFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CurrenciesFragment.kt index 7c573980..1373affa 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CurrenciesFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CurrenciesFragment.kt @@ -95,7 +95,7 @@ class CurrenciesFragment : BaseFragment(), StaticRowRepresentableDataSource, Row } // RowRepresentableDelegate - override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { + override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) { val intent = Intent() intent.putExtra(INTENT_CURRENCY_CODE, (row as CurrencyRow).currency.currencyCode) this.activity?.setResult(Activity.RESULT_OK, intent) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt index 722b9dac..c11faa64 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt @@ -167,7 +167,7 @@ open class DataListFragment : DeletableItemFragment(), LiveRowRepresentableDataS 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) { LiveData.FILTER -> { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt index e02b4363..7ec4e95e 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt @@ -217,7 +217,7 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate { realmTransactions.removeAllChangeListeners() } - override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { + override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) { when (row) { is Session -> SessionActivity.newInstance( requireContext(), diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FilterDetailsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FilterDetailsFragment.kt index 481557e5..9ba28c88 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FilterDetailsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FilterDetailsFragment.kt @@ -58,8 +58,8 @@ open class FilterDetailsFragment : RealmFragment(), StaticRowRepresentableDataSo saveData() } - override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { - super.onRowSelected(position, row, fromAction) + override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) { + super.onRowSelected(position, row, tag) if (row.viewType == RowViewType.TITLE_CHECK.ordinal) { updateRowsSelection(row) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersFragment.kt index c04d3e02..a7a7fd85 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersFragment.kt @@ -144,8 +144,8 @@ open class FiltersFragment : RealmFragment(), StaticRowRepresentableDataSource, return selectedFilters } - override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { - super.onRowSelected(position, row, fromAction) + override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) { + super.onRowSelected(position, row, tag) selectedRow = row currentFilter?.id?.let { filterId -> FilterDetailsActivity.newInstanceForResult(this, filterId, (row as FilterCategoryRow).ordinal, REQUEST_CODE_FILTER_DETAILS) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersListFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersListFragment.kt index 8c4abc81..a41ade3a 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersListFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersListFragment.kt @@ -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) { is Filter -> { - if (fromAction) { + if (tag == 1) { val data = row.editingDescriptors(mapOf("defaultValue" to row.name)) BottomSheetFragment.create(fragmentManager, row, this, data, false, isDeletable = true, valueHasPlaceholder = false) } else { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/HandHistoryFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/HandHistoryFragment.kt index 495c62ea..50ea06bc 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/HandHistoryFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/HandHistoryFragment.kt @@ -10,6 +10,7 @@ import kotlinx.android.synthetic.main.fragment_hand_history.* import kotlinx.android.synthetic.main.fragment_settings.recyclerView import net.pokeranalytics.android.R 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.HandSetup 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.handhistory.HandHistoryKeyboard 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.util.extensions.findById +import timber.log.Timber class HandHistoryFragment : RealmFragment(), RowRepresentableDataSource, RowRepresentableDelegate, KeyboardListener { @@ -101,12 +104,20 @@ class HandHistoryFragment : RealmFragment(), RowRepresentableDataSource, RowRepr } private fun edit() { + this.model.isEdited = true + } + private fun findNextActionToEdit() { this.model.findIndexForEdition()?.let { this.keyboard.show(it) this.highlightCell(it) + } ?: run { + this.keyboard.hide() } + } + private fun closeEdition() { + this.model.isEdited = false } private fun highlightCell(handHistoryKeyboard: HandHistoryKeyboard) { @@ -131,18 +142,48 @@ class HandHistoryFragment : RealmFragment(), RowRepresentableDataSource, RowRepr 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 override fun actionSelected(action: Action.Type) { + Timber.d(">>> action $action selected") this.model.actionSelected(action) + this.findNextActionToEdit() } override fun cardSelected(value: Card, suit: Card.Suit) { + Timber.d(">>> card $value$suit selected") this.model.cardSelected(value, suit) + + // TODO add test about number of cards? + this.findNextActionToEdit() } override fun amountSelected(amount: Double) { + Timber.d(">>> amount $amount selected") this.model.amountSelected(amount) + this.findNextActionToEdit() } } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/MoreFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/MoreFragment.kt index 2075c201..c8750a8d 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/MoreFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/MoreFragment.kt @@ -59,8 +59,8 @@ class MoreFragment : BaseFragment(), StaticRowRepresentableDataSource, RowRepres return rowRepresentation } - override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { - super.onRowSelected(position, row, fromAction) + override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) { + super.onRowSelected(position, row, tag) when(row) { MoreTabRow.BANKROLL -> BankrollActivity.newInstance(requireContext()) MoreTabRow.TOP_10 -> Top10Activity.newInstance(requireContext()) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportCreationFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportCreationFragment.kt index 0584020b..b2c45e68 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportCreationFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportCreationFragment.kt @@ -188,7 +188,7 @@ class ReportCreationFragment : RealmFragment(), RowRepresentableDataSource, RowR // 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) if (newStep) { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportsFragment.kt index a13ddcc7..90535845 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportsFragment.kt @@ -143,8 +143,8 @@ class ReportsFragment : DeletableItemFragment(), StaticRowRepresentableDataSourc return this.adapterRows } - override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { - super.onRowSelected(position, row, fromAction) + override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) { + super.onRowSelected(position, row, tag) when (row) { is ReportRow -> { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt index c6f6b7b9..9ba18594 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt @@ -194,8 +194,8 @@ class SessionFragment : RealmFragment(), RowRepresentableDelegate { } } - override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { - if (fromAction) { + override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) { + if (tag == 1) { Toast.makeText(requireContext(), "Action for row: $row", Toast.LENGTH_SHORT).show() return } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt index 55c42bf9..38f82096 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt @@ -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) { SettingRow.BANKROLL_REPORT -> BankrollActivity.newInstance(requireContext()) SettingRow.TOP_10 -> Top10Activity.newInstance(requireContext()) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListFragment.kt index d8e34e67..92f9946b 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListFragment.kt @@ -49,7 +49,7 @@ open class BottomSheetListFragment : BottomSheetFragment(), LiveRowRepresentable 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) dismiss() @@ -61,7 +61,7 @@ open class BottomSheetListFragment : BottomSheetFragment(), LiveRowRepresentable // dismiss() // } // } - super.onRowSelected(position, row, fromAction) + super.onRowSelected(position, row, tag) } /** diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListGameFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListGameFragment.kt index 4b025bbe..7370be6b 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListGameFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListGameFragment.kt @@ -25,7 +25,7 @@ class BottomSheetListGameFragment : BottomSheetListFragment() { initUI() } - override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { + override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) { this.viewModel.realmData?.let { val selectedData = it[position] selectedData?.let { data -> diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetMultiSelectionFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetMultiSelectionFragment.kt index 06574fba..4d97619f 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetMultiSelectionFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetMultiSelectionFragment.kt @@ -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) } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetStaticListFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetStaticListFragment.kt index 8ffb0bb0..537eb1c7 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetStaticListFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetStaticListFragment.kt @@ -33,12 +33,12 @@ class BottomSheetStaticListFragment : BottomSheetFragment(), StaticRowRepresenta 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.onRowValueChanged() // this.delegate.onRowValueChanged(row, this.row) dismiss() - super.onRowSelected(position, row, fromAction) + super.onRowSelected(position, row, tag) } /** diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetTableSizeGridFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetTableSizeGridFragment.kt index b20bcdce..32106335 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetTableSizeGridFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetTableSizeGridFragment.kt @@ -57,7 +57,7 @@ class BottomSheetTableSizeGridFragment : BottomSheetFragment(), StaticRowReprese 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.onRowValueChanged() dismiss() diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/BankrollDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/BankrollDataFragment.kt index 6ebb912c..4d26f858 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/BankrollDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/BankrollDataFragment.kt @@ -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) { BankrollRow.CURRENCY -> CurrenciesActivity.newInstanceForResult(this@BankrollDataFragment, RequestCode.CURRENCY.value ) BankrollRow.REFRESH_RATE -> refreshRate() - else -> super.onRowSelected(position, row, fromAction) + else -> super.onRowSelected(position, row, tag) } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/CustomFieldDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/CustomFieldDataFragment.kt index 2a46cb58..1f804c41 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/CustomFieldDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/CustomFieldDataFragment.kt @@ -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) { is CustomFieldEntry -> { val data = customField.editDescriptors(row) BottomSheetFragment.create(fragmentManager, row, this, data, isClearable = false, isDeletable = true) } - else -> super.onRowSelected(position, row, fromAction) + else -> super.onRowSelected(position, row, tag) } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/EditableDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/EditableDataFragment.kt index 2a4bd647..f31018f0 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/EditableDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/EditableDataFragment.kt @@ -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)) } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/LocationDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/LocationDataFragment.kt index 0bcb762a..02e0b6d3 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/LocationDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/LocationDataFragment.kt @@ -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) placesForRows[row]?.place?.let { place -> location.setPlace(place) saveData() return } - super.onRowSelected(position, row, fromAction) + super.onRowSelected(position, row, tag) } override fun onRowValueChanged(value: Any?, row: RowRepresentable) { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/PlayerDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/PlayerDataFragment.kt index 268804a2..e66806e5 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/PlayerDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/PlayerDataFragment.kt @@ -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) { PlayerRow.IMAGE -> openPictureDialog() is Comment -> { val data = arrayListOf(RowRepresentableEditDescriptor(row.content)) BottomSheetFragment.create(fragmentManager, row, this, data, isClearable = false, isDeletable = true) } - else -> super.onRowSelected(position, row, fromAction) + else -> super.onRowSelected(position, row, tag) } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/TransactionDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/TransactionDataFragment.kt index 78518743..563827be 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/TransactionDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/TransactionDataFragment.kt @@ -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) { TransactionRow.DATE -> DateTimePickerManager.create( requireContext(), @@ -87,7 +87,7 @@ class TransactionDataFragment : EditableDataFragment(), StaticRowRepresentableDa onlyDate = true, isClearable = false ) - else -> super.onRowSelected(position, row, fromAction) + else -> super.onRowSelected(position, row, tag) } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ComposableTableReportFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ComposableTableReportFragment.kt index f550272f..4da7ca01 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ComposableTableReportFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ComposableTableReportFragment.kt @@ -168,7 +168,7 @@ open class ComposableTableReportFragment : RealmFragment(), StaticRowRepresentab // RowRepresentableDelegate - override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { + override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) { if (this.hasComputationInProgress) { return 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 660bf1c0..8558d058 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 @@ -260,7 +260,7 @@ enum class RowViewType(private var layoutRes: Int) { if (row.imageClickable == true) { imageView.addCircleRipple() imageView.setOnClickListener { - adapter.delegate?.onRowSelected(position, row, true) + adapter.delegate?.onRowSelected(position, row, 1) } } else { imageView.setBackgroundResource(0) @@ -697,7 +697,7 @@ enum class RowViewType(private var layoutRes: Int) { button.text = itemView.context.getString(it) } 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(R.id.amountEditText)?.let { editText -> - adapter.delegate?.onRowSelected(position, row) + editText.setOnFocusChangeListener { v, hasFocus -> + adapter.delegate?.onRowSelected(position, row, 2) + } } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/handhistory/KeyboardActionView.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/handhistory/KeyboardActionView.kt index 87e9effa..37fda3de 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/handhistory/KeyboardActionView.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/handhistory/KeyboardActionView.kt @@ -44,7 +44,7 @@ class KeyboardActionView(context: Context) : AbstractKeyboardView(context), 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) } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/handhistory/StreetHeader.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/handhistory/StreetCardHeader.kt similarity index 53% rename from app/src/main/java/net/pokeranalytics/android/ui/view/handhistory/StreetHeader.kt rename to app/src/main/java/net/pokeranalytics/android/ui/view/handhistory/StreetCardHeader.kt index 7c54d649..bf98a768 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/handhistory/StreetHeader.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/handhistory/StreetCardHeader.kt @@ -1,12 +1,16 @@ 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.realm.handhistory.Card -import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowViewType -class StreetHeader(var street: Street, var cards: List, var potSize: Double) : RowRepresentable { +class StreetCardHeader(var street: Street, var cards: List, var potSize: Double) : HandHistoryRow { override val viewType: Int = RowViewType.ROW_HAND_STREET.ordinal + override fun isValid(): Boolean { + return cards.size == street.totalBoardCards + } + } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/viewmodel/HandHistoryViewModel.kt b/app/src/main/java/net/pokeranalytics/android/ui/viewmodel/HandHistoryViewModel.kt index 7b540286..ef39c38c 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/viewmodel/HandHistoryViewModel.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/viewmodel/HandHistoryViewModel.kt @@ -10,6 +10,8 @@ import net.pokeranalytics.android.ui.view.handhistory.HandHistoryKeyboard class HandHistoryViewModel : ViewModel() { + var isEdited = true + var currentActionIndex: Int? = null var builder = MutableLiveData()