From 0c7d99f288d6004e844ebad93167964010497d2c Mon Sep 17 00:00:00 2001 From: Laurent Date: Tue, 19 Jul 2022 17:41:04 +0200 Subject: [PATCH] Fixes keyboard issues --- .../bottomsheet/BottomSheetStakesFragment.kt | 104 +++++---------- .../handhistory/views/AbstractKeyboardView.kt | 9 +- .../handhistory/views/KeyboardAmountView.kt | 26 ++-- .../ui/view/keyboard/StakesKeyboardView.kt | 5 +- app/src/main/res/layout/activity_new_data.xml | 118 +++++++++--------- .../main/res/layout/bottom_sheet_stakes.xml | 10 +- .../main/res/layout/view_keyboard_stakes.xml | 51 ++++---- 7 files changed, 155 insertions(+), 168 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetStakesFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetStakesFragment.kt index 60c6b70d..4b01b72e 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetStakesFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetStakesFragment.kt @@ -8,9 +8,10 @@ import android.view.View import android.view.ViewGroup import android.view.inputmethod.EditorInfo import android.view.inputmethod.InputMethodManager +import android.widget.EditText import androidx.core.widget.addTextChangedListener +import kotlinx.android.synthetic.main.view_keyboard_stakes.view.* import net.pokeranalytics.android.databinding.BottomSheetStakesBinding -import net.pokeranalytics.android.exceptions.PAIllegalStateException import net.pokeranalytics.android.exceptions.RowRepresentableEditDescriptorException import java.text.NumberFormat import java.text.ParseException @@ -39,20 +40,6 @@ class BottomSheetStakesFragment : BottomSheetFragment() { override fun onStart() { super.onStart() - -// binding.editText2.setTextIsSelectable(true) - -// binding.editText2.isFocusableInTouchMode = true -// binding.editText2.requestFocus() -// -// val mgr: InputMethodManager? = -// requireContext().getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager? -// mgr?.hideSoftInputFromWindow(binding.editText2.windowToken, InputMethodManager.SHOW_FORCED) - - -// binding.editText2.findFocus() - - } /** @@ -62,12 +49,17 @@ class BottomSheetStakesFragment : BottomSheetFragment() { // this.viewModel.isEditingBlinds = this.viewModel.row == SessionRow.BLINDS } - private fun focusBlindsAndHideKeyboard() { - binding.blindsEditText.requestFocus() + private fun focusEditTextAndHideKeyboard(editText: EditText) { + + editText.requestFocus() + + editText.onCreateInputConnection(EditorInfo())?.let { + binding.stakesKeyboard.inputConnection = it + } val mgr: InputMethodManager? = requireContext().getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager? - mgr?.hideSoftInputFromWindow(binding.blindsEditText.windowToken, InputMethodManager.SHOW_FORCED) + mgr?.hideSoftInputFromWindow(editText.windowToken, InputMethodManager.SHOW_FORCED) } @@ -89,7 +81,14 @@ class BottomSheetStakesFragment : BottomSheetFragment() { anteED.hintResId?.let { binding.anteEditText.hint = getString(it) } } - binding.anteEditText.inputType = anteED.inputType ?: InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_CAP_SENTENCES +// binding.anteEditText.inputType = anteED.inputType ?: InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_CAP_SENTENCES + + +// binding.anteKeyboard.toolbar.isVisible = false +// binding.anteKeyboard.visibility = View.GONE + + binding.anteEditText.setRawInputType(InputType.TYPE_CLASS_NUMBER) + binding.anteEditText.showSoftInputOnFocus = false // Blinds val blindsED = data[1] @@ -99,61 +98,36 @@ class BottomSheetStakesFragment : BottomSheetFragment() { blindsED.hintResId?.let { binding.blindsEditText.hint = getString(it) } } -// data[0].hintResId?.let { binding.anteEditText.hint = getString(it) } -// data[1].hintResId?.let { binding.blindsEditText.hint = getString(it) } - - - - - -// binding.editText2.setRawInputType(InputType.TYPE_CLASS_TEXT) //= InputType.TYPE_NULL // data[1].inputType ?: InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_CAP_SENTENCES -// binding.editText2.inputType = InputType.TYPE_NULL -// binding.editText2.setTextIsSelectable(false) -// editText.setTextIsSelectable(true) + binding.blindsEditText.onCreateInputConnection(EditorInfo())?.let { + binding.stakesKeyboard.inputConnection = it + } -// binding.editText2.isFocusableInTouchMode = false binding.blindsEditText.setRawInputType(InputType.TYPE_CLASS_NUMBER) -// binding.editText2.setTextIsSelectable(true) binding.blindsEditText.showSoftInputOnFocus = false - binding.blindsEditText.setOnTouchListener { view, motionEvent -> + binding.blindsEditText.setOnTouchListener { _, _ -> - this.focusBlindsAndHideKeyboard() + this.focusEditTextAndHideKeyboard(binding.blindsEditText) -// binding.editText2.requestFocus() -// -// val mgr: InputMethodManager? = -// requireContext().getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager? -// mgr?.hideSoftInputFromWindow(binding.editText2.windowToken, InputMethodManager.SHOW_FORCED) +// binding.stakesKeyboard.visibility = View.VISIBLE + binding.stakesKeyboard.value_separator.visibility = View.VISIBLE return@setOnTouchListener true } -// binding.editText2.requestFocus() + binding.anteEditText.setOnTouchListener { _, _ -> - binding.blindsEditText.onCreateInputConnection(EditorInfo())?.let { - binding.stakesKeyboard.inputConnection = it +// binding.anteKeyboard.setInputConnection(binding.anteEditText) + this.focusEditTextAndHideKeyboard(binding.anteEditText) - } ?: throw PAIllegalStateException("No connection for editText") - -// if (this.model.valueAsHint) { -// -// this.model.ante?.let { -// binding.anteEditText.hint = NumberFormat.getInstance().format(it) -// } -// this.model.stringValue?.let { -// if (it.isNotBlank()) { -// binding.blindsEditText.hint = it -// } -// } -//// if (this.viewModel.stringValue?.isNotBlank()) { editText.hint = values[0] } -//// if (values[1].isNotBlank()) { editText2.hint = values[1] } -// } else { -// binding.anteEditText.setText(this.model.stringValue) -// binding.blindsEditText.setText(this.model.secondStringValue) -// } + binding.stakesKeyboard.value_separator.visibility = View.GONE + +// binding.stakesKeyboard.visibility = View.VISIBLE +// binding.stakesKeyboard.visibility = View.GONE + return@setOnTouchListener true + } binding.anteEditText.addTextChangedListener { text -> text?.let { @@ -171,16 +145,6 @@ class BottomSheetStakesFragment : BottomSheetFragment() { this.model.secondStringValue = it?.toString() } -// binding.editText2.setOnEditorActionListener { _, actionId, _ -> -// if (actionId == EditorInfo.IME_ACTION_DONE) { -// this.onRowValueChanged() -//// this.delegate.onRowValueChanged(values, row) -// dismiss() -// true -// } else { -// false -// } -// } } } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/views/AbstractKeyboardView.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/views/AbstractKeyboardView.kt index 2f3bc20a..6be5085d 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/views/AbstractKeyboardView.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/views/AbstractKeyboardView.kt @@ -1,9 +1,16 @@ package net.pokeranalytics.android.ui.modules.handhistory.views import android.content.Context +import android.util.AttributeSet import android.widget.FrameLayout -abstract class AbstractKeyboardView(context: Context) : FrameLayout(context) { +abstract class AbstractKeyboardView : FrameLayout { + + constructor(context: Context) : super(context) + + constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) + + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) var keyboardListener: KeyboardListener? = null set(value) { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/views/KeyboardAmountView.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/views/KeyboardAmountView.kt index c59c3a88..0aeb47c3 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/views/KeyboardAmountView.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/views/KeyboardAmountView.kt @@ -1,6 +1,7 @@ package net.pokeranalytics.android.ui.modules.handhistory.views import android.content.Context +import android.util.AttributeSet import android.view.LayoutInflater import android.view.inputmethod.EditorInfo import android.view.inputmethod.InputConnection @@ -19,6 +20,7 @@ import net.pokeranalytics.android.ui.view.GridSpacingItemDecoration import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.util.extensions.noGroupingFormatted +import timber.log.Timber import java.text.DecimalFormatSymbols class NumericKey : RowRepresentable { @@ -63,9 +65,16 @@ class NumericKey : RowRepresentable { } -class KeyboardAmountView(context: Context) : AbstractKeyboardView(context), +class KeyboardAmountView : AbstractKeyboardView, StaticRowRepresentableDataSource, RowRepresentableDelegate { + constructor(context: Context) : super(context) + + constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) + + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) + + /*** * The adapter managing the grid displayed keyboard */ @@ -144,16 +153,19 @@ class KeyboardAmountView(context: Context) : AbstractKeyboardView(context), // Timber.d("edit text = $editText") - this.editText = editText + this.setInputConnection(editText) editText.setText(amount?.noGroupingFormatted) editText.requestFocus() editText.isEnabled = true // avoid crashes due to input connection null + } + + fun setInputConnection(editText: EditText) { + this.editText = editText editText.onCreateInputConnection(EditorInfo())?.let { this.inputConnection = it - } ?: run { throw PAIllegalStateException("EditText did not return an input Connection") } - + } ?: throw PAIllegalStateException("EditText did not return an input Connection") } override fun adapterRows(): List { @@ -175,6 +187,8 @@ class KeyboardAmountView(context: Context) : AbstractKeyboardView(context), val key = row as NumericKey + Timber.d("this.inputConnection = ${this.inputConnection}") + this.inputConnection?.let { when { @@ -190,9 +204,7 @@ class KeyboardAmountView(context: Context) : AbstractKeyboardView(context), this.keyboardListener?.amountChanged(this.editText.text.toString()) - } ?: run { - throw PAIllegalStateException("Requires an input connection to handle key selections") - } + } ?: throw PAIllegalStateException("Requires an input connection to handle key selections") } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/keyboard/StakesKeyboardView.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/keyboard/StakesKeyboardView.kt index 5634ff1d..7db5b1ab 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/keyboard/StakesKeyboardView.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/keyboard/StakesKeyboardView.kt @@ -16,11 +16,8 @@ class StakesKeyboardView : LinearLayoutCompat { var inputConnection: InputConnection? = null - /** - * Constructors - */ constructor(context: Context) : super(context) { -// init() + init(context, null) } constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) { diff --git a/app/src/main/res/layout/activity_new_data.xml b/app/src/main/res/layout/activity_new_data.xml index a8480a06..d3cd6644 100644 --- a/app/src/main/res/layout/activity_new_data.xml +++ b/app/src/main/res/layout/activity_new_data.xml @@ -22,88 +22,88 @@ tools:visibility="visible"> + android:id="@+id/newTransaction" + android:layout_width="wrap_content" + android:layout_height="48dp" + android:layout_marginBottom="8dp" + android:background="?selectableItemBackground" + android:gravity="center_vertical" + android:orientation="horizontal" + android:paddingStart="16dp" + android:paddingEnd="16dp"> + android:layout_width="32dp" + android:layout_height="32dp" + android:tint="@color/green" + app:srcCompat="@drawable/add_transaction" /> + style="@style/PokerAnalyticsTheme.TextView.RowTitle" + android:layout_width="160dp" + android:layout_height="wrap_content" + android:layout_marginStart="16dp" + android:text="@string/new_operation" + app:layout_constraintEnd_toEndOf="parent" /> + android:id="@+id/new_hand_history" + android:layout_width="wrap_content" + android:layout_height="48dp" + android:background="?selectableItemBackground" + android:gravity="center_vertical" + android:orientation="horizontal" + android:paddingStart="16dp" + android:paddingEnd="16dp"> + android:layout_width="32dp" + android:layout_height="32dp" + android:tint="@color/green" + app:srcCompat="@drawable/add_hand" /> + style="@style/PokerAnalyticsTheme.TextView.RowTitle" + android:layout_width="160dp" + android:layout_height="wrap_content" + android:layout_marginStart="16dp" + android:text="@string/new_hand" /> + android:id="@+id/newTournament" + android:layout_width="wrap_content" + android:layout_height="48dp" + android:background="?selectableItemBackground" + android:gravity="center_vertical" + android:orientation="horizontal" + android:paddingStart="16dp" + android:paddingEnd="16dp"> + android:layout_width="32dp" + android:layout_height="32dp" + android:tint="@color/green" + app:srcCompat="@drawable/add_tournament" /> + style="@style/PokerAnalyticsTheme.TextView.RowTitle" + android:layout_width="160dp" + android:layout_height="wrap_content" + android:layout_marginStart="16dp" + android:text="@string/new_tournament" + app:layout_constraintEnd_toEndOf="parent" /> + app:srcCompat="@drawable/add_cash_game" /> diff --git a/app/src/main/res/layout/bottom_sheet_stakes.xml b/app/src/main/res/layout/bottom_sheet_stakes.xml index b1324e40..e123545d 100644 --- a/app/src/main/res/layout/bottom_sheet_stakes.xml +++ b/app/src/main/res/layout/bottom_sheet_stakes.xml @@ -51,7 +51,6 @@ app:layout_constraintTop_toTopOf="parent" tools:text="10" /> - + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/view_keyboard_stakes.xml b/app/src/main/res/layout/view_keyboard_stakes.xml index 5211a608..6ead7145 100644 --- a/app/src/main/res/layout/view_keyboard_stakes.xml +++ b/app/src/main/res/layout/view_keyboard_stakes.xml @@ -12,32 +12,32 @@ @@ -52,32 +52,32 @@ @@ -92,32 +92,32 @@ @@ -126,9 +126,8 @@