From 60bbc27401afefe7cb81cd8e6f11cc92127dd1ea Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Tue, 4 Aug 2020 19:40:14 +0200 Subject: [PATCH] Unique password field with password generator button --- .../keepass/activities/EntryEditActivity.kt | 9 +++--- .../keepass/view/EntryEditContentsView.kt | 15 ++------- .../main/res/layout/fragment_set_password.xml | 1 + .../res/layout/view_entry_edit_contents.xml | 32 ++++++------------- app/src/main/res/menu/entry_edit.xml | 5 --- 5 files changed, 18 insertions(+), 44 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditActivity.kt index f7c17cd57..74d4509c6 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditActivity.kt @@ -118,6 +118,9 @@ class EntryEditActivity : LockingActivity(), .show(supportFragmentManager, "DatePickerFragment") } } + entryEditContentsView?.entryPasswordGeneratorView?.setOnClickListener { + openPasswordGenerator() + } lockView = findViewById(R.id.lock_button) lockView?.setOnClickListener { @@ -229,10 +232,6 @@ class EntryEditActivity : LockingActivity(), setOnMenuItemClickListener { item -> when (item.itemId) { - R.id.menu_generate_password -> { - openPasswordGenerator() - true - } R.id.menu_add_field -> { addNewCustomField() true @@ -437,7 +436,7 @@ class EntryEditActivity : LockingActivity(), } private fun performedNextEducation(entryEditActivityEducation: EntryEditActivityEducation) { - val passwordGeneratorView: View? = entryEditAddToolBar?.findViewById(R.id.menu_generate_password) + val passwordGeneratorView: View? = entryEditContentsView?.entryPasswordGeneratorView val generatePasswordEducationPerformed = passwordGeneratorView != null && entryEditActivityEducation.checkAndPerformedGeneratePasswordEducation( passwordGeneratorView, diff --git a/app/src/main/java/com/kunzisoft/keepass/view/EntryEditContentsView.kt b/app/src/main/java/com/kunzisoft/keepass/view/EntryEditContentsView.kt index f55d2a07b..42695b1eb 100644 --- a/app/src/main/java/com/kunzisoft/keepass/view/EntryEditContentsView.kt +++ b/app/src/main/java/com/kunzisoft/keepass/view/EntryEditContentsView.kt @@ -23,6 +23,7 @@ import android.content.Context import android.graphics.Color import android.util.AttributeSet import android.view.LayoutInflater +import android.view.View import android.view.ViewGroup import android.widget.* import com.google.android.material.textfield.TextInputLayout @@ -51,7 +52,7 @@ class EntryEditContentsView @JvmOverloads constructor(context: Context, private val entryUrlView: EditText private val entryPasswordLayoutView: TextInputLayout private val entryPasswordView: EditText - private val entryConfirmationPasswordView: EditText + val entryPasswordGeneratorView: View private val entryExpiresCheckBox: CompoundButton private val entryExpiresTextView: TextView private val entryNotesView: EditText @@ -80,7 +81,7 @@ class EntryEditContentsView @JvmOverloads constructor(context: Context, entryUrlView = findViewById(R.id.entry_edit_url) entryPasswordLayoutView = findViewById(R.id.entry_edit_container_password) entryPasswordView = findViewById(R.id.entry_edit_password) - entryConfirmationPasswordView = findViewById(R.id.entry_edit_confirmation_password) + entryPasswordGeneratorView = findViewById(R.id.entry_edit_password_generator_button) entryExpiresCheckBox = findViewById(R.id.entry_edit_expires_checkbox) entryExpiresTextView = findViewById(R.id.entry_edit_expires_text) entryNotesView = findViewById(R.id.entry_edit_notes) @@ -148,10 +149,8 @@ class EntryEditContentsView @JvmOverloads constructor(context: Context, } set(value) { entryPasswordView.setText(value) - entryConfirmationPasswordView.setText(value) if (fontInVisibility) { entryPasswordView.applyFontVisibility() - entryConfirmationPasswordView.applyFontVisibility() } } @@ -253,14 +252,6 @@ class EntryEditContentsView @JvmOverloads constructor(context: Context, * @return ErrorValidation An error with a message or a validation without message */ fun isValid(): Boolean { - // Validate password - if (entryPasswordView.text.toString() != entryConfirmationPasswordView.text.toString()) { - entryPasswordLayoutView.error = context.getString(R.string.error_pass_match) - return false - } else { - entryPasswordLayoutView.error = null - } - // Validate extra fields entryExtraFieldsContainer.let { try { diff --git a/app/src/main/res/layout/fragment_set_password.xml b/app/src/main/res/layout/fragment_set_password.xml index 816d1d124..0e71b87b6 100644 --- a/app/src/main/res/layout/fragment_set_password.xml +++ b/app/src/main/res/layout/fragment_set_password.xml @@ -73,6 +73,7 @@ android:layout_height="wrap_content" android:importantForAccessibility="no" android:importantForAutofill="no" + android:contentDescription="@string/content_description_repeat_toggle_password_visibility" app:passwordToggleEnabled="true" app:passwordToggleTint="?attr/colorAccent"> + app:layout_constraintEnd_toStartOf="@+id/entry_edit_password_generator_button"> - - - - - + android:src="@drawable/ic_generate_password_white_24dp" + android:contentDescription="@string/generate_password"/> diff --git a/app/src/main/res/menu/entry_edit.xml b/app/src/main/res/menu/entry_edit.xml index 4935468c9..4b4fd9882 100644 --- a/app/src/main/res/menu/entry_edit.xml +++ b/app/src/main/res/menu/entry_edit.xml @@ -38,9 +38,4 @@ android:title="@string/entry_setup_otp" android:orderInCategory="94" app:showAsAction="always" /> -