Update PIN switch keyboard button to be more straightforward.
Addresses #12866.
This commit is contained in:
parent
2dd0221680
commit
8ae115028e
13 changed files with 132 additions and 64 deletions
|
@ -7,7 +7,6 @@ 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 android.widget.Toast
|
||||
|
@ -18,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.button.MaterialButton
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import org.thoughtcrime.securesms.R
|
||||
|
@ -208,15 +208,15 @@ 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
|
||||
val changeKeyboard = DialogCompat.requireViewById(dialog, R.id.reminder_change_keyboard) as MaterialButton
|
||||
|
||||
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)
|
||||
changeKeyboard.setIconResource(PinKeyboardType.ALPHA_NUMERIC.iconResource)
|
||||
} else {
|
||||
pinEditText.inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD
|
||||
changeKeyboard.setText(R.string.PinRestoreEntryFragment_enter_numeric_pin)
|
||||
changeKeyboard.setIconResource(PinKeyboardType.NUMERIC.iconResource)
|
||||
}
|
||||
pinEditText.typeface = Typeface.DEFAULT
|
||||
}
|
||||
|
@ -230,11 +230,11 @@ class AccountSettingsFragment : DSLSettingsFragment(R.string.AccountSettingsFrag
|
|||
when (SignalStore.pinValues().keyboardType) {
|
||||
PinKeyboardType.NUMERIC -> {
|
||||
pinEditText.inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_VARIATION_PASSWORD
|
||||
changeKeyboard.setText(R.string.PinRestoreEntryFragment_enter_alphanumeric_pin)
|
||||
changeKeyboard.setIconResource(PinKeyboardType.ALPHA_NUMERIC.iconResource)
|
||||
}
|
||||
PinKeyboardType.ALPHA_NUMERIC -> {
|
||||
pinEditText.inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD
|
||||
changeKeyboard.setText(R.string.PinRestoreEntryFragment_enter_numeric_pin)
|
||||
changeKeyboard.setIconResource(PinKeyboardType.NUMERIC.iconResource)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -14,12 +14,15 @@ import android.view.inputmethod.EditorInfo;
|
|||
import android.widget.EditText;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.DrawableRes;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.StringRes;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
|
||||
import com.google.android.material.button.MaterialButton;
|
||||
|
||||
import org.thoughtcrime.securesms.LoggingFragment;
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.keyvalue.SignalStore;
|
||||
|
@ -36,7 +39,7 @@ public abstract class BaseKbsPinFragment<ViewModel extends BaseKbsPinViewModel>
|
|||
private LearnMoreTextView description;
|
||||
private EditText input;
|
||||
private TextView label;
|
||||
private TextView keyboardToggle;
|
||||
private MaterialButton keyboardToggle;
|
||||
private CircularProgressMaterialButton confirm;
|
||||
private ViewModel viewModel;
|
||||
|
||||
|
@ -69,6 +72,7 @@ public abstract class BaseKbsPinFragment<ViewModel extends BaseKbsPinViewModel>
|
|||
viewModel.getKeyboard().observe(getViewLifecycleOwner(), keyboardType -> {
|
||||
updateKeyboard(keyboardType);
|
||||
keyboardToggle.setText(resolveKeyboardToggleText(keyboardType));
|
||||
keyboardToggle.setIconResource(keyboardType.getOther().getIconResource());
|
||||
});
|
||||
|
||||
description.setOnLinkClickListener(v -> {
|
||||
|
|
|
@ -2,6 +2,8 @@ package org.thoughtcrime.securesms.lock.v2;
|
|||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import org.thoughtcrime.securesms.R;
|
||||
|
||||
public enum PinKeyboardType {
|
||||
NUMERIC("numeric"),
|
||||
ALPHA_NUMERIC("alphaNumeric");
|
||||
|
@ -30,4 +32,9 @@ public enum PinKeyboardType {
|
|||
|
||||
return NUMERIC;
|
||||
}
|
||||
|
||||
public int getIconResource() {
|
||||
if (this == ALPHA_NUMERIC) return R.drawable.ic_keyboard_24;
|
||||
else return R.drawable.ic_number_pad_conversation_filter_24;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,12 +14,12 @@ import android.widget.Toast;
|
|||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.StringRes;
|
||||
import androidx.autofill.HintConstants;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
import androidx.navigation.Navigation;
|
||||
|
||||
import com.google.android.material.button.MaterialButton;
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
|
||||
import org.signal.core.util.logging.Log;
|
||||
|
@ -52,7 +52,7 @@ public class PinRestoreEntryFragment extends LoggingFragment {
|
|||
private View skipButton;
|
||||
private CircularProgressMaterialButton pinButton;
|
||||
private TextView errorLabel;
|
||||
private TextView keyboardToggle;
|
||||
private MaterialButton keyboardToggle;
|
||||
private PinRestoreViewModel viewModel;
|
||||
|
||||
@Override
|
||||
|
@ -102,12 +102,12 @@ public class PinRestoreEntryFragment extends LoggingFragment {
|
|||
keyboardToggle.setOnClickListener((v) -> {
|
||||
PinKeyboardType keyboardType = getPinEntryKeyboardType();
|
||||
|
||||
keyboardToggle.setIconResource(keyboardType.getIconResource());
|
||||
|
||||
updateKeyboard(keyboardType.getOther());
|
||||
keyboardToggle.setText(resolveKeyboardToggleText(keyboardType));
|
||||
});
|
||||
|
||||
PinKeyboardType keyboardType = getPinEntryKeyboardType().getOther();
|
||||
keyboardToggle.setText(resolveKeyboardToggleText(keyboardType));
|
||||
keyboardToggle.setIconResource(getPinEntryKeyboardType().getOther().getIconResource());
|
||||
}
|
||||
|
||||
private void initViewModel() {
|
||||
|
@ -260,14 +260,6 @@ public class PinRestoreEntryFragment extends LoggingFragment {
|
|||
pinEntry.getText().clear();
|
||||
}
|
||||
|
||||
private @StringRes static int resolveKeyboardToggleText(@NonNull PinKeyboardType keyboard) {
|
||||
if (keyboard == PinKeyboardType.ALPHA_NUMERIC) {
|
||||
return R.string.PinRestoreEntryFragment_enter_alphanumeric_pin;
|
||||
} else {
|
||||
return R.string.PinRestoreEntryFragment_enter_numeric_pin;
|
||||
}
|
||||
}
|
||||
|
||||
private void enableAndFocusPinEntry() {
|
||||
pinEntry.setEnabled(true);
|
||||
pinEntry.setFocusable(true);
|
||||
|
|
|
@ -10,10 +10,11 @@ import android.widget.TextView;
|
|||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.CallSuper;
|
||||
import androidx.annotation.DrawableRes;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.StringRes;
|
||||
|
||||
import com.google.android.material.button.MaterialButton;
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
|
||||
import org.signal.core.util.logging.Log;
|
||||
|
@ -49,7 +50,7 @@ public abstract class BaseRegistrationLockFragment extends LoggingFragment {
|
|||
private View forgotPin;
|
||||
protected CircularProgressMaterialButton pinButton;
|
||||
private TextView errorLabel;
|
||||
private TextView keyboardToggle;
|
||||
private MaterialButton keyboardToggle;
|
||||
private long timeRemaining;
|
||||
|
||||
private BaseRegistrationViewModel viewModel;
|
||||
|
@ -101,11 +102,11 @@ public abstract class BaseRegistrationLockFragment extends LoggingFragment {
|
|||
PinKeyboardType keyboardType = getPinEntryKeyboardType();
|
||||
|
||||
updateKeyboard(keyboardType.getOther());
|
||||
keyboardToggle.setText(resolveKeyboardToggleText(keyboardType));
|
||||
keyboardToggle.setIconResource(keyboardType.getIconResource());
|
||||
});
|
||||
|
||||
PinKeyboardType keyboardType = getPinEntryKeyboardType().getOther();
|
||||
keyboardToggle.setText(resolveKeyboardToggleText(keyboardType));
|
||||
keyboardToggle.setIconResource(keyboardType.getIconResource());
|
||||
|
||||
disposables.bindTo(getViewLifecycleOwner().getLifecycle());
|
||||
viewModel = getViewModel();
|
||||
|
@ -274,14 +275,6 @@ public abstract class BaseRegistrationLockFragment extends LoggingFragment {
|
|||
pinEntry.getText().clear();
|
||||
}
|
||||
|
||||
private @StringRes static int resolveKeyboardToggleText(@NonNull PinKeyboardType keyboard) {
|
||||
if (keyboard == PinKeyboardType.ALPHA_NUMERIC) {
|
||||
return R.string.RegistrationLockFragment__enter_alphanumeric_pin;
|
||||
} else {
|
||||
return R.string.RegistrationLockFragment__enter_numeric_pin;
|
||||
}
|
||||
}
|
||||
|
||||
private void enableAndFocusPinEntry() {
|
||||
pinEntry.setEnabled(true);
|
||||
pinEntry.setFocusable(true);
|
||||
|
|
|
@ -5,7 +5,6 @@ import android.text.InputType
|
|||
import android.view.View
|
||||
import android.view.inputmethod.EditorInfo
|
||||
import android.widget.Toast
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.navigation.fragment.findNavController
|
||||
|
@ -74,13 +73,12 @@ class ReRegisterWithPinFragment : LoggingFragment(R.layout.pin_restore_entry_fra
|
|||
}
|
||||
|
||||
binding.pinRestoreKeyboardToggle.setOnClickListener {
|
||||
val keyboardType: PinKeyboardType = getPinEntryKeyboardType()
|
||||
updateKeyboard(keyboardType.other)
|
||||
binding.pinRestoreKeyboardToggle.setText(resolveKeyboardToggleText(keyboardType))
|
||||
val currentKeyboardType: PinKeyboardType = getPinEntryKeyboardType()
|
||||
updateKeyboard(currentKeyboardType.other)
|
||||
binding.pinRestoreKeyboardToggle.setIconResource(currentKeyboardType.iconResource)
|
||||
}
|
||||
|
||||
val keyboardType: PinKeyboardType = getPinEntryKeyboardType().other
|
||||
binding.pinRestoreKeyboardToggle.setText(resolveKeyboardToggleText(keyboardType))
|
||||
binding.pinRestoreKeyboardToggle.setIconResource(getPinEntryKeyboardType().other.iconResource)
|
||||
|
||||
reRegisterViewModel.updateTokenData(registrationViewModel.keyBackupCurrentToken)
|
||||
|
||||
|
@ -212,15 +210,6 @@ class ReRegisterWithPinFragment : LoggingFragment(R.layout.pin_restore_entry_fra
|
|||
binding.pinRestorePinInput.text?.clear()
|
||||
}
|
||||
|
||||
@StringRes
|
||||
private fun resolveKeyboardToggleText(keyboard: PinKeyboardType): Int {
|
||||
return if (keyboard == PinKeyboardType.ALPHA_NUMERIC) {
|
||||
R.string.RegistrationLockFragment__enter_alphanumeric_pin
|
||||
} else {
|
||||
R.string.RegistrationLockFragment__enter_numeric_pin
|
||||
}
|
||||
}
|
||||
|
||||
private fun onNeedHelpClicked() {
|
||||
val message = if (reRegisterViewModel.isLocalVerification) R.string.ReRegisterWithPinFragment_need_help_local else R.string.PinRestoreEntryFragment_your_pin_is_a_d_digit_code
|
||||
|
||||
|
|
|
@ -1,5 +1,43 @@
|
|||
<vector android:autoMirrored="true" android:height="24dp"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@color/signal_icon_tint_primary" android:pathData="M20,4.5A1.538,1.538 0,0 1,21.5 6L21.5,17.5A1.538,1.538 0,0 1,20 19L4,19a1.538,1.538 0,0 1,-1.5 -1.5L2.5,6A1.538,1.538 0,0 1,4 4.5L20,4.5M20,3L4,3A2.946,2.946 0,0 0,1 6L1,17.5a2.946,2.946 0,0 0,3 3L20,20.5a2.946,2.946 0,0 0,3 -3L23,6A2.946,2.946 0,0 0,20 3ZM16.5,15h-9v2h9ZM7.5,12h0A1.538,1.538 0,0 0,6 10.5L6,10.5A1.538,1.538 0,0 0,4.5 12h0A1.538,1.538 0,0 0,6 13.5L6,13.5A1.538,1.538 0,0 0,7.5 12ZM11.5,12h0A1.538,1.538 0,0 0,10 10.5h0A1.538,1.538 0,0 0,8.5 12h0A1.538,1.538 0,0 0,10 13.5h0A1.538,1.538 0,0 0,11.5 12ZM15.5,12h0A1.538,1.538 0,0 0,14 10.5h0A1.538,1.538 0,0 0,12.5 12h0A1.538,1.538 0,0 0,14 13.5h0A1.538,1.538 0,0 0,15.5 12ZM19.5,12h0A1.538,1.538 0,0 0,18 10.5h0A1.538,1.538 0,0 0,16.5 12h0A1.538,1.538 0,0 0,18 13.5h0A1.538,1.538 0,0 0,19.5 12ZM7.5,8h0A1.538,1.538 0,0 0,6 6.5L6,6.5A1.538,1.538 0,0 0,4.5 8h0A1.538,1.538 0,0 0,6 9.5L6,9.5A1.538,1.538 0,0 0,7.5 8ZM11.5,8h0A1.538,1.538 0,0 0,10 6.5h0A1.538,1.538 0,0 0,8.5 8h0A1.538,1.538 0,0 0,10 9.5h0A1.538,1.538 0,0 0,11.5 8ZM15.5,8h0A1.538,1.538 0,0 0,14 6.5h0A1.538,1.538 0,0 0,12.5 8h0A1.538,1.538 0,0 0,14 9.5h0A1.538,1.538 0,0 0,15.5 8ZM19.5,8h0A1.538,1.538 0,0 0,18 6.5h0A1.538,1.538 0,0 0,16.5 8h0A1.538,1.538 0,0 0,18 9.5h0A1.538,1.538 0,0 0,19.5 8Z"/>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="#000000"
|
||||
android:pathData="M12,9.75C12.69,9.75 13.25,9.19 13.25,8.5C13.25,7.81 12.69,7.25 12,7.25C11.31,7.25 10.75,7.81 10.75,8.5C10.75,9.19 11.31,9.75 12,9.75Z" />
|
||||
<path
|
||||
android:fillColor="#000000"
|
||||
android:pathData="M13.25,12C13.25,12.69 12.69,13.25 12,13.25C11.31,13.25 10.75,12.69 10.75,12C10.75,11.31 11.31,10.75 12,10.75C12.69,10.75 13.25,11.31 13.25,12Z" />
|
||||
<path
|
||||
android:fillColor="#000000"
|
||||
android:pathData="M8.5,9.75C9.19,9.75 9.75,9.19 9.75,8.5C9.75,7.81 9.19,7.25 8.5,7.25C7.81,7.25 7.25,7.81 7.25,8.5C7.25,9.19 7.81,9.75 8.5,9.75Z" />
|
||||
<path
|
||||
android:fillColor="#000000"
|
||||
android:pathData="M9.75,12C9.75,12.69 9.19,13.25 8.5,13.25C7.81,13.25 7.25,12.69 7.25,12C7.25,11.31 7.81,10.75 8.5,10.75C9.19,10.75 9.75,11.31 9.75,12Z" />
|
||||
<path
|
||||
android:fillColor="#000000"
|
||||
android:pathData="M15.5,9.75C16.19,9.75 16.75,9.19 16.75,8.5C16.75,7.81 16.19,7.25 15.5,7.25C14.81,7.25 14.25,7.81 14.25,8.5C14.25,9.19 14.81,9.75 15.5,9.75Z" />
|
||||
<path
|
||||
android:fillColor="#000000"
|
||||
android:pathData="M16.75,12C16.75,12.69 16.19,13.25 15.5,13.25C14.81,13.25 14.25,12.69 14.25,12C14.25,11.31 14.81,10.75 15.5,10.75C16.19,10.75 16.75,11.31 16.75,12Z" />
|
||||
<path
|
||||
android:fillColor="#000000"
|
||||
android:pathData="M19,9.75C19.69,9.75 20.25,9.19 20.25,8.5C20.25,7.81 19.69,7.25 19,7.25C18.31,7.25 17.75,7.81 17.75,8.5C17.75,9.19 18.31,9.75 19,9.75Z" />
|
||||
<path
|
||||
android:fillColor="#000000"
|
||||
android:pathData="M20.25,12C20.25,12.69 19.69,13.25 19,13.25C18.31,13.25 17.75,12.69 17.75,12C17.75,11.31 18.31,10.75 19,10.75C19.69,10.75 20.25,11.31 20.25,12Z" />
|
||||
<path
|
||||
android:fillColor="#000000"
|
||||
android:pathData="M5,9.75C5.69,9.75 6.25,9.19 6.25,8.5C6.25,7.81 5.69,7.25 5,7.25C4.31,7.25 3.75,7.81 3.75,8.5C3.75,9.19 4.31,9.75 5,9.75Z" />
|
||||
<path
|
||||
android:fillColor="#000000"
|
||||
android:pathData="M6.25,12C6.25,12.69 5.69,13.25 5,13.25C4.31,13.25 3.75,12.69 3.75,12C3.75,11.31 4.31,10.75 5,10.75C5.69,10.75 6.25,11.31 6.25,12Z" />
|
||||
<path
|
||||
android:fillColor="#000000"
|
||||
android:pathData="M8.25,15C7.698,15 7.25,15.448 7.25,16C7.25,16.552 7.698,17 8.25,17H15.75C16.302,17 16.75,16.552 16.75,16C16.75,15.448 16.302,15 15.75,15H8.25Z" />
|
||||
<path
|
||||
android:fillColor="#000000"
|
||||
android:fillType="evenOdd"
|
||||
android:pathData="M17.737,3.625H6.263C5.454,3.625 4.794,3.625 4.258,3.669C3.704,3.714 3.206,3.811 2.741,4.047C2.012,4.419 1.419,5.012 1.047,5.741C0.811,6.206 0.714,6.704 0.669,7.258C0.625,7.794 0.625,8.454 0.625,9.263V14.737C0.625,15.546 0.625,16.206 0.669,16.742C0.714,17.296 0.811,17.794 1.047,18.259C1.419,18.988 2.012,19.581 2.741,19.953C3.206,20.19 3.704,20.286 4.258,20.331C4.794,20.375 5.454,20.375 6.263,20.375H17.737C18.546,20.375 19.206,20.375 19.742,20.331C20.296,20.286 20.794,20.19 21.259,19.953C21.988,19.581 22.581,18.988 22.953,18.259C23.19,17.794 23.286,17.296 23.331,16.742C23.375,16.206 23.375,15.546 23.375,14.737V9.263C23.375,8.454 23.375,7.794 23.331,7.258C23.286,6.704 23.19,6.206 22.953,5.741C22.581,5.012 21.988,4.419 21.259,4.047C20.794,3.811 20.296,3.714 19.742,3.669C19.206,3.625 18.546,3.625 17.737,3.625ZM3.535,5.607C3.712,5.516 3.955,5.449 4.401,5.413C4.857,5.376 5.445,5.375 6.3,5.375H17.7C18.555,5.375 19.143,5.376 19.599,5.413C20.045,5.449 20.288,5.516 20.465,5.607C20.865,5.81 21.19,6.135 21.393,6.535C21.484,6.712 21.551,6.955 21.587,7.401C21.624,7.857 21.625,8.445 21.625,9.3V14.7C21.625,15.554 21.624,16.143 21.587,16.599C21.551,17.045 21.484,17.288 21.393,17.465C21.19,17.865 20.865,18.19 20.465,18.393C20.288,18.484 20.045,18.551 19.599,18.587C19.143,18.624 18.555,18.625 17.7,18.625H6.3C5.445,18.625 4.857,18.624 4.401,18.587C3.955,18.551 3.712,18.484 3.535,18.393C3.135,18.19 2.81,17.865 2.607,17.465C2.516,17.288 2.449,17.045 2.413,16.599C2.376,16.143 2.375,15.554 2.375,14.7V9.3C2.375,8.445 2.376,7.857 2.413,7.401C2.449,6.955 2.516,6.712 2.607,6.535C2.81,6.135 3.135,5.81 3.535,5.607Z" />
|
||||
</vector>
|
||||
|
|
|
@ -1,5 +1,36 @@
|
|||
<vector android:autoMirrored="true" android:height="24dp"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@color/signal_icon_tint_primary" android:pathData="M8.5,4.75h0A1.8,1.8 0,0 0,6.75 3h0A1.8,1.8 0,0 0,5 4.75L5,4.75A1.8,1.8 0,0 0,6.75 6.5h0A1.8,1.8 0,0 0,8.5 4.75ZM13.75,4.75h0A1.8,1.8 0,0 0,12 3h0a1.8,1.8 0,0 0,-1.75 1.75h0A1.8,1.8 0,0 0,12 6.5h0A1.8,1.8 0,0 0,13.75 4.75ZM19,4.75h0A1.8,1.8 0,0 0,17.25 3h0A1.8,1.8 0,0 0,15.5 4.75h0A1.8,1.8 0,0 0,17.25 6.5h0A1.8,1.8 0,0 0,19 4.75ZM8.5,9.75h0A1.8,1.8 0,0 0,6.75 8h0A1.8,1.8 0,0 0,5 9.75L5,9.75A1.8,1.8 0,0 0,6.75 11.5h0A1.8,1.8 0,0 0,8.5 9.75ZM13.75,9.75h0A1.8,1.8 0,0 0,12 8h0a1.8,1.8 0,0 0,-1.75 1.75h0A1.8,1.8 0,0 0,12 11.5h0A1.8,1.8 0,0 0,13.75 9.75ZM19,9.75h0A1.8,1.8 0,0 0,17.25 8h0A1.8,1.8 0,0 0,15.5 9.75h0a1.8,1.8 0,0 0,1.75 1.75h0A1.8,1.8 0,0 0,19 9.75ZM8.5,14.75h0A1.8,1.8 0,0 0,6.75 13h0A1.8,1.8 0,0 0,5 14.75L5,14.75A1.8,1.8 0,0 0,6.75 16.5h0A1.8,1.8 0,0 0,8.5 14.75ZM13.75,14.75h0A1.8,1.8 0,0 0,12 13h0a1.8,1.8 0,0 0,-1.75 1.75h0A1.8,1.8 0,0 0,12 16.5h0A1.8,1.8 0,0 0,13.75 14.75ZM19,14.75h0A1.8,1.8 0,0 0,17.25 13h0a1.8,1.8 0,0 0,-1.75 1.75h0a1.8,1.8 0,0 0,1.75 1.75h0A1.8,1.8 0,0 0,19 14.75ZM13.75,19.75h0A1.8,1.8 0,0 0,12 18h0a1.8,1.8 0,0 0,-1.75 1.75h0A1.8,1.8 0,0 0,12 21.5h0A1.8,1.8 0,0 0,13.75 19.75Z"/>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="#000000"
|
||||
android:pathData="M8.375,4.75C8.375,5.647 7.647,6.375 6.75,6.375C5.853,6.375 5.125,5.647 5.125,4.75C5.125,3.853 5.853,3.125 6.75,3.125C7.647,3.125 8.375,3.853 8.375,4.75Z" />
|
||||
<path
|
||||
android:fillColor="#000000"
|
||||
android:pathData="M12,6.375C12.898,6.375 13.625,5.647 13.625,4.75C13.625,3.853 12.898,3.125 12,3.125C11.102,3.125 10.375,3.853 10.375,4.75C10.375,5.647 11.102,6.375 12,6.375Z" />
|
||||
<path
|
||||
android:fillColor="#000000"
|
||||
android:pathData="M17.25,6.375C18.147,6.375 18.875,5.647 18.875,4.75C18.875,3.853 18.147,3.125 17.25,3.125C16.353,3.125 15.625,3.853 15.625,4.75C15.625,5.647 16.353,6.375 17.25,6.375Z" />
|
||||
<path
|
||||
android:fillColor="#000000"
|
||||
android:pathData="M12,21.375C12.898,21.375 13.625,20.647 13.625,19.75C13.625,18.853 12.898,18.125 12,18.125C11.102,18.125 10.375,18.853 10.375,19.75C10.375,20.647 11.102,21.375 12,21.375Z" />
|
||||
<path
|
||||
android:fillColor="#000000"
|
||||
android:pathData="M13.625,14.75C13.625,15.648 12.898,16.375 12,16.375C11.102,16.375 10.375,15.648 10.375,14.75C10.375,13.852 11.102,13.125 12,13.125C12.898,13.125 13.625,13.852 13.625,14.75Z" />
|
||||
<path
|
||||
android:fillColor="#000000"
|
||||
android:pathData="M17.25,16.375C18.147,16.375 18.875,15.648 18.875,14.75C18.875,13.852 18.147,13.125 17.25,13.125C16.353,13.125 15.625,13.852 15.625,14.75C15.625,15.648 16.353,16.375 17.25,16.375Z" />
|
||||
<path
|
||||
android:fillColor="#000000"
|
||||
android:pathData="M8.375,14.75C8.375,15.648 7.647,16.375 6.75,16.375C5.853,16.375 5.125,15.648 5.125,14.75C5.125,13.852 5.853,13.125 6.75,13.125C7.647,13.125 8.375,13.852 8.375,14.75Z" />
|
||||
<path
|
||||
android:fillColor="#000000"
|
||||
android:pathData="M12,11.375C12.898,11.375 13.625,10.648 13.625,9.75C13.625,8.853 12.898,8.125 12,8.125C11.102,8.125 10.375,8.853 10.375,9.75C10.375,10.648 11.102,11.375 12,11.375Z" />
|
||||
<path
|
||||
android:fillColor="#000000"
|
||||
android:pathData="M18.875,9.75C18.875,10.648 18.147,11.375 17.25,11.375C16.353,11.375 15.625,10.648 15.625,9.75C15.625,8.853 16.353,8.125 17.25,8.125C18.147,8.125 18.875,8.853 18.875,9.75Z" />
|
||||
<path
|
||||
android:fillColor="#000000"
|
||||
android:pathData="M6.75,11.375C7.647,11.375 8.375,10.648 8.375,9.75C8.375,8.853 7.647,8.125 6.75,8.125C5.853,8.125 5.125,8.853 5.125,9.75C5.125,10.648 5.853,11.375 6.75,11.375Z" />
|
||||
</vector>
|
||||
|
|
|
@ -102,6 +102,9 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
app:icon="@drawable/ic_keyboard_24"
|
||||
app:iconGravity="textStart"
|
||||
app:iconPadding="8dp"
|
||||
app:layout_constraintBottom_toTopOf="@id/edit_kbs_pin_confirm"
|
||||
app:layout_constraintTop_toBottomOf="@id/edit_kbs_pin_input_label"
|
||||
app:layout_constraintVertical_bias="0.0"
|
||||
|
|
|
@ -78,11 +78,14 @@
|
|||
style="@style/Signal.Widget.Button.Large.Secondary"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/RegistrationLockFragment__switch_keyboard"
|
||||
app:icon="@drawable/ic_keyboard_24"
|
||||
app:iconGravity="textStart"
|
||||
app:iconPadding="8dp"
|
||||
app:layout_constraintBottom_toTopOf="@id/kbs_lock_pin_confirm"
|
||||
app:layout_constraintTop_toBottomOf="@id/kbs_lock_forgot_pin"
|
||||
app:layout_constraintVertical_bias="0.0"
|
||||
tools:layout_editor_absoluteX="32dp"
|
||||
tools:text="Create Alphanumeric Pin" />
|
||||
tools:layout_editor_absoluteX="32dp" />
|
||||
|
||||
<org.thoughtcrime.securesms.util.views.CircularProgressMaterialButton
|
||||
android:id="@+id/kbs_lock_pin_confirm"
|
||||
|
|
|
@ -52,7 +52,10 @@
|
|||
style="@style/Signal.Widget.Button.Medium.Secondary"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/PinRestoreEntryFragment_enter_alphanumeric_pin"
|
||||
android:text="@string/RegistrationLockFragment__switch_keyboard"
|
||||
app:icon="@drawable/ic_keyboard_24"
|
||||
app:iconGravity="textStart"
|
||||
app:iconPadding="8dp"
|
||||
app:layout_constraintTop_toBottomOf="@+id/reminder_disable_pin"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
|
|
@ -97,10 +97,13 @@
|
|||
style="@style/Signal.Widget.Button.Large.Secondary"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/RegistrationLockFragment__switch_keyboard"
|
||||
app:icon="@drawable/ic_keyboard_24"
|
||||
app:iconGravity="textStart"
|
||||
app:iconPadding="8dp"
|
||||
app:layout_constraintTop_toBottomOf="@id/pin_restore_forgot_pin"
|
||||
app:layout_constraintVertical_bias="0.0"
|
||||
tools:layout_editor_absoluteX="32dp"
|
||||
tools:text="Create Alphanumeric Pin" />
|
||||
tools:layout_editor_absoluteX="32dp" />
|
||||
|
||||
<org.thoughtcrime.securesms.util.views.CircularProgressMaterialButton
|
||||
android:id="@+id/pin_restore_pin_confirm"
|
||||
|
|
|
@ -1629,8 +1629,8 @@
|
|||
<item quantity="other">You have %1$d attempts remaining. If you run out of attempts, you can create a new PIN. You can register and use your account but you\'ll lose some saved settings like your profile information.</item>
|
||||
</plurals>
|
||||
<string name="PinRestoreEntryFragment_signal_registration_need_help_with_pin">Signal Registration - Need Help with PIN for Android</string>
|
||||
<string name="PinRestoreEntryFragment_enter_alphanumeric_pin">Enter alphanumeric PIN</string>
|
||||
<string name="PinRestoreEntryFragment_enter_numeric_pin">Enter numeric PIN</string>
|
||||
<!-- Button label to prompt the user to switch between an alphanumeric and numeric-only keyboards -->
|
||||
<string name="PinRestoreEntryFragment_switch_keyboard">Switch keyboard</string>
|
||||
|
||||
<!-- PinRestoreLockedFragment -->
|
||||
<string name="PinRestoreLockedFragment_create_your_pin">Create your PIN</string>
|
||||
|
@ -3449,7 +3449,9 @@
|
|||
|
||||
<!-- BaseKbsPinFragment -->
|
||||
<string name="BaseKbsPinFragment__next">Next</string>
|
||||
<!-- Button label to prompt them to create a password ("PIN") using numbers and letters rather than only numbers. -->
|
||||
<string name="BaseKbsPinFragment__create_alphanumeric_pin">Create alphanumeric PIN</string>
|
||||
<!-- Button label to prompt them to return to creating a numbers-only password ("PIN") -->
|
||||
<string name="BaseKbsPinFragment__create_numeric_pin">Create numeric PIN</string>
|
||||
<string name="BaseKbsPinFragment__learn_more_url" translatable="false">https://support.signal.org/hc/articles/360007059792</string>
|
||||
|
||||
|
@ -3511,8 +3513,8 @@
|
|||
<string name="RegistrationLockFragment__enter_the_pin_you_created">Enter the PIN you created for your account. This is different from your SMS verification code.</string>
|
||||
<!-- Info text shown above a pin entry text box describing what pin they should be entering. -->
|
||||
<string name="RegistrationLockFragment__enter_the_pin_you_created_for_your_account">Enter the PIN you created for your account.</string>
|
||||
<string name="RegistrationLockFragment__enter_alphanumeric_pin">Enter alphanumeric PIN</string>
|
||||
<string name="RegistrationLockFragment__enter_numeric_pin">Enter numeric PIN</string>
|
||||
<!-- Button label to prompt the user to switch between an alphanumeric and numeric-only keyboards -->
|
||||
<string name="RegistrationLockFragment__switch_keyboard">Switch keyboard</string>
|
||||
<string name="RegistrationLockFragment__incorrect_pin_try_again">Incorrect PIN. Try again.</string>
|
||||
<string name="RegistrationLockFragment__forgot_pin">Forgot PIN?</string>
|
||||
<string name="RegistrationLockFragment__incorrect_pin">Incorrect PIN</string>
|
||||
|
|
Loading…
Add table
Reference in a new issue