2 Commits

Author SHA1 Message Date
143713cd9b MainActivity: generate dynamic menu from last two weeks 2026-02-19 11:30:09 +01:00
000ac270f5 LunaEvent: rework sleep event
Make the UI more flexible and
slightly easier to understand.
2026-02-19 11:30:02 +01:00

View File

@@ -447,8 +447,8 @@ class MainActivity : AppCompatActivity() {
val invalidDurationTextColor = ContextCompat.getColor(this, R.color.danger)
// in seconds
var sleepBegin = event.time
var sleepEnd = event.time + event.quantity
var sleepStart = event.getStartTime()
var sleepEnd = event.getEndTime()
fun isValidTime(timeUnix: Long): Boolean {
val now = System.currentTimeMillis() / 1000
@@ -465,27 +465,31 @@ class MainActivity : AppCompatActivity() {
}
fun updateFields() {
datePickerBegin.text = DateUtils.formatDateTime(sleepBegin)
datePickerBegin.text = DateUtils.formatDateTime(sleepStart)
datePickerEnd.text = DateUtils.formatDateTime(sleepEnd)
durationTextView.setTextColor(currentDurationTextColor)
val duration = sleepEnd - sleepBegin
val duration = sleepEnd - sleepStart
if (duration == 0L) {
// baby is sleeping
durationTextView.text = "💤"
dateDelimiter.visibility = View.GONE
datePickerEnd.visibility = View.GONE
} else {
durationTextView.text = DateUtils.formatTimeDuration(applicationContext, duration)
if (!isValidTimeSpan(sleepBegin, sleepEnd)) {
if (!isValidTimeSpan(sleepStart, sleepEnd)) {
durationTextView.setTextColor(invalidDurationTextColor)
}
dateDelimiter.visibility = View.VISIBLE
datePickerEnd.visibility = View.VISIBLE
}
datePickerBegin.setTextColor(if (isValidTime(sleepBegin)) { currentDurationTextColor } else { invalidDurationTextColor })
datePickerBegin.setTextColor(if (isValidTime(sleepStart)) { currentDurationTextColor } else { invalidDurationTextColor })
datePickerEnd.setTextColor(if (isValidTime(sleepEnd)) { currentDurationTextColor } else { invalidDurationTextColor })
}
val pickedDateTimeBegin = dateTimePicker(event.time, datePickerBegin) { time: Long ->
sleepBegin = adjustToMinute(time)
sleepStart = adjustToMinute(time)
updateFields()
}
@@ -494,7 +498,7 @@ class MainActivity : AppCompatActivity() {
updateFields()
}
sleepBegin = adjustToMinute(pickedDateTimeBegin.time.time / 1000)
sleepStart = adjustToMinute(pickedDateTimeBegin.time.time / 1000)
sleepEnd = adjustToMinute(pickedDateTimeEnd.time.time / 1000)
updateFields()
@@ -514,17 +518,17 @@ class MainActivity : AppCompatActivity() {
}
durationMinus5Button.setOnClickListener {
sleepEnd = (sleepEnd - 300).coerceAtLeast(sleepBegin)
sleepEnd = (sleepEnd - 300).coerceAtLeast(sleepStart)
updateFields()
}
durationPlus5Button.setOnClickListener {
sleepEnd = (sleepEnd + 300).coerceAtLeast(sleepBegin)
sleepEnd = (sleepEnd + 300).coerceAtLeast(sleepStart)
updateFields()
}
durationAsleepButton.setOnClickListener {
sleepEnd = sleepBegin
sleepEnd = sleepStart
updateFields()
}
@@ -535,9 +539,9 @@ class MainActivity : AppCompatActivity() {
}
d.setPositiveButton(android.R.string.ok) { dialogInterface, i ->
if (isValidTime(sleepBegin) && isValidTime(sleepEnd) && isValidTimeSpan(sleepBegin, sleepEnd)) {
event.time = sleepBegin
event.quantity = (sleepEnd - sleepBegin).toInt()
if (isValidTime(sleepStart) && isValidTime(sleepEnd) && isValidTimeSpan(sleepStart, sleepEnd)) {
event.time = sleepStart
event.quantity = (sleepEnd - sleepStart).toInt()
onPositive()
} else {
Toast.makeText(this, R.string.toast_date_error, Toast.LENGTH_SHORT).show()