mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
Allow to change root group
This commit is contained in:
@@ -165,9 +165,12 @@ class GroupActivity : DatabaseLockActivity(),
|
||||
// Open group on breadcrumb click
|
||||
onItemClickListener = { node, _ ->
|
||||
finishNodeAction()
|
||||
// If last item
|
||||
// If last item & not a virtual root group
|
||||
val currentGroup = mCurrentGroup
|
||||
if (currentGroup != null && node == currentGroup) {
|
||||
if (currentGroup != null && node == currentGroup
|
||||
&& (currentGroup != mDatabase?.rootGroup
|
||||
|| mDatabase?.rootGroupIsVirtual == false)
|
||||
) {
|
||||
launchDialogToShowGroupInfo(currentGroup)
|
||||
} else {
|
||||
mDatabase?.let { database ->
|
||||
@@ -178,7 +181,10 @@ class GroupActivity : DatabaseLockActivity(),
|
||||
onLongItemClickListener = { node, position ->
|
||||
finishNodeAction()
|
||||
val currentGroup = mCurrentGroup
|
||||
if (currentGroup != null && node == currentGroup && currentGroup.containsParent()) {
|
||||
if (currentGroup != null && node == currentGroup
|
||||
&& (currentGroup != mDatabase?.rootGroup
|
||||
|| mDatabase?.rootGroupIsVirtual == false)
|
||||
) {
|
||||
launchDialogForGroupUpdate(currentGroup)
|
||||
} else {
|
||||
onItemClickListener?.invoke(node, position)
|
||||
|
||||
@@ -42,6 +42,9 @@ class UpdateGroupRunnable constructor(
|
||||
// Update group with new values
|
||||
mNewGroup.touch(modified = true, touchParents = true)
|
||||
|
||||
if (database.rootGroup == mOldGroup) {
|
||||
database.rootGroup = mNewGroup
|
||||
}
|
||||
// Only change data in index
|
||||
database.updateGroup(mNewGroup)
|
||||
}
|
||||
@@ -50,6 +53,9 @@ class UpdateGroupRunnable constructor(
|
||||
override fun nodeFinish(): ActionNodesValues {
|
||||
if (!result.isSuccess) {
|
||||
// If we fail to save, back out changes to global structure
|
||||
if (database.rootGroup == mNewGroup) {
|
||||
database.rootGroup = mOldGroup
|
||||
}
|
||||
database.updateGroup(mOldGroup)
|
||||
}
|
||||
|
||||
|
||||
@@ -364,7 +364,7 @@ class Database {
|
||||
mDatabaseKDBX?.masterKey = masterKey
|
||||
}
|
||||
|
||||
val rootGroup: Group?
|
||||
var rootGroup: Group?
|
||||
get() {
|
||||
mDatabaseKDB?.rootGroup?.let {
|
||||
return Group(it)
|
||||
@@ -374,6 +374,25 @@ class Database {
|
||||
}
|
||||
return null
|
||||
}
|
||||
set(value) {
|
||||
value?.groupKDB?.let { rootKDB ->
|
||||
mDatabaseKDB?.rootGroup = rootKDB
|
||||
}
|
||||
value?.groupKDBX?.let { rootKDBX ->
|
||||
mDatabaseKDBX?.rootGroup = rootKDBX
|
||||
}
|
||||
}
|
||||
|
||||
val rootGroupIsVirtual: Boolean
|
||||
get() {
|
||||
mDatabaseKDB?.let {
|
||||
return true
|
||||
}
|
||||
mDatabaseKDBX?.let {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
/**
|
||||
* Do not modify groups here, used for read only
|
||||
|
||||
@@ -46,7 +46,7 @@ class DatabaseKDB : DatabaseVersioned<Int, UUID, GroupKDB, EntryKDB>() {
|
||||
init {
|
||||
// New manual root because KDB contains multiple root groups (here available with getRootGroups())
|
||||
rootGroup = createGroup().apply {
|
||||
icon.standard = getStandardIcon(IconImageStandard.FOLDER_ID)
|
||||
icon.standard = getStandardIcon(IconImageStandard.DATABASE_ID)
|
||||
}
|
||||
kdfListV3.add(KdfFactory.aesKdf)
|
||||
}
|
||||
|
||||
@@ -89,6 +89,7 @@ abstract class DatabaseVersioned<
|
||||
set(value) {
|
||||
field = value
|
||||
value?.let {
|
||||
removeGroupIndex(it)
|
||||
addGroupIndex(it)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,6 +81,7 @@ class IconImageStandard : IconImageDraw {
|
||||
const val CREDIT_CARD_ID = 37
|
||||
const val TRASH_ID = 43
|
||||
const val FOLDER_ID = 48
|
||||
const val DATABASE_ID = 50
|
||||
const val LIST_ID = 57
|
||||
const val BUILD_ID = 59
|
||||
const val STAR_ID = 61
|
||||
|
||||
Reference in New Issue
Block a user