From 4a3fbf194b07a317889662b89604aced35f4519c Mon Sep 17 00:00:00 2001 From: Naveen Date: Tue, 11 Apr 2023 15:29:16 +0530 Subject: [PATCH] Automatically dismiss when a color is selected --- .../pro/adapters/CheckableColorAdapter.kt | 6 ++---- .../pro/dialogs/SelectEventColorDialog.kt | 16 ++++++++++------ 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/adapters/CheckableColorAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/adapters/CheckableColorAdapter.kt index 523696159..a77584e32 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/adapters/CheckableColorAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/adapters/CheckableColorAdapter.kt @@ -1,6 +1,5 @@ package com.simplemobiletools.calendar.pro.adapters -import android.annotation.SuppressLint import android.app.Activity import android.content.res.ColorStateList import android.graphics.Color @@ -12,7 +11,7 @@ import com.simplemobiletools.calendar.pro.R import com.simplemobiletools.commons.extensions.applyColorFilter import kotlinx.android.synthetic.main.checkable_color_button.view.* -class CheckableColorAdapter(private val activity: Activity, private val colors: IntArray, var currentColor: Int) : +class CheckableColorAdapter(private val activity: Activity, private val colors: IntArray, var currentColor: Int, val callback: (color: Int) -> Unit) : RecyclerView.Adapter() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CheckableColorViewHolder { @@ -28,10 +27,9 @@ class CheckableColorAdapter(private val activity: Activity, private val colors: override fun getItemCount() = colors.size - @SuppressLint("NotifyDataSetChanged") private fun updateSelection(color: Int) { currentColor = color - notifyDataSetChanged() + callback(color) } inner class CheckableColorViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/dialogs/SelectEventColorDialog.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/dialogs/SelectEventColorDialog.kt index 3135fe687..8bd64cc98 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/dialogs/SelectEventColorDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/dialogs/SelectEventColorDialog.kt @@ -2,6 +2,7 @@ package com.simplemobiletools.calendar.pro.dialogs import android.app.Activity import android.view.ViewGroup +import androidx.appcompat.app.AlertDialog import com.simplemobiletools.calendar.pro.R import com.simplemobiletools.calendar.pro.adapters.CheckableColorAdapter import com.simplemobiletools.calendar.pro.views.AutoGridLayoutManager @@ -10,10 +11,15 @@ import com.simplemobiletools.commons.extensions.setupDialogStuff import kotlinx.android.synthetic.main.dialog_select_event_color.view.* class SelectEventColorDialog(val activity: Activity, val colors: IntArray, var currentColor: Int, val callback: (color: Int) -> Unit) { + private var dialog: AlertDialog? = null init { val view = activity.layoutInflater.inflate(R.layout.dialog_select_event_color, null) as ViewGroup - val colorAdapter = CheckableColorAdapter(activity, colors, currentColor) + val colorAdapter = CheckableColorAdapter(activity, colors, currentColor) { color -> + callback(color) + dialog?.dismiss() + } + view.color_grid.apply { val width = activity.resources.getDimensionPixelSize(R.dimen.smaller_icon_size) val spacing = activity.resources.getDimensionPixelSize(R.dimen.small_margin) * 2 @@ -23,16 +29,14 @@ class SelectEventColorDialog(val activity: Activity, val colors: IntArray, var c activity.getAlertDialogBuilder() .apply { - setPositiveButton(R.string.ok) { dialog, _ -> - callback(colorAdapter.currentColor) - dialog?.dismiss() - } setNeutralButton(R.string.default_calendar_color) { dialog, _ -> callback(0) dialog?.dismiss() } - activity.setupDialogStuff(view, this, R.string.event_color) + activity.setupDialogStuff(view, this, R.string.event_color) { + dialog = it + } } } }