Allow keyboard switch when disabling pin reminders.

Fixes #9862
fork-5.53.8
Cody Henthorne 2022-04-19 11:47:09 -04:00 zatwierdzone przez Alex Hart
rodzic 7b89687206
commit 405d99fbe2
2 zmienionych plików z 41 dodań i 13 usunięć

Wyświetl plik

@ -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() {

Wyświetl plik

@ -46,6 +46,16 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/reminder_disable_description" />
<com.google.android.material.button.MaterialButton
android:id="@+id/reminder_change_keyboard"
style="@style/Signal.Widget.Button.Medium.Secondary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/PinRestoreEntryFragment_enter_alphanumeric_pin"
app:layout_constraintTop_toBottomOf="@+id/reminder_disable_pin"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<TextView
android:id="@+id/reminder_disable_status"
android:layout_width="0dp"
@ -54,7 +64,7 @@
android:textColor="@color/core_red"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/reminder_disable_pin"
app:layout_constraintTop_toBottomOf="@id/reminder_change_keyboard"
tools:text="@string/preferences_app_protection__incorrect_pin_try_again" />
<androidx.constraintlayout.helper.widget.Flow
@ -62,14 +72,15 @@
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
app:constraint_referenced_ids="reminder_disable_cancel,reminder_disable_turn_off"
app:flow_horizontalGap="8dp"
app:flow_wrapMode="chain"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/reminder_disable_status" />
<Button
<com.google.android.material.button.MaterialButton
android:id="@+id/reminder_disable_cancel"
style="@style/Button.Borderless"
style="@style/Signal.Widget.Button.Dialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@android:string/cancel"
@ -79,9 +90,9 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/reminder_disable_turn_off" />
<Button
<com.google.android.material.button.MaterialButton
android:id="@+id/reminder_disable_turn_off"
style="@style/Button.Primary"
style="@style/Signal.Widget.Button.Dialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:enabled="false"