Automatically dismiss when a color is selected

This commit is contained in:
Naveen
2023-04-11 15:29:16 +05:30
parent 885f551c83
commit 4a3fbf194b
2 changed files with 12 additions and 10 deletions

View File

@@ -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<CheckableColorAdapter.CheckableColorViewHolder>() {
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) {

View File

@@ -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
}
}
}
}