Fix issue with hand editor

realmasync
Laurent 2 years ago
parent 4da6b4bcdc
commit bd29ccfc11
  1. 66
      app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/editor/EditorAdapter.kt
  2. 2
      app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/editor/EditorFragment.kt
  3. 5
      app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/views/KeyboardAmountView.kt

@ -3,7 +3,10 @@ package net.pokeranalytics.android.ui.modules.handhistory.editor
import android.content.res.ColorStateList import android.content.res.ColorStateList
import android.text.InputType import android.text.InputType
import android.view.* import android.view.*
import android.widget.* import android.widget.Button
import android.widget.EditText
import android.widget.LinearLayout
import android.widget.TextView
import androidx.appcompat.widget.AppCompatButton import androidx.appcompat.widget.AppCompatButton
import androidx.core.view.isEmpty import androidx.core.view.isEmpty
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
@ -145,7 +148,7 @@ class EditorAdapter(
} }
} }
abstract inner class RowHandHolder(itemView: View) : RecyclerView.ViewHolder(itemView), BindableHolder { abstract inner class AbstractRowHandHolder(itemView: View) : RecyclerView.ViewHolder(itemView), BindableHolder {
private var currentPosition = 0 private var currentPosition = 0
@ -195,25 +198,25 @@ class EditorAdapter(
// hides soft input view, // hides soft input view,
// 22/06/22: does not seem useful as - I believe - manifest activity has android:windowSoftInputMode="stateAlwaysHidden" // 22/06/22: does not seem useful as - I believe - manifest activity has android:windowSoftInputMode="stateAlwaysHidden"
editText.setTextIsSelectable(true) editText.setTextIsSelectable(true)
//
// Enabled // // Enabled
val isEnabled = adapter.dataSource.isEnabled(row, tag) val isEnabled = adapter.dataSource.isEnabled(row, tag)
editText.isEnabled = isEnabled editText.isEnabled = isEnabled
//
// Text // // Text
val string = adapter.dataSource.charSequenceForRow(row, itemView.context, tag) val string = adapter.dataSource.charSequenceForRow(row, itemView.context, tag)
editText.setText(string) editText.setText(string)
//
// Focus // // Focus
val isFocused = adapter.dataSource.isSelected(position, row, tag) val isFocused = adapter.dataSource.isSelected(position, row, tag)
toggleFocus(editText, isFocused) // toggleFocus(editText, isFocused)
editText.isFocusable = adapter.dataSource.isFocusable(position, row, tag) // editText.isFocusable = adapter.dataSource.isFocusable(position, row, tag)
editText.isFocusableInTouchMode = adapter.dataSource.isFocusable(position, row, tag) // editText.isFocusableInTouchMode = adapter.dataSource.isFocusable(position, row, tag)
//
// Put cursor at the end // // Put cursor at the end
if (isFocused) { // if (isFocused) {
editText.setSelection(editText.text.length) // editText.setSelection(editText.text.length)
} // }
// Background // Background
setViewBackground(editText, isEnabled, isFocused) setViewBackground(editText, isEnabled, isFocused)
@ -242,7 +245,7 @@ class EditorAdapter(
editText.isFocusableInTouchMode = true editText.isFocusableInTouchMode = true
editText.setOnTouchListener { _, event -> editText.setOnTouchListener { view, event ->
if (event.action == MotionEvent.ACTION_UP) { if (event.action == MotionEvent.ACTION_UP) {
// Both are required, otherwise requestFocus() fails // Both are required, otherwise requestFocus() fails
@ -253,6 +256,8 @@ class EditorAdapter(
editTextSelected(editText) editTextSelected(editText)
} }
view.performClick()
return@setOnTouchListener true return@setOnTouchListener true
} }
@ -357,7 +362,7 @@ class EditorAdapter(
layout.setOnClickListener { layout.setOnClickListener {
if ((dataSource as EditorViewModel).isEdited) { if ((dataSource as EditorViewModel).isEdited) {
delegate?.onRowSelected(this.currentPosition, row, layout.tag as Int) delegate?.onRowSelected(this.currentPosition, row, layout.tag as Int)
setViewBackground(layout, true, true) setViewBackground(layout, isEnabled = true, isFocused = true)
} }
} }
@ -367,7 +372,7 @@ class EditorAdapter(
} }
inner class RowStraddleHolder(itemView: View) : RowHandHolder(itemView) { inner class RowStraddleHolder(itemView: View) : AbstractRowHandHolder(itemView) {
private var container: ViewGroup = itemView.findViewById(R.id.container) private var container: ViewGroup = itemView.findViewById(R.id.container)
private var positionsChipGroup: FlowLayout = itemView.findViewById(R.id.positionsChipGroup) private var positionsChipGroup: FlowLayout = itemView.findViewById(R.id.positionsChipGroup)
@ -409,7 +414,7 @@ class EditorAdapter(
} }
} }
inner class RowPositionHolder(itemView: View) : RowHandHolder(itemView) { inner class RowPositionHolder(itemView: View) : AbstractRowHandHolder(itemView) {
private var recycler: RecyclerView = itemView.findViewById(R.id.recycler) private var recycler: RecyclerView = itemView.findViewById(R.id.recycler)
private var positionAdapter: PositionAdapter = PositionAdapter() private var positionAdapter: PositionAdapter = PositionAdapter()
@ -445,7 +450,7 @@ class EditorAdapter(
} }
inner class RowActionReadHolder(itemView: View) : RowHandHolder(itemView) { inner class RowActionReadHolder(itemView: View) : AbstractRowHandHolder(itemView) {
private var playerImage: PlayerImageView = itemView.findViewById(R.id.player_image_rhar) private var playerImage: PlayerImageView = itemView.findViewById(R.id.player_image_rhar)
private var stackText: TextView = itemView.findViewById(R.id.stackText) private var stackText: TextView = itemView.findViewById(R.id.stackText)
@ -481,7 +486,7 @@ class EditorAdapter(
/** /**
* Display a hand action * Display a hand action
*/ */
inner class RowActionHolder(itemView: View) : RowHandHolder(itemView) { inner class RowActionHolder(itemView: View) : AbstractRowHandHolder(itemView) {
private var playerImage: PlayerImageView = itemView.findViewById(R.id.player_image_rha) private var playerImage: PlayerImageView = itemView.findViewById(R.id.player_image_rha)
private var actionButton: AppCompatButton = itemView.findViewById(R.id.actionButton) private var actionButton: AppCompatButton = itemView.findViewById(R.id.actionButton)
@ -503,18 +508,19 @@ class EditorAdapter(
amountEditText.inputType = InputType.TYPE_NUMBER_FLAG_DECIMAL amountEditText.inputType = InputType.TYPE_NUMBER_FLAG_DECIMAL
amountEditText.isFocusableInTouchMode = true amountEditText.isFocusableInTouchMode = true
amountEditText.setOnTouchListener { _, event -> amountEditText.setOnTouchListener { view, event ->
// Timber.d("=== event.action = ${event.action}") // Timber.d("=== event.action = ${event.action}")
if (event.action == MotionEvent.ACTION_UP) { if (event.action == MotionEvent.ACTION_UP) {
// Both are required, otherwise requestFocus() fails // Both are required, otherwise requestFocus() fails
amountEditText.isFocusable = true // amountEditText.isFocusable = true
amountEditText.isFocusableInTouchMode = true // amountEditText.isFocusableInTouchMode = true
//
amountEditText.requestFocus() // amountEditText.requestFocus()
editTextSelected(amountEditText) editTextSelected(amountEditText)
} }
view.performClick()
return@setOnTouchListener true return@setOnTouchListener true
} }
@ -568,7 +574,7 @@ class EditorAdapter(
/** /**
* Display a hand street * Display a hand street
*/ */
inner class RowStreetHolder(itemView: View) : RowHandHolder(itemView) { inner class RowStreetHolder(itemView: View) : AbstractRowHandHolder(itemView) {
private var cardsLayout: LinearLayout = itemView.findViewById(R.id.cardsLayout) private var cardsLayout: LinearLayout = itemView.findViewById(R.id.cardsLayout)
override fun onBind(position: Int, row: RowRepresentable, adapter: RecyclerAdapter) { override fun onBind(position: Int, row: RowRepresentable, adapter: RecyclerAdapter) {
@ -586,7 +592,7 @@ class EditorAdapter(
/** /**
* Display a hand action * Display a hand action
*/ */
inner class RowPlayerSummaryHolder(itemView: View) : RowHandHolder(itemView) { inner class RowPlayerSummaryHolder(itemView: View) : AbstractRowHandHolder(itemView) {
private var hpsPlayerImage: PlayerImageView = itemView.findViewById(R.id.hps_player_image) private var hpsPlayerImage: PlayerImageView = itemView.findViewById(R.id.hps_player_image)
private var handLayout: LinearLayout = itemView.findViewById(R.id.handLayout) private var handLayout: LinearLayout = itemView.findViewById(R.id.handLayout)
@ -613,7 +619,7 @@ class EditorAdapter(
} }
} }
abstract inner class AbstractRowPlayerSetup(itemView: View) : RowHandHolder(itemView) { abstract inner class AbstractRowPlayerSetup(itemView: View) : AbstractRowHandHolder(itemView) {
private var psHandLayout: LinearLayout = itemView.findViewById(R.id.ps_hand_layout) private var psHandLayout: LinearLayout = itemView.findViewById(R.id.ps_hand_layout)
private var positionButton: AppCompatButton = itemView.findViewById(R.id.position_button) private var positionButton: AppCompatButton = itemView.findViewById(R.id.position_button)

@ -317,7 +317,7 @@ class EditorFragment : RealmFragment(), RowRepresentableDelegate, KeyboardListen
val handRow = this.model.rowRepresentableForPosition(selection.index) as? HandHistoryRow val handRow = this.model.rowRepresentableForPosition(selection.index) as? HandHistoryRow
val holder = val holder =
binding.recyclerView.findViewHolderForAdapterPosition(selection.index) as? EditorAdapter.RowHandHolder binding.recyclerView.findViewHolderForAdapterPosition(selection.index) as? EditorAdapter.AbstractRowHandHolder
holder?.let { holder?.let {
val amountEditText = it.editTextForTag(selection.tag) val amountEditText = it.editTextForTag(selection.tag)
this.binding.keyboard.setAmountEditText( this.binding.keyboard.setAmountEditText(

@ -19,7 +19,6 @@ import net.pokeranalytics.android.ui.extensions.px
import net.pokeranalytics.android.ui.view.GridSpacingItemDecoration import net.pokeranalytics.android.ui.view.GridSpacingItemDecoration
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.util.extensions.noGroupingFormatted
import timber.log.Timber import timber.log.Timber
import java.text.DecimalFormatSymbols import java.text.DecimalFormatSymbols
@ -156,8 +155,8 @@ class KeyboardAmountView : AbstractKeyboardView,
this.setInputConnection(editText) this.setInputConnection(editText)
editText.setText(amount?.noGroupingFormatted) // editText.setText(amount?.noGroupingFormatted)
editText.requestFocus() // editText.requestFocus()
} }

Loading…
Cancel
Save