|
|
|
|
@ -11,11 +11,13 @@ import android.widget.EditText |
|
|
|
|
import androidx.core.view.isVisible |
|
|
|
|
import androidx.recyclerview.widget.RecyclerView |
|
|
|
|
import com.google.android.material.chip.Chip |
|
|
|
|
import kotlinx.android.synthetic.main.row_hand_action.view.* |
|
|
|
|
import kotlinx.android.synthetic.main.row_hhsettings_blinds.view.* |
|
|
|
|
import kotlinx.android.synthetic.main.row_hhsettings_player_setup.view.* |
|
|
|
|
import net.pokeranalytics.android.R |
|
|
|
|
import net.pokeranalytics.android.exceptions.PAIllegalStateException |
|
|
|
|
import net.pokeranalytics.android.model.handhistory.Street |
|
|
|
|
import net.pokeranalytics.android.model.realm.handhistory.HandHistory |
|
|
|
|
import net.pokeranalytics.android.model.realm.handhistory.formatted |
|
|
|
|
import net.pokeranalytics.android.ui.adapter.BindableHolder |
|
|
|
|
import net.pokeranalytics.android.ui.adapter.RecyclerAdapter |
|
|
|
|
@ -24,6 +26,7 @@ import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate |
|
|
|
|
import net.pokeranalytics.android.ui.extensions.px |
|
|
|
|
import net.pokeranalytics.android.ui.modules.handhistory.model.ComputedAction |
|
|
|
|
import net.pokeranalytics.android.ui.modules.handhistory.model.HHKeyboard |
|
|
|
|
import net.pokeranalytics.android.ui.modules.handhistory.model.HandHistoryRow |
|
|
|
|
import net.pokeranalytics.android.ui.modules.handhistory.model.StraddleRowRepresentable |
|
|
|
|
import net.pokeranalytics.android.ui.modules.handhistory.views.PlayerCardsRow |
|
|
|
|
import net.pokeranalytics.android.ui.modules.handhistory.views.StreetCardsRow |
|
|
|
|
@ -33,7 +36,7 @@ import net.pokeranalytics.android.ui.view.rowrepresentable.ViewIdentifier |
|
|
|
|
import timber.log.Timber |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
enum class HandRowType(var layoutRes: Int) : ViewIdentifier, RowRepresentable { |
|
|
|
|
enum class HandRowType(var layoutRes: Int) : ViewIdentifier, RowRepresentable, HandHistoryRow { |
|
|
|
|
HEADER(R.layout.row_header_value), |
|
|
|
|
ACTION(R.layout.row_hand_action), |
|
|
|
|
PLAYER_SUMMARY(R.layout.row_hand_player_summary), |
|
|
|
|
@ -48,6 +51,40 @@ enum class HandRowType(var layoutRes: Int) : ViewIdentifier, RowRepresentable { |
|
|
|
|
|
|
|
|
|
override val identifier: Int |
|
|
|
|
get() { return this.ordinal } |
|
|
|
|
|
|
|
|
|
override fun tagForCompletion(handHistory: HandHistory): Int? { |
|
|
|
|
return when (this) { |
|
|
|
|
BLINDS -> { |
|
|
|
|
when { |
|
|
|
|
handHistory.smallBlind == null -> 0 |
|
|
|
|
handHistory.bigBlind == null -> 1 |
|
|
|
|
else -> null |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else -> null |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun keyboardForTag(tag: Int): HHKeyboard { |
|
|
|
|
return when (this) { |
|
|
|
|
BLINDS -> HHKeyboard.AMOUNT |
|
|
|
|
else -> 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 |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
class HandHistoryAdapter( |
|
|
|
|
@ -95,6 +132,41 @@ class HandHistoryAdapter( |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
inner class RowHandStraddle(itemView: View) : RowHandHolder(itemView) { |
|
|
|
|
|
|
|
|
|
override fun onBind(position: Int, row: RowRepresentable, adapter: RecyclerAdapter) { |
|
|
|
|
super.onBind(position, row, adapter) |
|
|
|
|
|
|
|
|
|
val straddleRow = row as StraddleRowRepresentable |
|
|
|
|
|
|
|
|
|
itemView.positionsChipGroup.removeAllViews() |
|
|
|
|
straddleRow.positions.forEach { pos -> |
|
|
|
|
|
|
|
|
|
val chip = Chip(itemView.context) |
|
|
|
|
chip.id = View.generateViewId() |
|
|
|
|
// chip.tag = filter.id |
|
|
|
|
chip.text = pos.shortValue |
|
|
|
|
chip.chipStartPadding = 8f.px |
|
|
|
|
chip.chipEndPadding = 8f.px |
|
|
|
|
|
|
|
|
|
chip.isChecked = straddleRow.selectedPositions.contains(pos) |
|
|
|
|
chip.setOnClickListener { |
|
|
|
|
if (chip.isChecked) { |
|
|
|
|
val added = straddleRow.add(pos) |
|
|
|
|
chip.isChecked = added |
|
|
|
|
} else { |
|
|
|
|
straddleRow.remove(pos) |
|
|
|
|
} |
|
|
|
|
adapter.delegate?.onRowValueChanged(straddleRow.selectedPositions, row) |
|
|
|
|
} |
|
|
|
|
itemView.positionsChipGroup.addView(chip) |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
abstract inner class RowHandHolder(itemView: View) : RecyclerView.ViewHolder(itemView), BindableHolder { |
|
|
|
|
|
|
|
|
|
var currentPosition = 0 |
|
|
|
|
@ -119,6 +191,52 @@ class HandHistoryAdapter( |
|
|
|
|
this.currentPosition = position |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
protected fun toggleFocus(editText: EditText, focused: Boolean) { |
|
|
|
|
if (focused) { |
|
|
|
|
editText.requestFocus() |
|
|
|
|
} else { |
|
|
|
|
editText.clearFocus() |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
open fun editTextForTag(tag: Int) : EditText { |
|
|
|
|
throw PAIllegalStateException("Should overriden by class : $this") |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
inner class RowHandBlinds(itemView: View) : RowHandHolder(itemView) { |
|
|
|
|
|
|
|
|
|
// sb, bb, ante, bb ante |
|
|
|
|
|
|
|
|
|
override fun onBind(position: Int, row: RowRepresentable, adapter: RecyclerAdapter) { |
|
|
|
|
super.onBind(position, row, adapter) |
|
|
|
|
|
|
|
|
|
itemView.smallBlindEditText.setText(adapter.dataSource.stringForRow(row, 0)) |
|
|
|
|
itemView.bigBlindEditText.setText(adapter.dataSource.stringForRow(row, 1)) |
|
|
|
|
itemView.anteEditText.setText(adapter.dataSource.stringForRow(row, 2)) |
|
|
|
|
itemView.bbAnteSwitch.isChecked = adapter.dataSource.isSelected(position, row, 0) |
|
|
|
|
|
|
|
|
|
val sbSelected = adapter.dataSource.isSelected(position, row, 0) |
|
|
|
|
toggleFocus(itemView.smallBlindEditText, sbSelected) |
|
|
|
|
|
|
|
|
|
val bbSelected = adapter.dataSource.isSelected(position, row, 1) |
|
|
|
|
toggleFocus(itemView.bigBlindEditText, bbSelected) |
|
|
|
|
|
|
|
|
|
val anteSelected = adapter.dataSource.isSelected(position, row, 2) |
|
|
|
|
toggleFocus(itemView.anteEditText, anteSelected) |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun editTextForTag(tag: Int): EditText { |
|
|
|
|
return when (tag) { |
|
|
|
|
0 -> itemView.smallBlindEditText |
|
|
|
|
1 -> itemView.bigBlindEditText |
|
|
|
|
2 -> itemView.anteEditText |
|
|
|
|
else -> throw PAIllegalStateException("unmanaged tag $tag") |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
@ -161,6 +279,10 @@ class HandHistoryAdapter( |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun editTextForTag(tag: Int): EditText { |
|
|
|
|
return itemView.amountEditText |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun onBind(position: Int, row: RowRepresentable, adapter: RecyclerAdapter) { |
|
|
|
|
super.onBind(position, row, adapter) |
|
|
|
|
|
|
|
|
|
@ -365,57 +487,6 @@ class HandHistoryAdapter( |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
inner class RowHandBlinds(itemView: View) : RowHandHolder(itemView) { |
|
|
|
|
|
|
|
|
|
// sb, bb, ante, bb ante |
|
|
|
|
|
|
|
|
|
override fun onBind(position: Int, row: RowRepresentable, adapter: RecyclerAdapter) { |
|
|
|
|
super.onBind(position, row, adapter) |
|
|
|
|
|
|
|
|
|
itemView.smallBlindEditText.setText(adapter.dataSource.stringForRow(row, 0)) |
|
|
|
|
itemView.bigBlindEditText.setText(adapter.dataSource.stringForRow(row, 1)) |
|
|
|
|
itemView.anteEditText.setText(adapter.dataSource.stringForRow(row, 2)) |
|
|
|
|
itemView.bbAnteSwitch.isChecked = adapter.dataSource.isSelected(position, row, 0) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
inner class RowHandStraddle(itemView: View) : RowHandHolder(itemView) { |
|
|
|
|
|
|
|
|
|
override fun onBind(position: Int, row: RowRepresentable, adapter: RecyclerAdapter) { |
|
|
|
|
super.onBind(position, row, adapter) |
|
|
|
|
|
|
|
|
|
val straddleRow = row as StraddleRowRepresentable |
|
|
|
|
|
|
|
|
|
itemView.positionsChipGroup.removeAllViews() |
|
|
|
|
straddleRow.positions.forEach { pos -> |
|
|
|
|
|
|
|
|
|
val chip = Chip(itemView.context) |
|
|
|
|
chip.id = View.generateViewId() |
|
|
|
|
// chip.tag = filter.id |
|
|
|
|
chip.text = pos.shortValue |
|
|
|
|
chip.chipStartPadding = 8f.px |
|
|
|
|
chip.chipEndPadding = 8f.px |
|
|
|
|
|
|
|
|
|
chip.isChecked = straddleRow.selectedPositions.contains(pos) |
|
|
|
|
chip.setOnClickListener { |
|
|
|
|
if (chip.isChecked) { |
|
|
|
|
val added = straddleRow.add(pos) |
|
|
|
|
chip.isChecked = added |
|
|
|
|
} else { |
|
|
|
|
straddleRow.remove(pos) |
|
|
|
|
} |
|
|
|
|
adapter.delegate?.onRowValueChanged(straddleRow.selectedPositions, row) |
|
|
|
|
} |
|
|
|
|
itemView.positionsChipGroup.addView(chip) |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inner class RowHandPlayerSetup(itemView: View) : RowHandHolder(itemView) { |
|
|
|
|
|
|
|
|
|
override fun onBind(position: Int, row: RowRepresentable, adapter: RecyclerAdapter) { |
|
|
|
|
|