1 Commits

Author SHA1 Message Date
88e9cb7deb LunaEvent: add sleep event 2025-11-14 22:41:57 +01:00
2 changed files with 14 additions and 5 deletions

View File

@@ -373,6 +373,7 @@ class MainActivity : AppCompatActivity() {
} }
fun addSleepEvent(event: LunaEvent) { fun addSleepEvent(event: LunaEvent) {
setToPreviousQuantity(event)
askSleepValue(event) { saveEvent(event) } askSleepValue(event) { saveEvent(event) }
} }
@@ -387,6 +388,7 @@ class MainActivity : AppCompatActivity() {
val toTextView = dialogView.findViewById<TextView>(R.id.dialog_date_to) val toTextView = dialogView.findViewById<TextView>(R.id.dialog_date_to)
val durationTextView = dialogView.findViewById<TextView>(R.id.dialog_date_duration) val durationTextView = dialogView.findViewById<TextView>(R.id.dialog_date_duration)
val currentDurationTextColor = durationTextView.currentTextColor
var pickedFromTime = Calendar.getInstance() var pickedFromTime = Calendar.getInstance()
var pickedToTime = Calendar.getInstance() var pickedToTime = Calendar.getInstance()
@@ -394,7 +396,7 @@ class MainActivity : AppCompatActivity() {
if (fromSeconds < toSeconds) { if (fromSeconds < toSeconds) {
val durationSeconds = toSeconds - fromSeconds val durationSeconds = toSeconds - fromSeconds
// sleep between 0 seconds and 12 hours // sleep between 0 seconds and 12 hours
return durationSeconds > 0 && durationSeconds < (12 * 60 * 60) return durationSeconds > 59 && durationSeconds < (12 * 60 * 60)
} else { } else {
return false return false
} }
@@ -404,11 +406,12 @@ class MainActivity : AppCompatActivity() {
val fromSeconds = pickedFromTime.time.time / 1000 val fromSeconds = pickedFromTime.time.time / 1000
val toSeconds = pickedToTime.time.time / 1000 val toSeconds = pickedToTime.time.time / 1000
durationTextView.text = DateUtils.formatTimeDuration(applicationContext, toSeconds - fromSeconds) val invalidDateText = getString(R.string.toast_date_error)
durationTextView.text = DateUtils.formatTimeDuration(applicationContext, toSeconds - fromSeconds, invalidDateText)
if (isValidTime(fromSeconds, toSeconds)) { if (isValidTime(fromSeconds, toSeconds)) {
// valid duration: set default color // valid duration: set default color
durationTextView.setTextColor(durationTextView.textColors.defaultColor) durationTextView.setTextColor(currentDurationTextColor)
} else { } else {
// invalid duration: set danger color // invalid duration: set danger color
durationTextView.setTextColor(ContextCompat.getColor(this, R.color.danger)) durationTextView.setTextColor(ContextCompat.getColor(this, R.color.danger))
@@ -418,6 +421,8 @@ class MainActivity : AppCompatActivity() {
pickedFromTime = datePickerHelper(event.time, fromTextView, onDateChange) pickedFromTime = datePickerHelper(event.time, fromTextView, onDateChange)
pickedToTime = datePickerHelper(event.time + event.quantity, toTextView, onDateChange) pickedToTime = datePickerHelper(event.time + event.quantity, toTextView, onDateChange)
onDateChange()
d.setPositiveButton(android.R.string.ok) { dialogInterface, i -> d.setPositiveButton(android.R.string.ok) { dialogInterface, i ->
val fromSeconds = pickedFromTime.time.time / 1000 val fromSeconds = pickedFromTime.time.time / 1000
val toSeconds = pickedToTime.time.time / 1000 val toSeconds = pickedToTime.time.time / 1000
@@ -426,10 +431,10 @@ class MainActivity : AppCompatActivity() {
event.time = fromSeconds event.time = fromSeconds
event.quantity = (toSeconds - fromSeconds).toInt() event.quantity = (toSeconds - fromSeconds).toInt()
onPositive() onPositive()
dialogInterface.dismiss()
} else { } else {
Toast.makeText(this, R.string.toast_date_error, Toast.LENGTH_SHORT).show() Toast.makeText(this, R.string.toast_date_error, Toast.LENGTH_SHORT).show()
} }
dialogInterface.dismiss()
} }
d.setNegativeButton(android.R.string.cancel) { dialogInterface, i -> d.setNegativeButton(android.R.string.cancel) { dialogInterface, i ->

View File

@@ -13,6 +13,10 @@ class DateUtils {
* Used for the duration to the next/previous event in the event details dialog. * Used for the duration to the next/previous event in the event details dialog.
*/ */
fun formatTimeDuration(context: Context, secondsDiff: Long): String { fun formatTimeDuration(context: Context, secondsDiff: Long): String {
return formatTimeDuration(context, secondsDiff, context.getString(R.string.now))
}
fun formatTimeDuration(context: Context, secondsDiff: Long, fallbackText: String): String {
var seconds = secondsDiff var seconds = secondsDiff
val years = (seconds / (365 * 24 * 60 * 60F)).toLong() val years = (seconds / (365 * 24 * 60 * 60F)).toLong()
@@ -65,7 +69,7 @@ class DateUtils {
} else if (minutes > 0) { } else if (minutes > 0) {
return format(minutes, seconds, R.string.minute_ago, R.string.minute_ago, R.string.second_ago, R.string.seconds_ago) return format(minutes, seconds, R.string.minute_ago, R.string.minute_ago, R.string.second_ago, R.string.seconds_ago)
} else { } else {
return context.getString(R.string.now) return fallbackText
} }
} }