mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
Build default templates if setting enable #1062
This commit is contained in:
@@ -450,8 +450,8 @@ class Database {
|
||||
val isTemplatesEnabled: Boolean
|
||||
get() = mDatabaseKDBX?.isTemplatesGroupEnabled() ?: false
|
||||
|
||||
fun enableTemplates(enable: Boolean, resources: Resources) {
|
||||
mDatabaseKDBX?.enableTemplatesGroup(enable, resources)
|
||||
fun enableTemplates(enable: Boolean, templatesGroupName: String) {
|
||||
mDatabaseKDBX?.enableTemplatesGroup(enable, templatesGroupName)
|
||||
}
|
||||
|
||||
val templatesGroup: Group?
|
||||
|
||||
@@ -46,7 +46,6 @@ import com.kunzisoft.keepass.database.element.node.NodeIdUUID
|
||||
import com.kunzisoft.keepass.database.element.node.NodeVersioned
|
||||
import com.kunzisoft.keepass.database.element.security.MemoryProtectionConfig
|
||||
import com.kunzisoft.keepass.database.element.template.Template
|
||||
import com.kunzisoft.keepass.database.element.template.TemplateEngine
|
||||
import com.kunzisoft.keepass.database.element.template.TemplateEngineCompatible
|
||||
import com.kunzisoft.keepass.database.exception.UnknownKDF
|
||||
import com.kunzisoft.keepass.database.file.DatabaseHeaderKDBX.Companion.FILE_VERSION_31
|
||||
@@ -134,7 +133,7 @@ class DatabaseKDBX : DatabaseVersioned<UUID, UUID, GroupKDBX, EntryKDBX> {
|
||||
*/
|
||||
constructor(databaseName: String,
|
||||
rootName: String,
|
||||
templateGroupName: String? = null) {
|
||||
templatesGroupName: String? = null) {
|
||||
name = databaseName
|
||||
kdbxVersion = FILE_VERSION_31
|
||||
val group = createGroup().apply {
|
||||
@@ -142,20 +141,10 @@ class DatabaseKDBX : DatabaseVersioned<UUID, UUID, GroupKDBX, EntryKDBX> {
|
||||
icon.standard = getStandardIcon(IconImageStandard.FOLDER_ID)
|
||||
}
|
||||
rootGroup = group
|
||||
if (templateGroupName != null) {
|
||||
val templateGroup = createGroup().apply {
|
||||
title = templateGroupName
|
||||
icon.standard = getStandardIcon(IconImageStandard.BUILD_ID)
|
||||
}
|
||||
addGroupTo(templateGroup, rootGroup)
|
||||
entryTemplatesGroup = templateGroup.id
|
||||
|
||||
// Build default templates
|
||||
TemplateEngine.getDefaults().forEach { defaultTemplate ->
|
||||
mTemplateEngine.createTemplateEntry(defaultTemplate).also {
|
||||
addEntryTo(it, templateGroup)
|
||||
}
|
||||
}
|
||||
if (templatesGroupName != null) {
|
||||
val templatesGroup = mTemplateEngine.createNewTemplatesGroup(templatesGroupName)
|
||||
entryTemplatesGroup = templatesGroup.id
|
||||
entryTemplatesGroupChanged = templatesGroup.lastModificationTime
|
||||
}
|
||||
}
|
||||
|
||||
@@ -357,21 +346,16 @@ class DatabaseKDBX : DatabaseVersioned<UUID, UUID, GroupKDBX, EntryKDBX> {
|
||||
return entryTemplatesGroup != UUID_ZERO
|
||||
}
|
||||
|
||||
fun enableTemplatesGroup(enable: Boolean, resources: Resources) {
|
||||
fun enableTemplatesGroup(enable: Boolean, templatesGroupName: String) {
|
||||
// Create templates group only if a group with a valid name don't already exists
|
||||
val firstGroupWithValidName = getGroupIndexes().firstOrNull {
|
||||
it.title == TemplateEngine.getDefaultTemplateGroupName(resources)
|
||||
it.title == templatesGroupName
|
||||
}
|
||||
if (enable) {
|
||||
val uuidTemplatesGroup = if (firstGroupWithValidName == null) {
|
||||
val newUuidTemplatesGroup = mTemplateEngine.createNewTemplatesGroup(resources)
|
||||
addGroupTo(newUuidTemplatesGroup, rootGroup)
|
||||
newUuidTemplatesGroup
|
||||
} else {
|
||||
firstGroupWithValidName
|
||||
}
|
||||
entryTemplatesGroup = uuidTemplatesGroup.id
|
||||
entryTemplatesGroupChanged = uuidTemplatesGroup.lastModificationTime
|
||||
val templatesGroup = firstGroupWithValidName
|
||||
?: mTemplateEngine.createNewTemplatesGroup(templatesGroupName)
|
||||
entryTemplatesGroup = templatesGroup.id
|
||||
entryTemplatesGroupChanged = templatesGroup.lastModificationTime
|
||||
} else {
|
||||
removeTemplatesGroup()
|
||||
}
|
||||
|
||||
@@ -42,14 +42,22 @@ abstract class TemplateEngine(private val mDatabase: DatabaseKDBX) {
|
||||
return Template(CREATION)
|
||||
}
|
||||
|
||||
fun createNewTemplatesGroup(resources: Resources): GroupKDBX {
|
||||
return mDatabase.createGroup().apply {
|
||||
title = getDefaultTemplateGroupName(resources)
|
||||
icon.standard = mDatabase.getStandardIcon(IconImageStandard.FOLDER_ID)
|
||||
fun createNewTemplatesGroup(templatesGroupName: String): GroupKDBX {
|
||||
val newTemplatesGroup = mDatabase.createGroup().apply {
|
||||
title = templatesGroupName
|
||||
icon.standard = mDatabase.getStandardIcon(IconImageStandard.BUILD_ID)
|
||||
enableAutoType = false
|
||||
enableSearching = false
|
||||
isExpanded = false
|
||||
}
|
||||
mDatabase.addGroupTo(newTemplatesGroup, mDatabase.rootGroup)
|
||||
// Build default templates
|
||||
getDefaults().forEach { defaultTemplate ->
|
||||
createTemplateEntry(defaultTemplate).also {
|
||||
mDatabase.addEntryTo(it, newTemplatesGroup)
|
||||
}
|
||||
}
|
||||
return newTemplatesGroup
|
||||
}
|
||||
|
||||
fun clearCache() {
|
||||
|
||||
@@ -38,6 +38,7 @@ import com.kunzisoft.keepass.database.crypto.kdf.KdfEngine
|
||||
import com.kunzisoft.keepass.database.element.Database
|
||||
import com.kunzisoft.keepass.database.element.Group
|
||||
import com.kunzisoft.keepass.database.element.database.CompressionAlgorithm
|
||||
import com.kunzisoft.keepass.database.element.template.TemplateEngine
|
||||
import com.kunzisoft.keepass.services.DatabaseTaskNotificationService
|
||||
import com.kunzisoft.keepass.settings.preference.*
|
||||
import com.kunzisoft.keepass.settings.preferencedialogfragment.*
|
||||
@@ -247,7 +248,9 @@ class NestedDatabaseSettingsFragment : NestedSettingsFragment(), DatabaseRetriev
|
||||
isEnabled = if (!mDatabaseReadOnly) {
|
||||
setOnPreferenceChangeListener { _, newValue ->
|
||||
val templatesEnabled = newValue as Boolean
|
||||
database.enableTemplates(templatesEnabled, resources)
|
||||
database.enableTemplates(templatesEnabled,
|
||||
TemplateEngine.getDefaultTemplateGroupName(resources)
|
||||
)
|
||||
refreshTemplatesGroup(database)
|
||||
// Save the database if not in readonly mode
|
||||
saveDatabase(mDatabaseAutoSaveEnabled)
|
||||
@@ -258,7 +261,7 @@ class NestedDatabaseSettingsFragment : NestedSettingsFragment(), DatabaseRetriev
|
||||
false
|
||||
}
|
||||
}
|
||||
// Recycle Bin group
|
||||
// Refresh templates group
|
||||
refreshTemplatesGroup(database)
|
||||
} else {
|
||||
templatesGroupPrefCategory?.isVisible = false
|
||||
|
||||
Reference in New Issue
Block a user