From d6abbb3579bedc0c515ce2b79e21759c6b6fa5a7 Mon Sep 17 00:00:00 2001 From: Laurent Date: Tue, 25 Feb 2020 11:03:20 +0100 Subject: [PATCH] Split blinds row into ante + BB ante --- .../modules/handhistory/HandHistoryAdapter.kt | 127 ++++++++---------- .../handhistory/HandHistoryFragment.kt | 4 + .../handhistory/model/HandHistoryViewModel.kt | 70 ++++++---- .../main/res/layout/row_hhsettings_blinds.xml | 42 +++--- 4 files changed, 131 insertions(+), 112 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryAdapter.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryAdapter.kt index 50c47e1c..c5cb7929 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryAdapter.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryAdapter.kt @@ -15,7 +15,6 @@ import com.google.android.material.chip.Chip import kotlinx.android.synthetic.main.row_hand_action.view.* import kotlinx.android.synthetic.main.row_hand_cards.view.* import kotlinx.android.synthetic.main.row_hand_player_summary.view.* -import kotlinx.android.synthetic.main.row_hhsettings_blinds.view.* import kotlinx.android.synthetic.main.row_hhsettings_player_setup.view.* import kotlinx.android.synthetic.main.row_hhsettings_straddle.view.* import net.pokeranalytics.android.R @@ -42,11 +41,12 @@ enum class HandRowType(var layoutRes: Int) : ViewIdentifier, RowRepresentable, H ACTION(R.layout.row_hand_action), PLAYER_SUMMARY(R.layout.row_hand_player_summary), STREET(R.layout.row_hand_cards), - BLINDS(R.layout.row_hhsettings_blinds), STRADDLE(R.layout.row_hhsettings_straddle), COMMENT(R.layout.row_hhsettings_comments), PLAYER_NUMBER(R.layout.row_title_value), - PLAYER_SETUP(R.layout.row_hhsettings_player_setup) + PLAYER_SETUP(R.layout.row_hhsettings_player_setup), + ANTE(R.layout.row_title_value), + BIG_BLIND_ANTE(R.layout.row_title_switch) ; override val viewType: Int = this.ordinal @@ -55,59 +55,47 @@ enum class HandRowType(var layoutRes: Int) : ViewIdentifier, RowRepresentable, H get() { return this.ordinal } override fun tagsForCompletion(): List { - return when (this) { - BLINDS -> listOf(0, 1) - else -> listOf() - } +// return when (this) { +// BLINDS -> listOf(0, 1) +// else -> listOf() +// } + return listOf() } override fun isFieldNeedsInput(tag: Int, handHistory: HandHistory): Boolean { - return when (this) { - BLINDS -> { - when (tag) { - 0 -> (handHistory.smallBlind == null) - 1 -> (handHistory.bigBlind == null) - else -> false - } - } - else -> false - } - } - -// override fun tagForCompletion( -// handHistory: HandHistory, -// minTag: Int? -// ): Int? { // return when (this) { // BLINDS -> { -// when { -// handHistory.smallBlind == null -> 0 -// handHistory.bigBlind == null -> 1 -// else -> null +// when (tag) { +// 0 -> (handHistory.smallBlind == null) +// 1 -> (handHistory.bigBlind == null) +// else -> false // } // } -// else -> null +// else -> false // } -// } + return false + } override fun keyboardForTag(tag: Int): HHKeyboard? { - return when (this) { - BLINDS -> HHKeyboard.AMOUNT - else -> throw PAIllegalStateException("unmanaged tag $tag") - } +// return when (this) { +// BLINDS -> HHKeyboard.AMOUNT +// else -> throw PAIllegalStateException("unmanaged tag $tag") +// } + throw PAIllegalStateException("unmanaged tag $tag") } override fun amountForTag(handHistory: HandHistory, tag: Int): Double? { - return when (this) { - BLINDS -> { - when (tag) { - 0 -> handHistory.smallBlind - 1 -> handHistory.bigBlind - else -> null - } - } - else -> null - } +// return when (this) { +// BLINDS -> { +// when (tag) { +// 0 -> handHistory.smallBlind +// 1 -> handHistory.bigBlind +// else -> null +// } +// } +// else -> null +// } + return null } override val bottomSheetType: BottomSheetType @@ -115,6 +103,7 @@ enum class HandRowType(var layoutRes: Int) : ViewIdentifier, RowRepresentable, H return when(this) { PLAYER_NUMBER -> BottomSheetType.GRID COMMENT -> BottomSheetType.EDIT_TEXT_MULTI_LINES + ANTE -> BottomSheetType.NUMERIC_TEXT else -> BottomSheetType.NONE } } @@ -124,6 +113,8 @@ enum class HandRowType(var layoutRes: Int) : ViewIdentifier, RowRepresentable, H return when(this) { PLAYER_NUMBER -> R.string.number_of_players COMMENT -> R.string.comment + ANTE -> R.string.ante + BIG_BLIND_ANTE -> R.string.bb_ante_option else -> null } } @@ -160,11 +151,12 @@ class HandHistoryAdapter( HandRowType.ACTION -> RowHandAction(layout) HandRowType.STREET -> RowHandStreet(layout) HandRowType.PLAYER_SUMMARY -> RowHandPlayerSummary(layout) - HandRowType.BLINDS -> RowHandBlinds(layout) +// HandRowType.BLINDS -> RowHandBlinds(layout) HandRowType.STRADDLE -> RowHandStraddle(layout) HandRowType.PLAYER_SETUP -> RowHandPlayerSetup(layout) HandRowType.COMMENT -> RowViewHolder(layout) - HandRowType.PLAYER_NUMBER -> RowViewHolder(layout) + HandRowType.PLAYER_NUMBER, HandRowType.ANTE, + HandRowType.BIG_BLIND_ANTE -> RowViewHolder(layout) } } @@ -304,28 +296,28 @@ class HandHistoryAdapter( } - inner class RowHandBlinds(itemView: View) : RowHandHolder(itemView) { - - init { - itemView.smallBlindEditText.tag = 0 - itemView.bigBlindEditText.tag = 1 - itemView.anteEditText.tag = 2 - - setClickListener(itemView.smallBlindEditText) - setClickListener(itemView.bigBlindEditText) - setClickListener(itemView.anteEditText) - - } - - // sb, bb, ante, bb ante - - override fun onBind(position: Int, row: RowRepresentable, adapter: RecyclerAdapter) { - super.onBind(position, row, adapter) - - configureEditTexts(0..2, position, row, adapter) - } - - } +// inner class RowHandBlinds(itemView: View) : RowHandHolder(itemView) { +// +// init { +//// itemView.smallBlindEditText.tag = 0 +//// itemView.bigBlindEditText.tag = 1 +// itemView.anteEditText.tag = 0 +// +//// setClickListener(itemView.smallBlindEditText) +//// setClickListener(itemView.bigBlindEditText) +// setClickListener(itemView.anteEditText) +// +// } +// +// // sb, bb, ante, bb ante +// +// override fun onBind(position: Int, row: RowRepresentable, adapter: RecyclerAdapter) { +// super.onBind(position, row, adapter) +// +// configureEditTexts(0, position, row, adapter) +// } +// +// } inner class RowHandStraddle(itemView: View) : RowHandHolder(itemView) { @@ -586,7 +578,6 @@ class HandHistoryAdapter( // Settings itemView.settings_container.visibility = if (state == PlayerSetupRow.State.POSITIONS_ONLY) View.GONE else View.VISIBLE - configureCardsLayout(itemView.psHandLayout) // configureEditTexts(PlayerSetupRow.Tag.HAND.ordinal, position, row, adapter) configureEditTexts(PlayerSetupRow.Tag.STACK.ordinal, position, row, adapter) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryFragment.kt index 613e959e..15906ddf 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryFragment.kt @@ -307,6 +307,10 @@ class HandHistoryFragment : RealmFragment(), RowRepresentableDelegate, KeyboardL this.model.setNumberOfPlayers(value as Int) this.handHistoryAdapter.notifyDataSetChanged() } + HandRowType.ANTE -> { + this.model.setAnte(value as Double? ?: 0.0) + this.handHistoryAdapter.notifyItemChanged(this.indexOfRowRepresentable(row)) + } is ComputedAction -> { this.model.currentAmount = value as String } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/HandHistoryViewModel.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/HandHistoryViewModel.kt index 73949057..7d4ee75e 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/HandHistoryViewModel.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/HandHistoryViewModel.kt @@ -1,6 +1,7 @@ package net.pokeranalytics.android.ui.modules.handhistory.model import android.content.Context +import android.text.InputType import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import io.realm.Realm @@ -15,6 +16,7 @@ import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource import net.pokeranalytics.android.ui.modules.handhistory.HandRowType import net.pokeranalytics.android.ui.modules.handhistory.views.CardCentralizer import net.pokeranalytics.android.ui.view.RowRepresentable +import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor import net.pokeranalytics.android.ui.view.rowrepresentable.CustomizableRowRepresentable import net.pokeranalytics.android.util.extensions.formatted import timber.log.Timber @@ -215,7 +217,11 @@ class HandHistoryViewModel : ViewModel(), RowRepresentableDataSource, CardCentra rows.add(CustomizableRowRepresentable(customViewType = HandRowType.HEADER, resId = R.string.settings, value = "")) rows.add(HandRowType.PLAYER_NUMBER) - rows.add(HandRowType.BLINDS) + rows.add(HandRowType.ANTE) + + if (this.handSetup.type != Session.Type.CASH_GAME) { + rows.add(HandRowType.BIG_BLIND_ANTE) + } val positions = Position.positionsPerPlayers(this.handHistory.numberOfPlayers) if (this.handSetup.type != Session.Type.TOURNAMENT && this.isNew && positions.size > 2) { // don't allow any straddle changes if not new, or if it's a headsup @@ -406,19 +412,19 @@ class HandHistoryViewModel : ViewModel(), RowRepresentableDataSource, CardCentra val row = this.rowRepresentables[this.currentSelection.index] when (row) { - HandRowType.BLINDS -> { - when (this.currentSelection.tag) { - 0 -> { - this.handHistory.smallBlind = amount - this.sortedActions.updateBlinds() - } - 1 -> { - this.handHistory.bigBlind = amount - this.sortedActions.updateBlinds() - } - 2 -> this.handHistory.ante = amount ?: 0.0 - } - } +// HandRowType.BLINDS -> { +// when (this.currentSelection.tag) { +// 0 -> { +// this.handHistory.smallBlind = amount +// this.sortedActions.updateBlinds() +// } +// 1 -> { +// this.handHistory.bigBlind = amount +// this.sortedActions.updateBlinds() +// } +// 2 -> this.handHistory.ante = amount ?: 0.0 +// } +// } is ComputedAction -> { amount?.let { this.sortedActions.setAmount(this.actionIndexForSelection, amount) @@ -623,7 +629,7 @@ class HandHistoryViewModel : ViewModel(), RowRepresentableDataSource, CardCentra override fun isFocusable(position: Int, row: RowRepresentable, tag: Int): Boolean { return when (row) { - HandRowType.BLINDS -> this.isSelected(position, row, tag) +// HandRowType.BLINDS -> this.isSelected(position, row, tag) is ComputedAction -> { val isSelected = this.isSelected(position, row, tag) when (tag) { @@ -650,14 +656,15 @@ class HandHistoryViewModel : ViewModel(), RowRepresentableDataSource, CardCentra val string = when (row) { HandRowType.PLAYER_NUMBER -> this.handHistory.numberOfPlayers.toString() HandRowType.COMMENT -> this.handHistory.comment ?: context.getString(R.string.comment) - HandRowType.BLINDS -> { - when (tag) { - 0 -> this.handHistory.smallBlind?.formatted() - 1 -> this.handHistory.bigBlind?.formatted() - 2 -> this.handHistory.ante.formatted() - else -> throw PAIllegalStateException("Unmanaged case with $row, tag = $tag") - } - } + HandRowType.ANTE -> this.handHistory.ante.formatted() +// HandRowType.BLINDS -> { +// when (tag) { +// 0 -> this.handHistory.smallBlind?.formatted() +// 1 -> this.handHistory.bigBlind?.formatted() +// 2 -> this.handHistory.ante.formatted() +// else -> throw PAIllegalStateException("Unmanaged case with $row, tag = $tag") +// } +// } is ComputedAction -> row.action.formattedAmount is StreetCardsRow -> row.cardsForTag(tag)?.formatted(context) is PlayerSetupRow -> { @@ -701,6 +708,19 @@ class HandHistoryViewModel : ViewModel(), RowRepresentableDataSource, CardCentra return listOf() } + override fun boolForRow(row: RowRepresentable): Boolean { + return when (row) { + HandRowType.BIG_BLIND_ANTE -> this.handHistory.bigBlindAnte + else -> throw PAIllegalStateException("undefined boolForRow for $row") + } + } + + override fun editDescriptors(row: RowRepresentable): ArrayList? { + return when (row) { + HandRowType.ANTE -> arrayListOf(RowRepresentableEditDescriptor(defaultValue = this.handHistory.ante, inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_DECIMAL)) + else -> null + } + } /*** * Defines the positions having straddled and @@ -800,4 +820,8 @@ class HandHistoryViewModel : ViewModel(), RowRepresentableDataSource, CardCentra return this.sortedActions.positions.elementAt(positionIndex) } + fun setAnte(ante: Double) { + this.handSetup.ante = ante + } + } \ No newline at end of file diff --git a/app/src/main/res/layout/row_hhsettings_blinds.xml b/app/src/main/res/layout/row_hhsettings_blinds.xml index ba319e9a..f545b231 100644 --- a/app/src/main/res/layout/row_hhsettings_blinds.xml +++ b/app/src/main/res/layout/row_hhsettings_blinds.xml @@ -4,27 +4,27 @@ android:layout_width="match_parent" android:layout_height="wrap_content"> - + + + + + + + + + + - + + + + + + + + + +