From e756a2a3fc6ef87823411ec6adaa4cc9f306f8e1 Mon Sep 17 00:00:00 2001 From: Moritz Warning Date: Fri, 14 Nov 2025 21:42:35 +0100 Subject: [PATCH] LunaEvent: add sleep event --- .../lunatracker/MainActivity.kt | 100 +++++++++++++++++- .../lunatracker/entities/LunaEvent.kt | 4 + app/src/main/java/utils/DateUtils.kt | 4 +- app/src/main/java/utils/NumericUtils.kt | 7 ++ .../main/res/layout/dialog_edit_duration.xml | 69 ++++++++++++ app/src/main/res/layout/more_events_popup.xml | 10 ++ app/src/main/res/values/strings.xml | 5 + 7 files changed, 195 insertions(+), 4 deletions(-) create mode 100644 app/src/main/res/layout/dialog_edit_duration.xml diff --git a/app/src/main/java/it/danieleverducci/lunatracker/MainActivity.kt b/app/src/main/java/it/danieleverducci/lunatracker/MainActivity.kt index 2f4fea2..947ab4f 100644 --- a/app/src/main/java/it/danieleverducci/lunatracker/MainActivity.kt +++ b/app/src/main/java/it/danieleverducci/lunatracker/MainActivity.kt @@ -12,6 +12,7 @@ import android.view.View import android.view.ViewGroup import android.widget.AdapterView import android.widget.ArrayAdapter +import android.widget.Button import android.widget.EditText import android.widget.NumberPicker import android.widget.PopupWindow @@ -330,7 +331,7 @@ class MainActivity : AppCompatActivity() { alertDialog.show() } - fun datePickerHelper(time: Long, dateTextView: TextView): Calendar { + fun datePickerHelper(time: Long, dateTextView: TextView, onChange: (Long) -> Unit = {}): Calendar { dateTextView.text = DateUtils.formatDateTime(time) val dateTime = Calendar.getInstance() @@ -349,6 +350,7 @@ class MainActivity : AppCompatActivity() { { _, hour, minute -> dateTime.set(year, month, day, hour, minute) dateTextView.text = DateUtils.formatDateTime(dateTime.time.time / 1000) + onChange.invoke(dateTime.time.time / 1000) }, startHour, startMinute, @@ -371,6 +373,97 @@ class MainActivity : AppCompatActivity() { saveLogbook() } + fun addSleepEvent(event: LunaEvent) { + askSleepValue(event) { saveEvent(event) } + } + + fun askSleepValue(event: LunaEvent, onPositive: () -> Unit) { + val d = AlertDialog.Builder(this) + val dialogView = layoutInflater.inflate(R.layout.dialog_edit_duration, null) + d.setTitle(event.getTypeDescription(this)) + d.setMessage(event.getDialogMessage(this)) + d.setView(dialogView) + + val durationTextView = dialogView.findViewById(R.id.dialog_date_duration) + val durationNowButton = dialogView.findViewById