Manage setting to hide password #696

This commit is contained in:
J-Jamet
2022-03-29 17:18:49 +02:00
parent d57e0cf601
commit 4a4d767bce
7 changed files with 34 additions and 6 deletions

View File

@@ -1,6 +1,6 @@
KeePassDX(3.4.0) KeePassDX(3.4.0)
* Show visual password strength indicator with entropy #631 #869 * Show visual password strength indicator with entropy #631 #869
* Dynamically save password generator configuration #618 * Dynamically save password generator configuration #618 #696
* Add advanced password filters #1052 * Add advanced password filters #1052
* Add editable chars fields #539 * Add editable chars fields #539
* Add color for special password chars #454 * Add color for special password chars #454

View File

@@ -21,6 +21,7 @@ package com.kunzisoft.keepass.view
import android.content.Context import android.content.Context
import android.text.Editable import android.text.Editable
import android.text.InputType
import android.text.SpannableString import android.text.SpannableString
import android.text.TextWatcher import android.text.TextWatcher
import android.util.AttributeSet import android.util.AttributeSet
@@ -46,6 +47,8 @@ class PasswordView @JvmOverloads constructor(context: Context,
private val passwordStrengthProgress: LinearProgressIndicator private val passwordStrengthProgress: LinearProgressIndicator
private val passwordEntropy: TextView private val passwordEntropy: TextView
private var mShowPassword: Boolean = false
private var mPasswordTextWatcher: MutableList<TextWatcher> = mutableListOf() private var mPasswordTextWatcher: MutableList<TextWatcher> = mutableListOf()
private val passwordTextWatcher = object : TextWatcher { private val passwordTextWatcher = object : TextWatcher {
override fun beforeTextChanged(charSequence: CharSequence, i: Int, i1: Int, i2: Int) { override fun beforeTextChanged(charSequence: CharSequence, i: Int, i1: Int, i2: Int) {
@@ -68,13 +71,29 @@ class PasswordView @JvmOverloads constructor(context: Context,
} }
} }
init { init {
context.theme.obtainStyledAttributes(
attrs,
R.styleable.PasswordView,
0, 0).apply {
try {
mShowPassword = getBoolean(R.styleable.PasswordView_passwordVisible,
!PreferencesUtil.hideProtectedValue(context))
} finally {
recycle()
}
}
val inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater? val inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater?
inflater?.inflate(R.layout.view_password, this) inflater?.inflate(R.layout.view_password, this)
passwordInputLayout = findViewById(R.id.password_input_layout) passwordInputLayout = findViewById(R.id.password_input_layout)
passwordText = findViewById(R.id.password_text) passwordText = findViewById(R.id.password_text)
if (mShowPassword) {
passwordText?.inputType = passwordText.inputType and
InputType.TYPE_TEXT_VARIATION_PASSWORD or
InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
}
passwordText?.applyFontVisibility() passwordText?.applyFontVisibility()
passwordText.addTextChangedListener(passwordTextWatcher) passwordText.addTextChangedListener(passwordTextWatcher)
passwordStrengthProgress = findViewById(R.id.password_strength_progress) passwordStrengthProgress = findViewById(R.id.password_strength_progress)

View File

@@ -177,7 +177,11 @@ class TextEditFieldView @JvmOverloads constructor(context: Context,
fun setProtection(protection: Boolean) { fun setProtection(protection: Boolean) {
if (protection) { if (protection) {
labelView.endIconMode = TextInputLayout.END_ICON_PASSWORD_TOGGLE labelView.endIconMode = TextInputLayout.END_ICON_PASSWORD_TOGGLE
valueView.inputType = valueView.inputType or InputType.TYPE_TEXT_VARIATION_PASSWORD val visibilityTag = if (PreferencesUtil.hideProtectedValue(context))
InputType.TYPE_TEXT_VARIATION_PASSWORD
else
InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
valueView.inputType = valueView.inputType or visibilityTag
} }
} }

View File

@@ -74,7 +74,8 @@
<com.kunzisoft.keepass.view.PasswordView <com.kunzisoft.keepass.view.PasswordView
android:id="@+id/password_view" android:id="@+id/password_view"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" /> android:layout_height="wrap_content"
app:passwordVisible="false"/>
<com.google.android.material.textfield.TextInputLayout <com.google.android.material.textfield.TextInputLayout
android:id="@+id/password_repeat_input_layout" android:id="@+id/password_repeat_input_layout"
android:layout_width="match_parent" android:layout_width="match_parent"

View File

@@ -41,6 +41,10 @@
<attr name="explanations" format="string" /> <attr name="explanations" format="string" />
</declare-styleable> </declare-styleable>
<declare-styleable name="PasswordView">
<attr name="passwordVisible" format="boolean" />
</declare-styleable>
<!-- Specific keyboard attributes --> <!-- Specific keyboard attributes -->
<declare-styleable name="KeyboardView"> <declare-styleable name="KeyboardView">
<!-- Default KeyboardView style. --> <!-- Default KeyboardView style. -->

View File

@@ -1,5 +1,5 @@
* Show visual password strength indicator with entropy #631 #869 * Show visual password strength indicator with entropy #631 #869
* Dynamically save password generator configuration #618 * Dynamically save password generator configuration #618 #696
* Add advanced password filters #1052 * Add advanced password filters #1052
* Add editable chars fields #539 * Add editable chars fields #539
* Add color for special password chars #454 * Add color for special password chars #454

View File

@@ -1,5 +1,5 @@
* Affichage d'un indicateur visuel de la force du mot de passe avec entropie #631 #869 * Affichage d'un indicateur visuel de la force du mot de passe avec entropie #631 #869
* Sauvegarde dynamique de la configuration du générateur de mots de passe #618 * Sauvegarde dynamique de la configuration du générateur de mots de passe #618 #696
* Ajout des filtres de mots de passe avancés #1052 * Ajout des filtres de mots de passe avancés #1052
* Ajout de champs éditable de génération #539 * Ajout de champs éditable de génération #539
* Ajout des couleurs pour chaque caractère spécial de mots de passe #454 * Ajout des couleurs pour chaque caractère spécial de mots de passe #454