Fix search filters depending on database version

This commit is contained in:
J-Jamet
2022-02-08 14:11:24 +01:00
parent ebaec2eaf0
commit 2ad385acb6
7 changed files with 28 additions and 14 deletions

View File

@@ -664,9 +664,11 @@ class GroupActivity : DatabaseLockActivity(),
if (group?.isVirtual == true) {
searchFiltersView?.setNumbers(group.numberOfChildEntries)
searchFiltersView?.setCurrentGroupText(mMainGroup?.title ?: "")
searchFiltersView?.enableOther(mDatabase?.allowEntryCustomFields() ?: false)
searchFiltersView?.availableOther(mDatabase?.allowEntryCustomFields() ?: false)
searchFiltersView?.availableTags(mDatabase?.allowTags() ?: false)
searchFiltersView?.enableTags(mDatabase?.tagPool?.isNotEmpty() ?: false)
searchFiltersView?.enableSearchableGroup(mDatabase?.allowCustomSearchableGroup() ?: false)
searchFiltersView?.availableSearchableGroup(mDatabase?.allowCustomSearchableGroup() ?: false)
searchFiltersView?.availableTemplates(mDatabase?.allowTemplatesGroup ?: false)
searchFiltersView?.enableTemplates(mDatabase?.templatesGroup != null)
toolbarBreadcrumb?.navigationIcon = null
} else {

View File

@@ -495,7 +495,7 @@ class Database {
* Determine if a configurable templates group is available or not for this version of database
* @return true if a configurable templates group available
*/
val allowConfigurableTemplatesGroup: Boolean
val allowTemplatesGroup: Boolean
get() = mDatabaseKDBX != null
// Maybe another templates method with KDBX5

View File

@@ -435,7 +435,7 @@ class Group : Node, GroupVersionedInterface<Group, Entry> {
}
var searchable: Boolean?
get() = if (groupKDB != null) true else groupKDBX?.enableSearching
get() = groupKDBX?.enableSearching
set(value) {
groupKDBX?.enableSearching = value
}

View File

@@ -47,6 +47,7 @@ class SearchHelper {
// Search all entries
incrementEntry = 0
val allowSearchable = database.allowCustomSearchableGroup()
val startGroup = if (searchParameters.searchInCurrentGroup && fromGroup != null) {
database.getGroupById(fromGroup) ?: database.rootGroup
} else {
@@ -69,12 +70,14 @@ class SearchHelper {
},
object : NodeHandler<Group>() {
override fun operate(node: Group): Boolean {
val inRecycleBin = database.groupIsInRecycleBin(node)
val inTemplates = database.groupIsInTemplates(node)
return when {
incrementEntry >= max -> false
searchParameters.searchInRecycleBin -> database.groupIsInRecycleBin(node)
searchParameters.searchInTemplates -> database.groupIsInTemplates(node)
searchParameters.searchInSearchableGroup -> node.isSearchable()
else -> true
searchParameters.searchInRecycleBin -> inRecycleBin
searchParameters.searchInTemplates -> inTemplates
(allowSearchable && searchParameters.searchInSearchableGroup) -> node.isSearchable()
else -> !inRecycleBin && !inTemplates
}
}
},

View File

@@ -238,7 +238,7 @@ class NestedDatabaseSettingsFragment : NestedSettingsFragment(), DatabaseRetriev
// Templates
val templatesGroupPrefCategory: PreferenceCategory? = findPreference(getString(R.string.database_category_templates_key))
templatesGroupPref = findPreference(getString(R.string.templates_group_uuid_key))
if (database.allowConfigurableTemplatesGroup) {
if (database.allowTemplatesGroup) {
val templatesEnablePref: SwitchPreference? = findPreference(getString(R.string.templates_group_enable_key))
templatesEnablePref?.apply {
isChecked = database.isTemplatesEnabled

View File

@@ -64,7 +64,7 @@ class DatabaseTemplatesGroupPreferenceDialogFragmentCompat
super.onDialogClosed(database, positiveResult)
if (positiveResult) {
database?.let {
if (database.allowConfigurableTemplatesGroup) {
if (database.allowTemplatesGroup) {
val oldGroup = database.templatesGroup
val newGroup = mGroupTemplates
database.setTemplatesGroup(newGroup)

View File

@@ -9,6 +9,7 @@ import android.widget.CompoundButton
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import androidx.core.view.isVisible
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.database.search.SearchHelper
import com.kunzisoft.keepass.database.search.SearchParameters
@@ -199,16 +200,24 @@ class SearchFiltersView @JvmOverloads constructor(context: Context,
}
}
fun enableOther(enable: Boolean) {
searchOther.isEnabled = enable
fun availableOther(available: Boolean) {
searchOther.isVisible = available
}
fun availableTags(available: Boolean) {
searchTag.isVisible = available
}
fun enableTags(enable: Boolean) {
searchTag.isEnabled = enable
}
fun enableSearchableGroup(enable: Boolean) {
searchGroupSearchable.isEnabled = enable
fun availableSearchableGroup(available: Boolean) {
searchGroupSearchable.isVisible = available
}
fun availableTemplates(available: Boolean) {
searchTemplate.isVisible = available
}
fun enableTemplates(enable: Boolean) {