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) {
setToPreviousQuantity(event)
askSleepValue(event) { saveEvent(event) }
}
@@ -387,6 +388,7 @@ class MainActivity : AppCompatActivity() {
val toTextView = dialogView.findViewById<TextView>(R.id.dialog_date_to)
val durationTextView = dialogView.findViewById<TextView>(R.id.dialog_date_duration)
val currentDurationTextColor = durationTextView.currentTextColor
var pickedFromTime = Calendar.getInstance()
var pickedToTime = Calendar.getInstance()
@@ -394,7 +396,7 @@ class MainActivity : AppCompatActivity() {
if (fromSeconds < toSeconds) {
val durationSeconds = toSeconds - fromSeconds
// sleep between 0 seconds and 12 hours
return durationSeconds > 0 && durationSeconds < (12 * 60 * 60)
return durationSeconds > 59 && durationSeconds < (12 * 60 * 60)
} else {
return false
}
@@ -404,11 +406,12 @@ class MainActivity : AppCompatActivity() {
val fromSeconds = pickedFromTime.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)) {
// valid duration: set default color
durationTextView.setTextColor(durationTextView.textColors.defaultColor)
durationTextView.setTextColor(currentDurationTextColor)
} else {
// invalid duration: set danger color
durationTextView.setTextColor(ContextCompat.getColor(this, R.color.danger))
@@ -418,6 +421,8 @@ class MainActivity : AppCompatActivity() {
pickedFromTime = datePickerHelper(event.time, fromTextView, onDateChange)
pickedToTime = datePickerHelper(event.time + event.quantity, toTextView, onDateChange)
onDateChange()
d.setPositiveButton(android.R.string.ok) { dialogInterface, i ->
val fromSeconds = pickedFromTime.time.time / 1000
val toSeconds = pickedToTime.time.time / 1000
@@ -426,10 +431,10 @@ class MainActivity : AppCompatActivity() {
event.time = fromSeconds
event.quantity = (toSeconds - fromSeconds).toInt()
onPositive()
dialogInterface.dismiss()
} else {
Toast.makeText(this, R.string.toast_date_error, Toast.LENGTH_SHORT).show()
}
dialogInterface.dismiss()
}
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.
*/
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
val years = (seconds / (365 * 24 * 60 * 60F)).toLong()
@@ -65,7 +69,7 @@ class DateUtils {
} else if (minutes > 0) {
return format(minutes, seconds, R.string.minute_ago, R.string.minute_ago, R.string.second_ago, R.string.seconds_ago)
} else {
return context.getString(R.string.now)
return fallbackText
}
}