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
|
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) {
|
||||||
|
@@ -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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user