From d1b97a4b89031db16d2258931a5fb5cfa16a4d99 Mon Sep 17 00:00:00 2001 From: Futsch1 Date: Sun, 9 Feb 2025 22:25:12 +0100 Subject: [PATCH] Codeclimate fixes --- .../medicine/EditMedicineMenuProvider.kt | 6 +-- .../medtimer/medicine/MedicinesMenu.kt | 17 +++++-- .../medtimer/medicine/tags/TagViewHolder.kt | 50 ++++++++++++------- 3 files changed, 47 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/com/futsch1/medtimer/medicine/EditMedicineMenuProvider.kt b/app/src/main/java/com/futsch1/medtimer/medicine/EditMedicineMenuProvider.kt index e6d22a65..3e971efa 100644 --- a/app/src/main/java/com/futsch1/medtimer/medicine/EditMedicineMenuProvider.kt +++ b/app/src/main/java/com/futsch1/medtimer/medicine/EditMedicineMenuProvider.kt @@ -24,13 +24,11 @@ class EditMedicineMenuProvider( menuInflater.inflate(R.menu.edit_medicine, menu) menu.setGroupDividerEnabled(true) - menu.findItem(R.id.activate_all).setOnMenuItemClickListener { _: MenuItem? -> + MedicinesMenu.setupActivateMenu(menu, R.id.activate_all) { setRemindersActive(true) - true } - menu.findItem(R.id.deactivate_all).setOnMenuItemClickListener { _: MenuItem? -> + MedicinesMenu.setupActivateMenu(menu, R.id.deactivate_all) { setRemindersActive(false) - true } setupDeleteMenu(menu) } diff --git a/app/src/main/java/com/futsch1/medtimer/medicine/MedicinesMenu.kt b/app/src/main/java/com/futsch1/medtimer/medicine/MedicinesMenu.kt index 9ca9b150..d2814896 100644 --- a/app/src/main/java/com/futsch1/medtimer/medicine/MedicinesMenu.kt +++ b/app/src/main/java/com/futsch1/medtimer/medicine/MedicinesMenu.kt @@ -22,13 +22,11 @@ class MedicinesMenu( menuInflater.inflate(R.menu.medicines, menu) menu.setGroupDividerEnabled(true) - menu.findItem(R.id.activate_all).setOnMenuItemClickListener { _: MenuItem? -> + setupActivateMenu(menu, R.id.activate_all) { setRemindersActive(true) - true } - menu.findItem(R.id.deactivate_all).setOnMenuItemClickListener { _: MenuItem? -> + setupActivateMenu(menu, R.id.deactivate_all) { setRemindersActive(false) - true } } @@ -50,4 +48,15 @@ class MedicinesMenu( return false } + companion object { + fun setupActivateMenu( + menu: Menu, menuId: Int, activateCallback: () -> Unit + ) { + menu.findItem(menuId).setOnMenuItemClickListener { _: MenuItem? -> + activateCallback() + true + } + } + } + } diff --git a/app/src/main/java/com/futsch1/medtimer/medicine/tags/TagViewHolder.kt b/app/src/main/java/com/futsch1/medtimer/medicine/tags/TagViewHolder.kt index f9323ffe..678a4f70 100644 --- a/app/src/main/java/com/futsch1/medtimer/medicine/tags/TagViewHolder.kt +++ b/app/src/main/java/com/futsch1/medtimer/medicine/tags/TagViewHolder.kt @@ -20,26 +20,40 @@ class TagViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { text = tagWithState.tag.name isChecked = tagWithState.isSelected gravity = Gravity.CENTER - if (selectCallback != null) { - setOnCheckedChangeListener { _, isChecked -> - tagWithState.isSelected = isChecked - selectCallback(tagWithState) - } - } else { - isCheckable = false - setOnClickListener { - (this.parent as View).performClick() - } - rippleColor = ColorStateList.valueOf(Color.TRANSPARENT) - isFocusable = false + setupSelectable(selectCallback, tagWithState) + setupDeletable(deleteCallback, tagWithState) + } + } + + private fun Chip.setupDeletable( + deleteCallback: TagCallback?, + tagWithState: TagWithState + ) { + if (deleteCallback != null) { + setOnCloseIconClickListener { + deleteCallback(tagWithState) + } + } else { + isCloseIconVisible = false + } + } + + private fun Chip.setupSelectable( + selectCallback: TagCallback?, + tagWithState: TagWithState + ) { + if (selectCallback != null) { + setOnCheckedChangeListener { _, isChecked -> + tagWithState.isSelected = isChecked + selectCallback(tagWithState) } - if (deleteCallback != null) { - setOnCloseIconClickListener { - deleteCallback(tagWithState) - } - } else { - isCloseIconVisible = false + } else { + isCheckable = false + setOnClickListener { + (this.parent as View).performClick() } + rippleColor = ColorStateList.valueOf(Color.TRANSPARENT) + isFocusable = false } } } \ No newline at end of file