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