diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/handhistory/Card.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/handhistory/Card.kt index f942fb4f..01e5f82e 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/handhistory/Card.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/handhistory/Card.kt @@ -56,6 +56,8 @@ open class Card : RealmObject() { companion object { + val undefined: Value = Value(null) + val values: List by lazy { val v = mutableListOf(Value(null)) // null for x (2..14).forEach { v.add(Value(it)) } 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 5fedae9b..d237a434 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 @@ -186,7 +186,7 @@ class HandHistoryFragment : RealmFragment(), RowRepresentableDelegate, KeyboardL initKeyboardDefaultHeight() this.keyboard.keyboardListener = this - this.keyboard.setCardCentralizer(this.model) +// this.keyboard.setCardCentralizer(this.model) } override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/CardsRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/CardsRow.kt index 42e66a64..27a4daea 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/CardsRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/CardsRow.kt @@ -66,6 +66,19 @@ abstract class CardsRow : HandHistoryRow { } } + /*** + * Returns the card used for setting a selected suit + * = the last if its suit is null, no card otherwise + */ + fun lastCardForSelectedSuit(): Card? { + val lastCard = lastCard() + return if (lastCard?.suit == null) { + lastCard + } else { + null + } + } + protected open fun lastCard() : Card? { return this.cardHolder?.cards?.lastOrNull() } 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 77198509..672ba927 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 @@ -511,9 +511,13 @@ class HandHistoryViewModel : ViewModel(), RowRepresentableDataSource, CardCentra * Adds a card with the selected [value] */ fun cardValueSelected(value: Card.Value) { - this.lastValue = value + val row = this.rowRepresentables[this.currentSelection.index] as CardsRow - row.valueSelected(value) + if (isValueAvailable(value)) { + row.valueSelected(value) + } else { + row.valueSelected(Card.Value.undefined) + } } /*** @@ -523,17 +527,19 @@ class HandHistoryViewModel : ViewModel(), RowRepresentableDataSource, CardCentra fun cardSuitSelected(suit: Card.Suit) { val row = this.rowRepresentables[this.currentSelection.index] as CardsRow - row.suitSelected(suit) - - // TODO do we want to store the information right now ? - + val card = row.lastCardForSelectedSuit() + if (card == null || isSuitAvailable(suit, card.value)) { + row.suitSelected(suit) + } else { + row.suitSelected(Card.Suit.UNDEFINED) + } } /*** * Deletes all the card of the selected street */ fun clearCards() { - this.lastValue = null +// this.lastValue = null val row = this.rowRepresentables[this.currentSelection.index] as CardsRow row.clear() } @@ -602,7 +608,7 @@ class HandHistoryViewModel : ViewModel(), RowRepresentableDataSource, CardCentra /*** * The value of the last chosen card */ - private var lastValue: Card.Value? = null +// private var lastValue: Card.Value? = null /*** * Returns true if the card [value] is available @@ -615,8 +621,8 @@ class HandHistoryViewModel : ViewModel(), RowRepresentableDataSource, CardCentra /*** * Returns true if the [suit] is available for the given [value] */ - override fun isSuitAvailable(suit: Card.Suit, value: Card.Value?): Boolean { - val usedValues = this.usedCards.filter { it.value == value?.value } + override fun isSuitAvailable(suit: Card.Suit, value: Int?): Boolean { + val usedValues = this.usedCards.filter { it.value == value } return !usedValues.map { it.suit }.contains(suit) } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/views/CardSuitAdapter.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/views/CardSuitAdapter.kt index 1640bfd5..05cfffd3 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/views/CardSuitAdapter.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/views/CardSuitAdapter.kt @@ -21,7 +21,7 @@ class CardSuitAdapter(private var keyboardListener: KeyboardListener) : override var dataSource: RowRepresentableDataSource = this override var delegate: RowRepresentableDelegate? = this - var centralizer: CardCentralizer? = null +// var centralizer: CardCentralizer? = null private val suits = Card.Suit.displaySuits @@ -61,9 +61,9 @@ class CardSuitAdapter(private var keyboardListener: KeyboardListener) : keyboardListener.cardSuitSelected(this.suits[position]) } - override fun isEnabled(row: RowRepresentable, tag: Int): Boolean { - val suit = row as Card.Suit - return this.centralizer?.isSuitAvailable(suit, null) ?: true - } +// override fun isEnabled(row: RowRepresentable, tag: Int): Boolean { +// val suit = row as Card.Suit +// return this.centralizer?.isSuitAvailable(suit, null) ?: true +// } } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/views/CardValueAdapter.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/views/CardValueAdapter.kt index e657b30a..85a15634 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/views/CardValueAdapter.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/views/CardValueAdapter.kt @@ -21,7 +21,7 @@ class CardValueAdapter(var keyboardListener: KeyboardListener) : override var dataSource: RowRepresentableDataSource = this override var delegate: RowRepresentableDelegate? = this - var centralizer: CardCentralizer? = null +// var centralizer: CardCentralizer? = null override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { val layout = LayoutInflater.from(parent.context).inflate(R.layout.row_cell, parent, false) @@ -59,9 +59,9 @@ class CardValueAdapter(var keyboardListener: KeyboardListener) : keyboardListener.cardValueSelected(Card.Value.values[position]) } - override fun isEnabled(row: RowRepresentable, tag: Int): Boolean { - val value = row as Card.Value - return this.centralizer?.isValueAvailable(value) ?: true - } +// override fun isEnabled(row: RowRepresentable, tag: Int): Boolean { +// val value = row as Card.Value +// return this.centralizer?.isValueAvailable(value) ?: true +// } } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/views/KeyboardCardView.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/views/KeyboardCardView.kt index 20c5a33a..840ad05e 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/views/KeyboardCardView.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/views/KeyboardCardView.kt @@ -13,7 +13,7 @@ import net.pokeranalytics.android.model.realm.handhistory.Card interface CardCentralizer { fun isValueAvailable(value: Card.Value): Boolean - fun isSuitAvailable(suit: Card.Suit, value: Card.Value?): Boolean + fun isSuitAvailable(suit: Card.Suit, value: Int?): Boolean } class KeyboardCardView(context: Context) : AbstractKeyboardView(context) { @@ -70,9 +70,9 @@ class KeyboardCardView(context: Context) : AbstractKeyboardView(context) { } - fun setCardCentralizer(centralizer: CardCentralizer) { - this.cardValueAdapter.centralizer = centralizer - this.cardSuitAdapter.centralizer = centralizer - } +// fun setCardCentralizer(centralizer: CardCentralizer) { +// this.cardValueAdapter.centralizer = centralizer +// this.cardSuitAdapter.centralizer = centralizer +// } } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/views/KeyboardContainer.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/views/KeyboardContainer.kt index c26d3476..120e5686 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/views/KeyboardContainer.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/views/KeyboardContainer.kt @@ -105,9 +105,9 @@ class KeyboardContainer : FrameLayout { actionKeyboard.setAvailableActions(availableActions) } - fun setCardCentralizer(centralizer: CardCentralizer) { - val cardKeyboard = this.keyboards[HHKeyboard.CARD] as KeyboardCardView - cardKeyboard.setCardCentralizer(centralizer) - } +// fun setCardCentralizer(centralizer: CardCentralizer) { +// val cardKeyboard = this.keyboards[HHKeyboard.CARD] as KeyboardCardView +// cardKeyboard.setCardCentralizer(centralizer) +// } } \ No newline at end of file