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 748430d98..d6f7306cb 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditActivity.kt @@ -35,6 +35,7 @@ import android.widget.TimePicker import androidx.appcompat.app.AlertDialog import androidx.appcompat.widget.Toolbar import androidx.coordinatorlayout.widget.CoordinatorLayout +import androidx.core.view.isVisible import androidx.core.widget.NestedScrollView import com.google.android.material.snackbar.Snackbar import com.kunzisoft.keepass.R @@ -518,31 +519,23 @@ class EntryEditActivity : LockingActivity(), menu.findItem(R.id.menu_save_database)?.isVisible = false MenuUtil.contributionMenuInflater(inflater, menu) - entryEditActivityEducation?.let { - Handler().post { performedNextEducation(it) } - } - return true } - private fun performedNextEducation(entryEditActivityEducation: EntryEditActivityEducation) { - val passwordGeneratorView: View? = null //TODO entryEditContentsFragment?.entryPasswordGeneratorView - val generatePasswordEducationPerformed = passwordGeneratorView != null - && entryEditActivityEducation.checkAndPerformedGeneratePasswordEducation( - passwordGeneratorView, - { - openPasswordGenerator() - }, - { - performedNextEducation(entryEditActivityEducation) - } - ) - if (!generatePasswordEducationPerformed) { + + override fun onPrepareOptionsMenu(menu: Menu?): Boolean { + entryEditActivityEducation?.let { + Handler().post { performedNextEducation(it) } + } + return super.onPrepareOptionsMenu(menu) + } + + fun performedNextEducation(entryEditActivityEducation: EntryEditActivityEducation) { + if (entryEditFragment?.generatePasswordEducationPerformed(entryEditActivityEducation) != true) { val addNewFieldView: View? = entryEditAddToolBar?.findViewById(R.id.menu_add_field) - val addNewFieldEducationPerformed = // TODO mNewEntry != null - // && mNewEntry!!.allowCustomFields() - addNewFieldView != null - && addNewFieldView.visibility == View.VISIBLE + val addNewFieldEducationPerformed = mDatabase?.allowEntryCustomFields() == true + && addNewFieldView != null + && addNewFieldView.isVisible && entryEditActivityEducation.checkAndPerformedEntryNewFieldEducation( addNewFieldView, { @@ -554,7 +547,8 @@ class EntryEditActivity : LockingActivity(), ) if (!addNewFieldEducationPerformed) { val attachmentView: View? = entryEditAddToolBar?.findViewById(R.id.menu_add_attachment) - val addAttachmentEducationPerformed = attachmentView != null && attachmentView.visibility == View.VISIBLE + val addAttachmentEducationPerformed = attachmentView != null + && attachmentView.isVisible && entryEditActivityEducation.checkAndPerformedAttachmentEducation( attachmentView, { @@ -566,7 +560,8 @@ class EntryEditActivity : LockingActivity(), ) if (!addAttachmentEducationPerformed) { val setupOtpView: View? = entryEditAddToolBar?.findViewById(R.id.menu_add_otp) - setupOtpView != null && setupOtpView.visibility == View.VISIBLE + setupOtpView != null + && setupOtpView.isVisible && entryEditActivityEducation.checkAndPerformedSetUpOTPEducation( setupOtpView, { diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditFragment.kt b/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditFragment.kt index b7880e286..ceebf6974 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditFragment.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditFragment.kt @@ -22,9 +22,7 @@ package com.kunzisoft.keepass.activities import android.content.Context import android.graphics.Color import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup +import android.view.* import android.view.inputmethod.EditorInfo import android.widget.CompoundButton import android.widget.EditText @@ -36,11 +34,13 @@ import androidx.recyclerview.widget.SimpleItemAnimator import com.google.android.material.textfield.TextInputEditText import com.google.android.material.textfield.TextInputLayout import com.kunzisoft.keepass.R +import com.kunzisoft.keepass.activities.dialogs.GeneratePasswordDialogFragment import com.kunzisoft.keepass.activities.stylish.StylishFragment import com.kunzisoft.keepass.adapters.EntryAttachmentsItemsAdapter import com.kunzisoft.keepass.database.element.Attachment import com.kunzisoft.keepass.database.element.DateInstant import com.kunzisoft.keepass.database.element.icon.IconImage +import com.kunzisoft.keepass.education.EntryEditActivityEducation import com.kunzisoft.keepass.icons.IconDrawableFactory import com.kunzisoft.keepass.icons.assignDatabaseIcon import com.kunzisoft.keepass.model.* @@ -150,7 +150,7 @@ class EntryEditFragment: StylishFragment() { // Retrieve the new entry after an orientation change if (arguments?.containsKey(KEY_TEMP_ENTRY_INFO) == true) - mEntryInfo = arguments?.getParcelable(KEY_TEMP_ENTRY_INFO) ?: mEntryInfo + mEntryInfo = arguments?.getParcelable(KEY_TEMP_ENTRY_INFO) ?: mEntryInfo else if (savedInstanceState?.containsKey(KEY_TEMP_ENTRY_INFO) == true) { mEntryInfo = savedInstanceState.getParcelable(KEY_TEMP_ENTRY_INFO) ?: mEntryInfo } @@ -180,6 +180,20 @@ class EntryEditFragment: StylishFragment() { return mEntryInfo } + fun generatePasswordEducationPerformed(entryEditActivityEducation: EntryEditActivityEducation): Boolean { + return entryEditActivityEducation.checkAndPerformedGeneratePasswordEducation( + entryPasswordGeneratorView, + { + GeneratePasswordDialogFragment().show(parentFragmentManager, "PasswordGeneratorFragment") + }, + { + try { + (activity as? EntryEditActivity?)?.performedNextEducation(entryEditActivityEducation) + } catch (ignore: Exception) {} + } + ) + } + private fun populateViewsWithEntry() { // Set info in view icon = mEntryInfo.icon