Fix timeout in dialogs #716

This commit is contained in:
J-Jamet
2021-08-13 17:24:31 +02:00
parent 4a8f67093f
commit 6aecc6521c
16 changed files with 42 additions and 36 deletions

View File

@@ -2,6 +2,7 @@ KeePassDX(3.0.0)
* Add / Manage dynamic templates #191
* Manually select RecycleBin group and Templates group #191
* Small changes #1035
* Fix timeout in dialogs #716
KeePassDX(2.10.5)
* Increase the saving speed of database #1028

View File

@@ -32,7 +32,6 @@ import android.view.View
import android.widget.CompoundButton
import android.widget.TextView
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.DialogFragment
import com.google.android.material.textfield.TextInputLayout
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.activities.helpers.ExternalFileHelper
@@ -41,7 +40,7 @@ import com.kunzisoft.keepass.model.MainCredential
import com.kunzisoft.keepass.utils.UriUtil
import com.kunzisoft.keepass.view.KeyFileSelectionView
class AssignMasterKeyDialogFragment : DialogFragment() {
class AssignMasterKeyDialogFragment : DatabaseDialogFragment() {
private var mMasterPassword: String? = null
private var mKeyFile: Uri? = null

View File

@@ -23,12 +23,11 @@ import android.app.Dialog
import android.os.Bundle
import android.text.SpannableStringBuilder
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.DialogFragment
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.model.SnapFileDatabaseInfo
class DatabaseChangedDialogFragment : DialogFragment() {
class DatabaseChangedDialogFragment : DatabaseDialogFragment() {
var actionDatabaseListener: ActionDatabaseChangedListener? = null

View File

@@ -1,7 +1,6 @@
package com.kunzisoft.keepass.activities.fragments
package com.kunzisoft.keepass.activities.dialogs
import android.os.Bundle
import android.view.View
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.activityViewModels
import com.kunzisoft.keepass.activities.DatabaseRetrieval
@@ -20,14 +19,23 @@ abstract class DatabaseDialogFragment : DialogFragment(), DatabaseRetrieval {
mDatabaseViewModel.database.observe(this) { database ->
this.mDatabase = database
resetAppTimeoutWhenViewFocusedOrChanged()
onDatabaseRetrieved(database)
}
mDatabaseViewModel.actionFinished.observe(this) { result ->
onDatabaseActionFinished(result.database, result.actionTask, result.result)
}
}
protected fun resetAppTimeoutWhenViewFocusedOrChanged(view: View?) {
context?.let {
view?.resetAppTimeoutWhenViewFocusedOrChanged(it, mDatabase?.loaded)
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
resetAppTimeoutWhenViewFocusedOrChanged()
}
override fun onDatabaseRetrieved(database: Database?) {
// Can be overridden by a subclass
}
override fun onDatabaseActionFinished(
@@ -37,4 +45,10 @@ abstract class DatabaseDialogFragment : DialogFragment(), DatabaseRetrieval {
) {
// Can be overridden by a subclass
}
private fun resetAppTimeoutWhenViewFocusedOrChanged() {
context?.let {
dialog?.window?.decorView?.resetAppTimeoutWhenViewFocusedOrChanged(it, mDatabase?.loaded)
}
}
}

View File

@@ -4,9 +4,8 @@ import android.app.DatePickerDialog
import android.app.Dialog
import android.content.Context
import android.os.Bundle
import androidx.fragment.app.DialogFragment
class DatePickerFragment : DialogFragment() {
class DatePickerFragment : DatabaseDialogFragment() {
private var mDefaultYear: Int = 2000
private var mDefaultMonth: Int = 1

View File

@@ -22,13 +22,12 @@ package com.kunzisoft.keepass.activities.dialogs
import android.app.Dialog
import android.os.Bundle
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.activityViewModels
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.database.element.node.Node
import com.kunzisoft.keepass.viewmodels.NodesViewModel
class DeleteNodesDialogFragment : DialogFragment() {
class DeleteNodesDialogFragment : DatabaseDialogFragment() {
private var mNodesToDelete: List<Node> = listOf()
private val mNodesViewModel: NodesViewModel by activityViewModels()

View File

@@ -31,14 +31,13 @@ import android.widget.ImageView
import android.widget.TextView
import androidx.annotation.StringRes
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.DialogFragment
import com.google.android.material.textfield.TextInputLayout
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.database.element.security.ProtectedString
import com.kunzisoft.keepass.database.element.Field
import com.kunzisoft.keepass.database.element.security.ProtectedString
class EntryCustomFieldDialogFragment: DialogFragment() {
class EntryCustomFieldDialogFragment: DatabaseDialogFragment() {
private var oldField: Field? = null

View File

@@ -25,7 +25,6 @@ import android.os.Bundle
import android.view.View
import android.widget.*
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.DialogFragment
import com.google.android.material.textfield.TextInputLayout
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.database.element.Field
@@ -34,7 +33,7 @@ import com.kunzisoft.keepass.settings.PreferencesUtil
import com.kunzisoft.keepass.timeout.ClipboardHelper
import com.kunzisoft.keepass.view.applyFontVisibility
class GeneratePasswordDialogFragment : DialogFragment() {
class GeneratePasswordDialogFragment : DatabaseDialogFragment() {
private var mListener: GeneratePasswordListener? = null

View File

@@ -31,7 +31,6 @@ import androidx.fragment.app.activityViewModels
import com.google.android.material.textfield.TextInputLayout
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.activities.dialogs.GroupEditDialogFragment.EditGroupDialogAction.*
import com.kunzisoft.keepass.activities.fragments.DatabaseDialogFragment
import com.kunzisoft.keepass.database.element.Database
import com.kunzisoft.keepass.database.element.DateInstant
import com.kunzisoft.keepass.database.element.icon.IconImage
@@ -107,6 +106,7 @@ class GroupEditDialogFragment : DatabaseDialogFragment() {
}
override fun onDatabaseRetrieved(database: Database?) {
super.onDatabaseRetrieved(database)
mPopulateIconMethod = { imageView, icon ->
database?.iconDrawableFactory?.assignDatabaseIcon(imageView, icon, mIconColor)
}
@@ -128,8 +128,6 @@ class GroupEditDialogFragment : DatabaseDialogFragment() {
mIconColor = ta.getColor(0, Color.WHITE)
ta.recycle()
resetAppTimeoutWhenViewFocusedOrChanged(root)
if (savedInstanceState != null
&& savedInstanceState.containsKey(KEY_ACTION_ID)
&& savedInstanceState.containsKey(KEY_GROUP_INFO)) {

View File

@@ -25,14 +25,13 @@ import android.net.Uri
import android.os.Bundle
import android.text.SpannableStringBuilder
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.DialogFragment
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.database.element.Attachment
/**
* Custom Dialog to confirm big file to upload
*/
class ReplaceFileDialogFragment : DialogFragment() {
class ReplaceFileDialogFragment : DatabaseDialogFragment() {
private var mActionChooseListener: ActionChooseListener? = null

View File

@@ -31,7 +31,6 @@ import android.view.ViewGroup
import android.view.inputmethod.EditorInfo
import android.widget.*
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.DialogFragment
import com.google.android.material.textfield.TextInputLayout
import com.kunzisoft.keepass.BuildConfig
import com.kunzisoft.keepass.R
@@ -49,7 +48,7 @@ import com.kunzisoft.keepass.otp.TokenCalculator
import com.kunzisoft.keepass.utils.UriUtil
import java.util.*
class SetOTPDialogFragment : DialogFragment() {
class SetOTPDialogFragment : DatabaseDialogFragment() {
private var mCreateOTPElementListener: CreateOtpListener? = null

View File

@@ -22,16 +22,15 @@ package com.kunzisoft.keepass.activities.dialogs
import android.app.Dialog
import android.content.Context
import android.os.Bundle
import androidx.annotation.IdRes
import androidx.fragment.app.DialogFragment
import androidx.appcompat.app.AlertDialog
import android.view.View
import android.widget.CompoundButton
import android.widget.RadioGroup
import androidx.annotation.IdRes
import androidx.appcompat.app.AlertDialog
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.database.element.SortNodeEnum
class SortDialogFragment : DialogFragment() {
class SortDialogFragment : DatabaseDialogFragment() {
private var mListener: SortSelectionListener? = null

View File

@@ -6,9 +6,8 @@ import android.app.TimePickerDialog
import android.content.Context
import android.os.Bundle
import android.text.format.DateFormat
import androidx.fragment.app.DialogFragment
class TimePickerFragment : DialogFragment() {
class TimePickerFragment : DatabaseDialogFragment() {
private var defaultHour: Int = 0
private var defaultMinute: Int = 0

View File

@@ -378,10 +378,11 @@ abstract class LockingActivity : SpecialModeActivity(),
*/
@SuppressLint("ClickableViewAccessibility")
fun View.resetAppTimeoutWhenViewFocusedOrChanged(context: Context, databaseLoaded: Boolean?) {
// Log.d(LockingActivity.TAG, "View prepared to reset app timeout")
setOnTouchListener { _, event ->
when (event.action) {
MotionEvent.ACTION_DOWN -> {
Log.d(LockingActivity.TAG, "View touched, try to reset app timeout")
// Log.d(LockingActivity.TAG, "View touched, try to reset app timeout")
TimeoutHelper.checkTimeAndLockIfTimeoutOrResetTimeout(context,
databaseLoaded ?: false)
}
@@ -389,7 +390,7 @@ fun View.resetAppTimeoutWhenViewFocusedOrChanged(context: Context, databaseLoade
false
}
setOnFocusChangeListener { _, _ ->
Log.d(LockingActivity.TAG, "View focused, try to reset app timeout")
// Log.d(LockingActivity.TAG, "View focused, try to reset app timeout")
TimeoutHelper.checkTimeAndLockIfTimeoutOrResetTimeout(context,
databaseLoaded ?: false)
}

View File

@@ -1,3 +1,4 @@
* Add / Manage dynamic templates #191
* Allow to manually select RecycleBin group and Templates group #191
* Small changes #1035
* Small changes #1035
* Fix timeout in dialogs #716

View File

@@ -1,3 +1,4 @@
* Ajout / Gestion dynamique des templates #191
* Sélection manuelle des groupes de la corbeille et des templates #191
* Petits changements #1035
* Petits changements #1035
* Correction du délai d'expiration dans les dialogues #716