From 405d99fbe2f0c0b44419a51a400e580daa2922d5 Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Tue, 19 Apr 2022 11:47:09 -0400 Subject: [PATCH] Allow keyboard switch when disabling pin reminders. Fixes #9862 --- .../app/account/AccountSettingsFragment.kt | 33 ++++++++++++++----- .../layout/pin_disable_reminders_dialog.xml | 21 +++++++++--- 2 files changed, 41 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/account/AccountSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/account/AccountSettingsFragment.kt index d76a2ee67a..144505fc85 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/account/AccountSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/account/AccountSettingsFragment.kt @@ -7,6 +7,7 @@ import android.graphics.Typeface import android.text.InputType import android.util.DisplayMetrics import android.view.ViewGroup +import android.widget.Button import android.widget.EditText import android.widget.TextView import androidx.appcompat.app.AlertDialog @@ -16,6 +17,7 @@ import androidx.core.content.ContextCompat import androidx.core.view.ViewCompat import androidx.lifecycle.ViewModelProvider import androidx.navigation.Navigation +import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.snackbar.Snackbar import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.components.settings.DSLConfiguration @@ -31,8 +33,7 @@ import org.thoughtcrime.securesms.lock.v2.KbsConstants import org.thoughtcrime.securesms.lock.v2.PinKeyboardType import org.thoughtcrime.securesms.pin.RegistrationLockV2Dialog import org.thoughtcrime.securesms.recipients.Recipient -import org.thoughtcrime.securesms.util.ServiceUtil -import org.thoughtcrime.securesms.util.ThemeUtil +import org.thoughtcrime.securesms.util.ViewUtil import org.thoughtcrime.securesms.util.navigation.safeNavigate class AccountSettingsFragment : DSLSettingsFragment(R.string.AccountSettingsFragment__account) { @@ -145,7 +146,7 @@ class AccountSettingsFragment : DSLSettingsFragment(R.string.AccountSettingsFrag val context: Context = requireContext() val metrics: DisplayMetrics = resources.displayMetrics - val dialog: AlertDialog = AlertDialog.Builder(context, if (ThemeUtil.isDarkTheme(context)) R.style.Theme_Signal_AlertDialog_Dark_Cornered_ColoredAccent else R.style.Theme_Signal_AlertDialog_Light_Cornered_ColoredAccent) + val dialog: AlertDialog = MaterialAlertDialogBuilder(context) .setView(R.layout.pin_disable_reminders_dialog) .create() @@ -156,18 +157,34 @@ class AccountSettingsFragment : DSLSettingsFragment(R.string.AccountSettingsFrag val statusText = DialogCompat.requireViewById(dialog, R.id.reminder_disable_status) as TextView val cancelButton = DialogCompat.requireViewById(dialog, R.id.reminder_disable_cancel) val turnOffButton = DialogCompat.requireViewById(dialog, R.id.reminder_disable_turn_off) + val changeKeyboard = DialogCompat.requireViewById(dialog, R.id.reminder_change_keyboard) as Button + + changeKeyboard.setOnClickListener { + if (pinEditText.inputType and InputType.TYPE_CLASS_NUMBER == 0) { + pinEditText.inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_VARIATION_PASSWORD + changeKeyboard.setText(R.string.PinRestoreEntryFragment_enter_alphanumeric_pin) + } else { + pinEditText.inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD + changeKeyboard.setText(R.string.PinRestoreEntryFragment_enter_numeric_pin) + } + pinEditText.typeface = Typeface.DEFAULT + } pinEditText.post { - if (pinEditText.requestFocus()) { - ServiceUtil.getInputMethodManager(pinEditText.context).showSoftInput(pinEditText, 0) - } + ViewUtil.focusAndShowKeyboard(pinEditText) } ViewCompat.setAutofillHints(pinEditText, HintConstants.AUTOFILL_HINT_PASSWORD) when (SignalStore.pinValues().keyboardType) { - PinKeyboardType.NUMERIC -> pinEditText.inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_VARIATION_PASSWORD - PinKeyboardType.ALPHA_NUMERIC -> pinEditText.inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD + PinKeyboardType.NUMERIC -> { + pinEditText.inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_VARIATION_PASSWORD + changeKeyboard.setText(R.string.PinRestoreEntryFragment_enter_alphanumeric_pin) + } + PinKeyboardType.ALPHA_NUMERIC -> { + pinEditText.inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD + changeKeyboard.setText(R.string.PinRestoreEntryFragment_enter_numeric_pin) + } } pinEditText.addTextChangedListener(object : SimpleTextWatcher() { diff --git a/app/src/main/res/layout/pin_disable_reminders_dialog.xml b/app/src/main/res/layout/pin_disable_reminders_dialog.xml index 0734c317d0..f10b23c61b 100644 --- a/app/src/main/res/layout/pin_disable_reminders_dialog.xml +++ b/app/src/main/res/layout/pin_disable_reminders_dialog.xml @@ -46,6 +46,16 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/reminder_disable_description" /> + + -