mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
Better recycle bin implementation
This commit is contained in:
@@ -23,9 +23,7 @@ import android.content.ContentResolver
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.res.Resources
|
import android.content.res.Resources
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Build
|
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import com.kunzisoft.keepass.app.database.FileDatabaseHistoryAction
|
|
||||||
import com.kunzisoft.keepass.database.action.node.NodeHandler
|
import com.kunzisoft.keepass.database.action.node.NodeHandler
|
||||||
import com.kunzisoft.keepass.database.crypto.EncryptionAlgorithm
|
import com.kunzisoft.keepass.database.crypto.EncryptionAlgorithm
|
||||||
import com.kunzisoft.keepass.database.crypto.kdf.KdfEngine
|
import com.kunzisoft.keepass.database.crypto.kdf.KdfEngine
|
||||||
@@ -446,10 +444,10 @@ class Database {
|
|||||||
val recycleBin: Group?
|
val recycleBin: Group?
|
||||||
get() {
|
get() {
|
||||||
mDatabaseKDB?.backupGroup?.let {
|
mDatabaseKDB?.backupGroup?.let {
|
||||||
return Group(it)
|
return getGroupById(it.nodeId) ?: Group(it)
|
||||||
}
|
}
|
||||||
mDatabaseKDBX?.recycleBin?.let {
|
mDatabaseKDBX?.recycleBin?.let {
|
||||||
return Group(it)
|
return getGroupById(it.nodeId) ?: Group(it)
|
||||||
}
|
}
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
@@ -1100,47 +1098,41 @@ class Database {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun recycle(entry: Entry, resources: Resources) {
|
fun recycle(entry: Entry, resources: Resources) {
|
||||||
entry.entryKDB?.let {
|
ensureRecycleBinExists(resources)
|
||||||
mDatabaseKDB?.recycle(it)
|
entry.parent?.let { parent ->
|
||||||
|
removeEntryFrom(entry, parent)
|
||||||
}
|
}
|
||||||
entry.entryKDBX?.let {
|
recycleBin?.let {
|
||||||
mDatabaseKDBX?.recycle(it, resources)
|
addEntryTo(entry, it)
|
||||||
}
|
}
|
||||||
|
entry.afterAssignNewParent()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun recycle(group: Group, resources: Resources) {
|
fun recycle(group: Group, resources: Resources) {
|
||||||
group.groupKDB?.let {
|
ensureRecycleBinExists(resources)
|
||||||
mDatabaseKDB?.recycle(it)
|
group.parent?.let { parent ->
|
||||||
|
removeGroupFrom(group, parent)
|
||||||
}
|
}
|
||||||
group.groupKDBX?.let {
|
recycleBin?.let {
|
||||||
mDatabaseKDBX?.recycle(it, resources)
|
addGroupTo(group, it)
|
||||||
}
|
}
|
||||||
|
group.afterAssignNewParent()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun undoRecycle(entry: Entry, parent: Group) {
|
fun undoRecycle(entry: Entry, parent: Group) {
|
||||||
entry.entryKDB?.let { entryKDB ->
|
recycleBin?.let { it ->
|
||||||
parent.groupKDB?.let { parentKDB ->
|
removeEntryFrom(entry, it)
|
||||||
mDatabaseKDB?.undoRecycle(entryKDB, parentKDB)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
entry.entryKDBX?.let { entryKDBX ->
|
|
||||||
parent.groupKDBX?.let { parentKDBX ->
|
|
||||||
mDatabaseKDBX?.undoRecycle(entryKDBX, parentKDBX)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
addEntryTo(entry, parent)
|
||||||
|
entry.afterAssignNewParent()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun undoRecycle(group: Group, parent: Group) {
|
fun undoRecycle(group: Group, parent: Group) {
|
||||||
group.groupKDB?.let { groupKDB ->
|
recycleBin?.let {
|
||||||
parent.groupKDB?.let { parentKDB ->
|
removeGroupFrom(group, it)
|
||||||
mDatabaseKDB?.undoRecycle(groupKDB, parentKDB)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
group.groupKDBX?.let { entryKDBX ->
|
|
||||||
parent.groupKDBX?.let { parentKDBX ->
|
|
||||||
mDatabaseKDBX?.undoRecycle(entryKDBX, parentKDBX)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
addGroupTo(group, parent)
|
||||||
|
group.afterAssignNewParent()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun startManageEntry(entry: Entry?) {
|
fun startManageEntry(entry: Entry?) {
|
||||||
|
|||||||
@@ -219,28 +219,6 @@ class DatabaseKDB : DatabaseVersioned<Int, UUID, GroupKDB, EntryKDB>() {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
fun recycle(group: GroupKDB) {
|
|
||||||
removeGroupFrom(group, group.parent)
|
|
||||||
addGroupTo(group, backupGroup)
|
|
||||||
group.afterAssignNewParent()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun recycle(entry: EntryKDB) {
|
|
||||||
removeEntryFrom(entry, entry.parent)
|
|
||||||
addEntryTo(entry, backupGroup)
|
|
||||||
entry.afterAssignNewParent()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun undoRecycle(group: GroupKDB, origParent: GroupKDB) {
|
|
||||||
removeGroupFrom(group, backupGroup)
|
|
||||||
addGroupTo(group, origParent)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun undoRecycle(entry: EntryKDB, origParent: GroupKDB) {
|
|
||||||
removeEntryFrom(entry, backupGroup)
|
|
||||||
addEntryTo(entry, origParent)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun buildNewAttachment(): BinaryData {
|
fun buildNewAttachment(): BinaryData {
|
||||||
// Generate an unique new file
|
// Generate an unique new file
|
||||||
return attachmentPool.put { uniqueBinaryId ->
|
return attachmentPool.put { uniqueBinaryId ->
|
||||||
|
|||||||
@@ -305,7 +305,7 @@ class DatabaseKDBX : DatabaseVersioned<UUID, UUID, GroupKDBX, EntryKDBX> {
|
|||||||
|
|
||||||
// Retrieve recycle bin in index
|
// Retrieve recycle bin in index
|
||||||
val recycleBin: GroupKDBX?
|
val recycleBin: GroupKDBX?
|
||||||
get() = if (recycleBinUUID == UUID_ZERO) null else getGroupByUUID(recycleBinUUID)
|
get() = getGroupByUUID(recycleBinUUID)
|
||||||
|
|
||||||
val lastSelectedGroup: GroupKDBX?
|
val lastSelectedGroup: GroupKDBX?
|
||||||
get() = getGroupByUUID(lastSelectedGroupUUID)
|
get() = getGroupByUUID(lastSelectedGroupUUID)
|
||||||
@@ -753,30 +753,6 @@ class DatabaseKDBX : DatabaseVersioned<UUID, UUID, GroupKDBX, EntryKDBX> {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
fun recycle(group: GroupKDBX, resources: Resources) {
|
|
||||||
ensureRecycleBinExists(resources)
|
|
||||||
removeGroupFrom(group, group.parent)
|
|
||||||
addGroupTo(group, recycleBin)
|
|
||||||
group.afterAssignNewParent()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun recycle(entry: EntryKDBX, resources: Resources) {
|
|
||||||
ensureRecycleBinExists(resources)
|
|
||||||
removeEntryFrom(entry, entry.parent)
|
|
||||||
addEntryTo(entry, recycleBin)
|
|
||||||
entry.afterAssignNewParent()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun undoRecycle(group: GroupKDBX, origParent: GroupKDBX) {
|
|
||||||
removeGroupFrom(group, recycleBin)
|
|
||||||
addGroupTo(group, origParent)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun undoRecycle(entry: EntryKDBX, origParent: GroupKDBX) {
|
|
||||||
removeEntryFrom(entry, recycleBin)
|
|
||||||
addEntryTo(entry, origParent)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getDeletedObjects(): List<DeletedObject> {
|
fun getDeletedObjects(): List<DeletedObject> {
|
||||||
return deletedObjects
|
return deletedObjects
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user