From 56cb5953dde4ed3ce373b34ec152b8a857cb8a54 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Fri, 12 Sep 2025 13:00:56 +0200 Subject: [PATCH] fix: Deletable recycle bin #2163 --- .../activities/dialogs/SortDialogFragment.kt | 15 ++------ .../activities/fragments/GroupFragment.kt | 38 +++++++------------ 2 files changed, 18 insertions(+), 35 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/dialogs/SortDialogFragment.kt b/app/src/main/java/com/kunzisoft/keepass/activities/dialogs/SortDialogFragment.kt index 45cbb9db1..78972aa76 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/dialogs/SortDialogFragment.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/dialogs/SortDialogFragment.kt @@ -176,21 +176,14 @@ class SortDialogFragment : DatabaseDialogFragment() { return bundle } - fun getInstance(sortNodeEnum: SortNodeEnum, - ascending: Boolean, - groupsBefore: Boolean): SortDialogFragment { - val bundle = buildBundle(sortNodeEnum, ascending, groupsBefore) - val fragment = SortDialogFragment() - fragment.arguments = bundle - return fragment - } - fun getInstance(sortNodeEnum: SortNodeEnum, ascending: Boolean, groupsBefore: Boolean, - recycleBinBottom: Boolean): SortDialogFragment { + recycleBinBottom: Boolean?): SortDialogFragment { val bundle = buildBundle(sortNodeEnum, ascending, groupsBefore) - bundle.putBoolean(SORT_RECYCLE_BIN_BOTTOM_BUNDLE_KEY, recycleBinBottom) + recycleBinBottom?.let { + bundle.putBoolean(SORT_RECYCLE_BIN_BOTTOM_BUNDLE_KEY, recycleBinBottom) + } val fragment = SortDialogFragment() fragment.arguments = bundle return fragment diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/fragments/GroupFragment.kt b/app/src/main/java/com/kunzisoft/keepass/activities/fragments/GroupFragment.kt index 7a7cf5acf..f26cc3a70 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/fragments/GroupFragment.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/fragments/GroupFragment.kt @@ -76,9 +76,6 @@ class GroupFragment : DatabaseFragment(), SortDialogFragment.SortSelectionListen private var specialMode: SpecialMode = SpecialMode.DEFAULT - private var mRecycleBinEnable: Boolean = false - private var mRecycleBin: Group? = null - private var mRecycleViewScrollListener = object : RecyclerView.OnScrollListener() { override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) { super.onScrollStateChanged(recyclerView, newState) @@ -102,21 +99,14 @@ class GroupFragment : DatabaseFragment(), SortDialogFragment.SortSelectionListen R.id.menu_sort -> { context?.let { context -> val sortDialogFragment: SortDialogFragment = - if (mRecycleBinEnable) { - SortDialogFragment.getInstance( - PreferencesUtil.getListSort(context), - PreferencesUtil.getAscendingSort(context), - PreferencesUtil.getGroupsBeforeSort(context), + SortDialogFragment.getInstance( + PreferencesUtil.getListSort(context), + PreferencesUtil.getAscendingSort(context), + PreferencesUtil.getGroupsBeforeSort(context), + if (mDatabase?.isRecycleBinEnabled == true) { PreferencesUtil.getRecycleBinBottomSort(context) - ) - } else { - SortDialogFragment.getInstance( - PreferencesUtil.getListSort(context), - PreferencesUtil.getAscendingSort(context), - PreferencesUtil.getGroupsBeforeSort(context) - ) - } - + } else null + ) sortDialogFragment.show(childFragmentManager, "sortDialog") } true @@ -165,9 +155,6 @@ class GroupFragment : DatabaseFragment(), SortDialogFragment.SortSelectionListen } override fun onDatabaseRetrieved(database: ContextualDatabase?) { - mRecycleBinEnable = database?.isRecycleBinEnabled == true - mRecycleBin = database?.recycleBin - context?.let { context -> database?.let { database -> mAdapter = NodesAdapter(context, database).apply { @@ -312,6 +299,11 @@ class GroupFragment : DatabaseFragment(), SortDialogFragment.SortSelectionListen } } + private fun containsRecycleBin(nodes: List): Boolean { + return mDatabase?.isRecycleBinEnabled == true + && nodes.any { it == mDatabase?.recycleBin } + } + fun actionNodesCallback(database: ContextualDatabase, nodes: List, menuListener: NodesActionMenuListener?, @@ -336,8 +328,7 @@ class GroupFragment : DatabaseFragment(), SortDialogFragment.SortSelectionListen // Open and Edit for a single item if (nodes.size == 1) { // Edition - if (database.isReadOnly - || (mRecycleBinEnable && nodes[0] == mRecycleBin)) { + if (database.isReadOnly || containsRecycleBin(nodes)) { menu?.removeItem(R.id.menu_edit) } } else { @@ -357,8 +348,7 @@ class GroupFragment : DatabaseFragment(), SortDialogFragment.SortSelectionListen } // Deletion - if (database.isReadOnly - || (mRecycleBinEnable && nodes.any { it == mRecycleBin })) { + if (database.isReadOnly || containsRecycleBin(nodes)) { menu?.removeItem(R.id.menu_delete) } }