From 8af70fa7b564d516c81c380c3f0cc240121deacf Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Sat, 12 Feb 2022 13:20:22 +0100 Subject: [PATCH] Fix merge and save copy in KDB database --- .../java/com/kunzisoft/keepass/activities/GroupActivity.kt | 5 ++++- .../java/com/kunzisoft/keepass/database/element/Database.kt | 3 +++ .../keepass/database/element/database/DatabaseKDB.kt | 3 +++ .../keepass/database/element/database/DatabaseKDBX.kt | 3 +++ .../keepass/database/element/database/DatabaseVersioned.kt | 1 + 5 files changed, 14 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt index 655c1ed6b..4dada8132 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt @@ -276,6 +276,9 @@ class GroupActivity : DatabaseLockActivity(), inflateMenu(R.menu.settings) inflateMenu(R.menu.database_extra) inflateMenu(R.menu.about) + if (!mMergeDataAllowed) { + menu.findItem(R.id.menu_merge_from)?.isVisible = false + } setNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.menu_app_settings -> { @@ -289,7 +292,7 @@ class GroupActivity : DatabaseLockActivity(), mExternalFileHelper?.createDocument( getString(R.string.database_file_name_default) + getString(R.string.database_file_name_copy) + - getString(R.string.database_file_extension_default)) + mDatabase?.defaultFileExtension) } R.id.menu_contribute -> { UriUtil.gotoUrl(this@GroupActivity, R.string.contribution_url) diff --git a/app/src/main/java/com/kunzisoft/keepass/database/element/Database.kt b/app/src/main/java/com/kunzisoft/keepass/database/element/Database.kt index a643837fb..9c17215e5 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/element/Database.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/element/Database.kt @@ -274,6 +274,9 @@ class Database { } } + val defaultFileExtension: String + get() = mDatabaseKDB?.defaultFileExtension ?: mDatabaseKDBX?.defaultFileExtension ?: ".bin" + val type: Class<*>? get() = mDatabaseKDB?.javaClass ?: mDatabaseKDBX?.javaClass diff --git a/app/src/main/java/com/kunzisoft/keepass/database/element/database/DatabaseKDB.kt b/app/src/main/java/com/kunzisoft/keepass/database/element/database/DatabaseKDB.kt index c5cf1ce59..f10901014 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/element/database/DatabaseKDB.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/element/database/DatabaseKDB.kt @@ -64,6 +64,9 @@ class DatabaseKDB : DatabaseVersioned() { override val version: String get() = "V1" + override val defaultFileExtension: String + get() = ".kdb" + init { // New manual root because KDB contains multiple root groups (here available with getRootGroups()) rootGroup = createGroup().apply { diff --git a/app/src/main/java/com/kunzisoft/keepass/database/element/database/DatabaseKDBX.kt b/app/src/main/java/com/kunzisoft/keepass/database/element/database/DatabaseKDBX.kt index 9ffd08198..adc05d675 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/element/database/DatabaseKDBX.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/element/database/DatabaseKDBX.kt @@ -201,6 +201,9 @@ class DatabaseKDBX : DatabaseVersioned { return "V2 - KDBX$kdbxStringVersion" } + override val defaultFileExtension: String + get() = ".kdbx" + private open class NodeOperationHandler : NodeHandler() { var containsCustomData = false override fun operate(node: T): Boolean { diff --git a/app/src/main/java/com/kunzisoft/keepass/database/element/database/DatabaseVersioned.kt b/app/src/main/java/com/kunzisoft/keepass/database/element/database/DatabaseVersioned.kt index f128797cc..3ffae91b2 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/element/database/DatabaseVersioned.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/element/database/DatabaseVersioned.kt @@ -62,6 +62,7 @@ abstract class DatabaseVersioned< protected set abstract val version: String + abstract val defaultFileExtension: String /** * To manage binaries in faster way