diff --git a/app/src/main/java/com/kunzisoft/keepass/database/element/EntryVersioned.kt b/app/src/main/java/com/kunzisoft/keepass/database/element/EntryVersioned.kt index c4c6d6e18..bd3018318 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/element/EntryVersioned.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/element/EntryVersioned.kt @@ -126,9 +126,6 @@ class EntryVersioned : NodeVersioned, PwEntryInterface { return contained ?: false } - override val isSearchingEnabled: Boolean - get() = pwEntryV3?.isSearchingEnabled ?: pwEntryV4?.isSearchingEnabled ?: false - override var creationTime: PwDate get() = pwEntryV3?.creationTime ?: pwEntryV4?.creationTime ?: PwDate() set(value) { diff --git a/app/src/main/java/com/kunzisoft/keepass/database/element/GroupVersioned.kt b/app/src/main/java/com/kunzisoft/keepass/database/element/GroupVersioned.kt index ffc67d1d7..8ee77d8f5 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/element/GroupVersioned.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/element/GroupVersioned.kt @@ -130,9 +130,6 @@ class GroupVersioned : NodeVersioned, PwGroupInterface, Entry : PwEntry() { return false } - override fun isGroupSearchable(group: PwGroupV3?, omitBackup: Boolean): Boolean { - return if (!super.isGroupSearchable(group, omitBackup)) { - false - } else !(omitBackup && isBackup(group!!)) - } - companion object { private const val DEFAULT_ENCRYPTION_ROUNDS = 300 diff --git a/app/src/main/java/com/kunzisoft/keepass/database/element/PwDatabaseV4.kt b/app/src/main/java/com/kunzisoft/keepass/database/element/PwDatabaseV4.kt index 42b60d960..3242b81fb 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/element/PwDatabaseV4.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/element/PwDatabaseV4.kt @@ -407,12 +407,6 @@ class PwDatabaseV4 : PwDatabase { return publicCustomData.size() > 0 } - override fun isGroupSearchable(group: PwGroupV4?, omitBackup: Boolean): Boolean { - return if (!super.isGroupSearchable(group, omitBackup)) { - false - } else group!!.isSearchingEnabled - } - override fun validatePasswordEncoding(key: String?): Boolean { if (key == null) return true diff --git a/app/src/main/java/com/kunzisoft/keepass/database/element/PwEntryV3.kt b/app/src/main/java/com/kunzisoft/keepass/database/element/PwEntryV3.kt index ad30d83c6..5e78585f8 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/element/PwEntryV3.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/element/PwEntryV3.kt @@ -167,10 +167,6 @@ class PwEntryV3 : PwEntry { override val type: Type get() = Type.ENTRY - override val isSearchingEnabled: Boolean - get() = false - - fun setBinaryData(buf: ByteArray, offset: Int, len: Int) { /** Securely erase old data before copying new. */ fill(binaryData, 0.toByte()) diff --git a/app/src/main/java/com/kunzisoft/keepass/database/element/PwEntryV4.kt b/app/src/main/java/com/kunzisoft/keepass/database/element/PwEntryV4.kt index 7a2cc93fc..ac285c007 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/element/PwEntryV4.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/element/PwEntryV4.kt @@ -204,9 +204,6 @@ class PwEntryV4 : PwEntry, NodeV4Interface { override val type: Type get() = Type.ENTRY - override val isSearchingEnabled: Boolean - get() = parent?.isSearchingEnabled ?: true - override var username: String get() = decodeRefKey(mDecodeRef, STR_USERNAME) set(value) { diff --git a/app/src/main/java/com/kunzisoft/keepass/database/element/PwGroupInterface.kt b/app/src/main/java/com/kunzisoft/keepass/database/element/PwGroupInterface.kt index 01aa45ee9..35d42bb31 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/element/PwGroupInterface.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/element/PwGroupInterface.kt @@ -25,15 +25,21 @@ interface PwGroupInterface, Entry> : PwNod } fun doForEachChild(entryHandler: NodeHandler, - groupHandler: NodeHandler?): Boolean { + groupHandler: NodeHandler?, + stopIterationWhenGroupHandlerFails: Boolean = true): Boolean { for (entry in this.getChildEntries()) { if (!entryHandler.operate(entry)) return false } for (group in this.getChildGroups()) { - if (groupHandler != null && !groupHandler.operate(group)) - return false - group.doForEachChild(entryHandler, groupHandler) + var doActionForChild = true + if (groupHandler != null && !groupHandler.operate(group)) { + doActionForChild = false + if (stopIterationWhenGroupHandlerFails) + return false + } + if (doActionForChild) + group.doForEachChild(entryHandler, groupHandler) } return true } diff --git a/app/src/main/java/com/kunzisoft/keepass/database/element/PwGroupV3.kt b/app/src/main/java/com/kunzisoft/keepass/database/element/PwGroupV3.kt index d19c3859a..cad871a94 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/element/PwGroupV3.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/element/PwGroupV3.kt @@ -59,9 +59,6 @@ class PwGroupV3 : PwGroup { override val type: Type get() = Type.GROUP - override val isSearchingEnabled: Boolean - get() = false - override fun initNodeId(): PwNodeId { return PwNodeIdInt() } diff --git a/app/src/main/java/com/kunzisoft/keepass/database/element/PwGroupV4.kt b/app/src/main/java/com/kunzisoft/keepass/database/element/PwGroupV4.kt index f731c2cfb..b47d144bf 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/element/PwGroupV4.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/element/PwGroupV4.kt @@ -52,9 +52,6 @@ class PwGroupV4 : PwGroup, NodeV4Interface { override val type: Type get() = Type.GROUP - override val isSearchingEnabled: Boolean - get() = parent?.isSearchingEnabled ?: true - override fun initNodeId(): PwNodeId { return PwNodeIdUUID() } diff --git a/app/src/main/java/com/kunzisoft/keepass/database/element/PwNode.kt b/app/src/main/java/com/kunzisoft/keepass/database/element/PwNode.kt index 355b1767f..152b3abe4 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/element/PwNode.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/element/PwNode.kt @@ -107,6 +107,8 @@ abstract class PwNode, Entry : override fun afterAssignNewParent() {} override fun isContainedIn(container: Parent): Boolean { + if (this == container) + return true var cur = this.parent while (cur != null) { if (cur == container) { diff --git a/app/src/main/java/com/kunzisoft/keepass/database/element/PwNodeInterface.kt b/app/src/main/java/com/kunzisoft/keepass/database/element/PwNodeInterface.kt index 7ee3e1754..89db8b52c 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/element/PwNodeInterface.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/element/PwNodeInterface.kt @@ -21,8 +21,6 @@ interface PwNodeInterface : NodeTimeInterface, Parcelable { */ var parent: ParentGroup? - val isSearchingEnabled: Boolean - fun containsParent(): Boolean fun afterAssignNewParent() diff --git a/app/src/main/java/com/kunzisoft/keepass/database/search/EntrySearchHandlerV4.kt b/app/src/main/java/com/kunzisoft/keepass/database/search/EntrySearchHandlerV4.kt index a8725f941..a62a28dd4 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/search/EntrySearchHandlerV4.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/search/EntrySearchHandlerV4.kt @@ -32,9 +32,6 @@ class EntrySearchHandlerV4(private val mSearchParametersV4: SearchParametersV4, private var now: Date = Date() override fun operate(node: PwEntryV4): Boolean { - if (mSearchParametersV4.respectEntrySearchingDisabled && !node.isSearchingEnabled) { - return true - } if (mSearchParametersV4.excludeExpired && node.isExpires && now.after(node.expiryTime.date)) { return true diff --git a/app/src/main/java/com/kunzisoft/keepass/database/search/SearchDbHelper.kt b/app/src/main/java/com/kunzisoft/keepass/database/search/SearchDbHelper.kt index 5421d3739..626b3eb41 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/search/SearchDbHelper.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/search/SearchDbHelper.kt @@ -64,10 +64,11 @@ class SearchDbHelper(private val isOmitBackup: Boolean) { return when { incrementEntry >= max -> false database.isGroupSearchable(node, isOmitBackup) -> true - else -> incrementEntry < max + else -> false } } - }) + }, + false) return searchGroup } diff --git a/app/src/main/java/com/kunzisoft/keepass/database/search/SearchParameters.kt b/app/src/main/java/com/kunzisoft/keepass/database/search/SearchParameters.kt index 4db7828ae..361bedc11 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/search/SearchParameters.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/search/SearchParameters.kt @@ -35,7 +35,6 @@ open class SearchParameters { var searchInNotes = true var ignoreCase = true var ignoreExpired = false - var respectEntrySearchingDisabled = true var excludeExpired = false constructor() @@ -54,7 +53,6 @@ open class SearchParameters { searchInNotes = source.searchInNotes ignoreCase = source.ignoreCase ignoreExpired = source.ignoreExpired - respectEntrySearchingDisabled = source.respectEntrySearchingDisabled excludeExpired = source.excludeExpired } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6da5ac176..68b8c8d57 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -150,7 +150,7 @@ Create new database Recent databases Don\'t search through backup entries - Omits \"Backup\" group from search results (only applies to .kdb files) + Omits \"Backup\" and \"Recycle Bin\" groups from search results Creating new database… Working… Protection