Improve InputWeekDay (easy check with timestamp and external access to WeekdayPicker view)

This commit is contained in:
Philoul 2022-06-05 20:29:04 +02:00
parent 7fac5a87f3
commit 72d4feffc4

View file

@ -49,7 +49,7 @@ class InputWeekDay : Element() {
} }
val weekdays = BooleanArray(DayOfWeek.values().size) val weekdays = BooleanArray(DayOfWeek.values().size)
var view: WeekdayPicker? = null
init { init {
for (day in DayOfWeek.values()) set(day, false) for (day in DayOfWeek.values()) set(day, false)
} }
@ -65,6 +65,11 @@ class InputWeekDay : Element() {
fun isSet(day: DayOfWeek): Boolean = weekdays[day.ordinal] fun isSet(day: DayOfWeek): Boolean = weekdays[day.ordinal]
fun isSet(timestamp: Long): Boolean {
val scheduledDayOfWeek = Calendar.getInstance().also { it.time = Date(timestamp) }
return isSet(Objects.requireNonNull(DayOfWeek.fromCalendarInt(scheduledDayOfWeek[Calendar.DAY_OF_WEEK])))
}
fun getSelectedDays(): List<Int> { fun getSelectedDays(): List<Int> {
val selectedDays: MutableList<Int> = ArrayList() val selectedDays: MutableList<Int> = ArrayList()
for (i in weekdays.indices) { for (i in weekdays.indices) {
@ -76,11 +81,12 @@ class InputWeekDay : Element() {
} }
override fun addToLayout(root: LinearLayout) { override fun addToLayout(root: LinearLayout) {
root.addView( view = WeekdayPicker(root.context).apply {
WeekdayPicker(root.context).apply {
setSelectedDays(getSelectedDays()) setSelectedDays(getSelectedDays())
setOnWeekdaysChangeListener { i: Int, selected: Boolean -> set(DayOfWeek.fromCalendarInt(i), selected) } setOnWeekdaysChangeListener { i: Int, selected: Boolean -> set(DayOfWeek.fromCalendarInt(i), selected) }
} }
root.addView(
view
) )
} }
} }