From 3acf002f95ea9ffcc4ec7b1307694d655eff70b6 Mon Sep 17 00:00:00 2001 From: Charalampos Kardaris Date: Sun, 14 Dec 2025 22:25:23 +0100 Subject: [PATCH] [Fix] Issue #2812: Show duplicate action in long press menu (#2873) Co-authored-by: Sylvia van Os --- .../java/protect/card_locker/MainActivity.kt | 23 +++++++++++++++++++ app/src/main/res/menu/card_longclick_menu.xml | 8 ++++++- app/src/main/res/menu/card_view_menu.xml | 18 +++++++-------- 3 files changed, 39 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/protect/card_locker/MainActivity.kt b/app/src/main/java/protect/card_locker/MainActivity.kt index 6f544140a..05aef1cf1 100644 --- a/app/src/main/java/protect/card_locker/MainActivity.kt +++ b/app/src/main/java/protect/card_locker/MainActivity.kt @@ -105,6 +105,24 @@ class MainActivity : CatimaAppCompatActivity(), CardAdapterListener { inputMode.finish() return true } + R.id.action_duplicate -> { + require(mAdapter.selectedItemCount == 1) { "Cannot duplicate more than 1 card at a time" } + + startActivity( + Intent(applicationContext, LoyaltyCardEditActivity::class.java).apply { + putExtras(Bundle().apply { + putInt( + LoyaltyCardEditActivity.BUNDLE_ID, + mAdapter.getSelectedItems()[0].id + ) + putBoolean(LoyaltyCardEditActivity.BUNDLE_DUPLICATE_ID, true) + }) + } + ) + + inputMode.finish() + return true + } R.id.action_delete -> { MaterialAlertDialogBuilder(this@MainActivity).apply { // The following may seem weird, but it is necessary to give translators enough flexibility. @@ -824,6 +842,7 @@ class MainActivity : CatimaAppCompatActivity(), CardAdapterListener { ) val editItem = mCurrentActionMode!!.menu.findItem(R.id.action_edit) + val duplicateItem = mCurrentActionMode!!.menu.findItem(R.id.action_duplicate) val archiveItem = mCurrentActionMode!!.menu.findItem(R.id.action_archive) val unarchiveItem = mCurrentActionMode!!.menu.findItem(R.id.action_unarchive) val starItem = mCurrentActionMode!!.menu.findItem(R.id.action_star) @@ -861,12 +880,16 @@ class MainActivity : CatimaAppCompatActivity(), CardAdapterListener { unstarItem.isVisible = !hasUnstarred editItem.isVisible = true editItem.isEnabled = true + duplicateItem.isVisible = true + duplicateItem.isEnabled = true } else { starItem.isVisible = hasUnstarred unstarItem.isVisible = hasStarred editItem.isVisible = false editItem.isEnabled = false + duplicateItem.isVisible = false + duplicateItem.isEnabled = false } mCurrentActionMode!!.invalidate() diff --git a/app/src/main/res/menu/card_longclick_menu.xml b/app/src/main/res/menu/card_longclick_menu.xml index 9538c6d2a..0dd35681b 100644 --- a/app/src/main/res/menu/card_longclick_menu.xml +++ b/app/src/main/res/menu/card_longclick_menu.xml @@ -40,10 +40,16 @@ android:titleCondensed="@string/unarchive" app:showAsAction="never"/> + + - \ No newline at end of file + diff --git a/app/src/main/res/menu/card_view_menu.xml b/app/src/main/res/menu/card_view_menu.xml index 7d1e671fe..cc09017c8 100644 --- a/app/src/main/res/menu/card_view_menu.xml +++ b/app/src/main/res/menu/card_view_menu.xml @@ -21,25 +21,25 @@ app:showAsAction="always"> + + + - - -