mirror of
https://github.com/SimpleMobileTools/Simple-Calendar.git
synced 2025-06-05 21:59:17 +02:00
Automatically dismiss when a color is selected
This commit is contained in:
@@ -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) {
|
||||
|
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user