diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/Dialogs.java b/app/src/main/java/com/beemdevelopment/aegis/ui/Dialogs.java
index aa67dc09..bf47dfa2 100644
--- a/app/src/main/java/com/beemdevelopment/aegis/ui/Dialogs.java
+++ b/app/src/main/java/com/beemdevelopment/aegis/ui/Dialogs.java
@@ -9,10 +9,13 @@ import android.os.Build;
import android.text.Editable;
import android.text.InputType;
import android.text.TextWatcher;
+import android.text.method.PasswordTransformationMethod;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
+import android.widget.CheckBox;
+import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.NumberPicker;
import android.widget.TextView;
@@ -78,6 +81,18 @@ public class Dialogs {
View view = activity.getLayoutInflater().inflate(R.layout.dialog_password, null);
EditText textPassword = view.findViewById(R.id.text_password);
EditText textPasswordConfirm = view.findViewById(R.id.text_password_confirm);
+ CheckBox switchToggleVisibility = view.findViewById(R.id.check_toggle_visibility);
+
+ switchToggleVisibility.setOnCheckedChangeListener((CompoundButton.OnCheckedChangeListener) (buttonView, isChecked) -> {
+ if (isChecked) {
+ textPassword.setTransformationMethod(null);
+ textPassword.clearFocus();
+ textPasswordConfirm.setEnabled(false);
+ } else {
+ textPassword.setTransformationMethod(new PasswordTransformationMethod());
+ textPasswordConfirm.setEnabled(true);
+ }
+ });
AlertDialog dialog = new AlertDialog.Builder(activity)
.setTitle(R.string.set_password)
@@ -94,7 +109,7 @@ public class Dialogs {
// replace the default listener
button.setOnClickListener(v -> {
- if (!EditTextHelper.areEditTextsEqual(textPassword, textPasswordConfirm)) {
+ if (!EditTextHelper.areEditTextsEqual(textPassword, textPasswordConfirm) && !switchToggleVisibility.isChecked()) {
return;
}
@@ -119,7 +134,7 @@ public class Dialogs {
TextWatcher watcher = new TextWatcher() {
public void onTextChanged(CharSequence c, int start, int before, int count) {
boolean equal = EditTextHelper.areEditTextsEqual(textPassword, textPasswordConfirm);
- buttonOK.get().setEnabled(equal);
+ buttonOK.get().setEnabled(equal || switchToggleVisibility.isChecked());
}
public void beforeTextChanged(CharSequence c, int start, int count, int after) {
diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/slides/CustomAuthenticatedSlide.java b/app/src/main/java/com/beemdevelopment/aegis/ui/slides/CustomAuthenticatedSlide.java
index 84fc2908..dbb782f3 100644
--- a/app/src/main/java/com/beemdevelopment/aegis/ui/slides/CustomAuthenticatedSlide.java
+++ b/app/src/main/java/com/beemdevelopment/aegis/ui/slides/CustomAuthenticatedSlide.java
@@ -6,9 +6,12 @@ import android.content.Intent;
import android.hardware.fingerprint.FingerprintManager;
import android.os.Build;
import android.os.Bundle;
+import android.text.method.PasswordTransformationMethod;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.CheckBox;
+import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
@@ -34,6 +37,7 @@ public class CustomAuthenticatedSlide extends Fragment implements FingerprintUiH
private int _cryptType;
private EditText _textPassword;
private EditText _textPasswordConfirm;
+ private CheckBox _checkPasswordVisibility;
private int _bgColor;
private LinearLayout _boxFingerprint;
@@ -50,6 +54,7 @@ public class CustomAuthenticatedSlide extends Fragment implements FingerprintUiH
final View view = inflater.inflate(R.layout.fragment_authenticated_slide, container, false);
_textPassword = view.findViewById(R.id.text_password);
_textPasswordConfirm = view.findViewById(R.id.text_password_confirm);
+ _checkPasswordVisibility = view.findViewById(R.id.check_toggle_visibility);
_boxFingerprint = view.findViewById(R.id.box_fingerprint);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
@@ -58,6 +63,17 @@ public class CustomAuthenticatedSlide extends Fragment implements FingerprintUiH
insertPoint.addView(_imgFingerprint, 0, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
}
+ _checkPasswordVisibility.setOnCheckedChangeListener((buttonView, isChecked) -> {
+ if (isChecked) {
+ _textPassword.setTransformationMethod(null);
+ _textPassword.clearFocus();
+ _textPasswordConfirm.setEnabled(false);
+ } else {
+ _textPassword.setTransformationMethod(new PasswordTransformationMethod());
+ _textPasswordConfirm.setEnabled(true);
+ }
+ });
+
_textFingerprint = view.findViewById(R.id.text_fingerprint);
view.findViewById(R.id.main).setBackgroundColor(_bgColor);
return view;
@@ -147,7 +163,11 @@ public class CustomAuthenticatedSlide extends Fragment implements FingerprintUiH
}
// intentional fallthrough
case CustomAuthenticationSlide.CRYPT_TYPE_PASS:
- return EditTextHelper.areEditTextsEqual(_textPassword, _textPasswordConfirm);
+ if (EditTextHelper.getEditTextChars(_textPassword).length > 0) {
+ return EditTextHelper.areEditTextsEqual(_textPassword, _textPasswordConfirm) || _checkPasswordVisibility.isChecked();
+ }
+
+ return false;
default:
throw new RuntimeException();
}
@@ -156,7 +176,7 @@ public class CustomAuthenticatedSlide extends Fragment implements FingerprintUiH
@Override
public void onUserIllegallyRequestedNextPage() {
String message;
- if (!EditTextHelper.areEditTextsEqual(_textPassword, _textPasswordConfirm)) {
+ if (!EditTextHelper.areEditTextsEqual(_textPassword, _textPasswordConfirm) && !_checkPasswordVisibility.isChecked()) {
message = getString(R.string.password_equality_error);
} else if (!_fingerAuthenticated) {
message = getString(R.string.register_fingerprint);
diff --git a/app/src/main/res/layout/dialog_password.xml b/app/src/main/res/layout/dialog_password.xml
index d73ae2c7..63e5094b 100644
--- a/app/src/main/res/layout/dialog_password.xml
+++ b/app/src/main/res/layout/dialog_password.xml
@@ -4,8 +4,9 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingStart="20dp"
+ android:paddingBottom="10dp"
android:paddingEnd="20dp"
- android:paddingTop="20dp">
+ android:paddingTop="10dp">
+
+
diff --git a/app/src/main/res/layout/fragment_authenticated_slide.xml b/app/src/main/res/layout/fragment_authenticated_slide.xml
index 8c14b03a..40b3b847 100644
--- a/app/src/main/res/layout/fragment_authenticated_slide.xml
+++ b/app/src/main/res/layout/fragment_authenticated_slide.xml
@@ -59,6 +59,13 @@
android:layout_alignParentStart="true"
android:layout_alignParentEnd="true"/>
+
+
Delete
Password
Confirm password
+ Show password
New profile
Add new profile
Couldn\'t unlock vault