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 package com.simplemobiletools.calendar.pro.adapters
import android.annotation.SuppressLint
import android.app.Activity import android.app.Activity
import android.content.res.ColorStateList import android.content.res.ColorStateList
import android.graphics.Color import android.graphics.Color
@@ -12,7 +11,7 @@ import com.simplemobiletools.calendar.pro.R
import com.simplemobiletools.commons.extensions.applyColorFilter import com.simplemobiletools.commons.extensions.applyColorFilter
import kotlinx.android.synthetic.main.checkable_color_button.view.* 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>() { RecyclerView.Adapter<CheckableColorAdapter.CheckableColorViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): 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 override fun getItemCount() = colors.size
@SuppressLint("NotifyDataSetChanged")
private fun updateSelection(color: Int) { private fun updateSelection(color: Int) {
currentColor = color currentColor = color
notifyDataSetChanged() callback(color)
} }
inner class CheckableColorViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { 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.app.Activity
import android.view.ViewGroup import android.view.ViewGroup
import androidx.appcompat.app.AlertDialog
import com.simplemobiletools.calendar.pro.R import com.simplemobiletools.calendar.pro.R
import com.simplemobiletools.calendar.pro.adapters.CheckableColorAdapter import com.simplemobiletools.calendar.pro.adapters.CheckableColorAdapter
import com.simplemobiletools.calendar.pro.views.AutoGridLayoutManager 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.* 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) { class SelectEventColorDialog(val activity: Activity, val colors: IntArray, var currentColor: Int, val callback: (color: Int) -> Unit) {
private var dialog: AlertDialog? = null
init { init {
val view = activity.layoutInflater.inflate(R.layout.dialog_select_event_color, null) as ViewGroup 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 { view.color_grid.apply {
val width = activity.resources.getDimensionPixelSize(R.dimen.smaller_icon_size) val width = activity.resources.getDimensionPixelSize(R.dimen.smaller_icon_size)
val spacing = activity.resources.getDimensionPixelSize(R.dimen.small_margin) * 2 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() activity.getAlertDialogBuilder()
.apply { .apply {
setPositiveButton(R.string.ok) { dialog, _ ->
callback(colorAdapter.currentColor)
dialog?.dismiss()
}
setNeutralButton(R.string.default_calendar_color) { dialog, _ -> setNeutralButton(R.string.default_calendar_color) { dialog, _ ->
callback(0) callback(0)
dialog?.dismiss() dialog?.dismiss()
} }
activity.setupDialogStuff(view, this, R.string.event_color) activity.setupDialogStuff(view, this, R.string.event_color) {
dialog = it
}
} }
} }
} }