From aa2347f8028265d439ee0cd71060bb929737f7af Mon Sep 17 00:00:00 2001 From: Moritz Warning Date: Wed, 12 Nov 2025 22:47:09 +0100 Subject: [PATCH] MainActivity: allow amount for poo and pee events An unspecified amount has also been added to have the same semantics as before. During these actions, the strings for title and description of dialogs have been cleaned up. --- .../lunatracker/MainActivity.kt | 41 ++++++++++--------- .../lunatracker/entities/LunaEvent.kt | 16 ++++++-- app/src/main/java/utils/NumericUtils.kt | 12 +++++- ...g_edit_puke.xml => dialog_edit_amount.xml} | 2 +- app/src/main/res/values-de/strings.xml | 16 +++----- app/src/main/res/values-fr/strings.xml | 16 +++----- app/src/main/res/values-it/strings.xml | 16 +++----- app/src/main/res/values/arrays.xml | 1 + app/src/main/res/values/strings.xml | 22 ++++------ 9 files changed, 69 insertions(+), 73 deletions(-) rename app/src/main/res/layout/{dialog_edit_puke.xml => dialog_edit_amount.xml} (93%) diff --git a/app/src/main/java/it/danieleverducci/lunatracker/MainActivity.kt b/app/src/main/java/it/danieleverducci/lunatracker/MainActivity.kt index 3a4fa6d..2f4fea2 100644 --- a/app/src/main/java/it/danieleverducci/lunatracker/MainActivity.kt +++ b/app/src/main/java/it/danieleverducci/lunatracker/MainActivity.kt @@ -100,10 +100,10 @@ class MainActivity : AppCompatActivity() { addPlainEvent(LunaEvent(LunaEvent.TYPE_BREASTFEEDING_RIGHT_NIPPLE)) } findViewById(R.id.button_change_poo).setOnClickListener { - addPlainEvent(LunaEvent(LunaEvent.TYPE_DIAPERCHANGE_POO)) + addAmountEvent(LunaEvent(LunaEvent.TYPE_DIAPERCHANGE_POO)) } findViewById(R.id.button_change_pee).setOnClickListener { - addPlainEvent(LunaEvent(LunaEvent.TYPE_DIAPERCHANGE_PEE)) + addAmountEvent(LunaEvent(LunaEvent.TYPE_DIAPERCHANGE_PEE)) } val moreButton = findViewById(R.id.button_more) moreButton.setOnClickListener { @@ -205,8 +205,8 @@ class MainActivity : AppCompatActivity() { fun askBabyBottleContent(event: LunaEvent, showTime: Boolean, onPositive: () -> Unit) { val d = AlertDialog.Builder(this) val dialogView = layoutInflater.inflate(R.layout.dialog_edit_bottle, null) - d.setTitle(R.string.log_bottle_dialog_title) - d.setMessage(R.string.log_bottle_dialog_description) + d.setTitle(event.getTypeDescription(this)) + d.setMessage(event.getDialogMessage(this)) d.setView(dialogView) val numberPicker = dialogView.findViewById(R.id.dialog_number_picker) @@ -247,8 +247,8 @@ class MainActivity : AppCompatActivity() { // Show number picker dialog val d = AlertDialog.Builder(this) val dialogView = layoutInflater.inflate(R.layout.dialog_edit_weight, null) - d.setTitle(R.string.log_weight_dialog_title) - d.setMessage(R.string.log_weight_dialog_description) + d.setTitle(event.getTypeDescription(this)) + d.setMessage(event.getDialogMessage(this)) d.setView(dialogView) val weightET = dialogView.findViewById(R.id.dialog_number_edittext) @@ -291,8 +291,8 @@ class MainActivity : AppCompatActivity() { // Show number picker dialog val d = AlertDialog.Builder(this) val dialogView = layoutInflater.inflate(R.layout.dialog_edit_temperature, null) - d.setTitle(R.string.log_temperature_dialog_title) - d.setMessage(R.string.log_temperature_dialog_description) + d.setTitle(event.getTypeDescription(this)) + d.setMessage(event.getDialogMessage(this)) d.setView(dialogView) val tempSlider = dialogView.findViewById(R.id.dialog_temperature_value) @@ -371,24 +371,25 @@ class MainActivity : AppCompatActivity() { saveLogbook() } - fun addPukeEvent(event: LunaEvent) { - askPukeValue(event, true) { saveEvent(event) } + fun addAmountEvent(event: LunaEvent) { + askAmountValue(event, true) { saveEvent(event) } } - fun askPukeValue(event: LunaEvent, showTime: Boolean, onPositive: () -> Unit) { + fun askAmountValue(event: LunaEvent, showTime: Boolean, onPositive: () -> Unit) { val d = AlertDialog.Builder(this) - val dialogView = layoutInflater.inflate(R.layout.dialog_edit_puke, null) - d.setTitle(R.string.log_puke_dialog_title) - d.setMessage(R.string.log_puke_dialog_description) + val dialogView = layoutInflater.inflate(R.layout.dialog_edit_amount, null) + d.setTitle(event.getTypeDescription(this)) + d.setMessage(event.getDialogMessage(this)) d.setView(dialogView) - val spinner = dialogView.findViewById(R.id.dialog_puke_value) + val spinner = dialogView.findViewById(R.id.dialog_amount_value) spinner.adapter = ArrayAdapter.createFromResource( this, R.array.AmountLabels, android.R.layout.simple_spinner_dropdown_item ) - spinner.setSelection(event.quantity - 1) + // set pre-selected item and ensure the quantity to index is in bounds + spinner.setSelection(event.quantity.coerceIn(0, spinner.count - 1)) val dateTV = dialogView.findViewById(R.id.dialog_date_picker) val pickedTime = datePickerHelper(event.time, dateTV) @@ -398,7 +399,7 @@ class MainActivity : AppCompatActivity() { d.setPositiveButton(android.R.string.ok) { dialogInterface, i -> event.time = pickedTime.time.time / 1000 - event.quantity = spinner.selectedItemPosition + 1 + event.quantity = spinner.selectedItemPosition onPositive() dialogInterface.dismiss() } @@ -637,7 +638,9 @@ class MainActivity : AppCompatActivity() { when (event.type) { LunaEvent.TYPE_BABY_BOTTLE -> askBabyBottleContent(event, false, updateValues) LunaEvent.TYPE_WEIGHT -> askWeightValue(event, false, updateValues) - LunaEvent.TYPE_PUKE -> askPukeValue(event, false, updateValues) + LunaEvent.TYPE_DIAPERCHANGE_POO, + LunaEvent.TYPE_DIAPERCHANGE_PEE, + LunaEvent.TYPE_PUKE -> askAmountValue(event, false, updateValues) LunaEvent.TYPE_TEMPERATURE -> askTemperatureValue(event, false, updateValues) LunaEvent.TYPE_NOTE -> askNotes(event, false, updateValues) } @@ -1094,7 +1097,7 @@ class MainActivity : AppCompatActivity() { dismiss() } contentView.findViewById(R.id.button_puke).setOnClickListener { - addPukeEvent(LunaEvent(LunaEvent.TYPE_PUKE, 1)) + addAmountEvent(LunaEvent(LunaEvent.TYPE_PUKE)) dismiss() } contentView.findViewById(R.id.button_colic).setOnClickListener { diff --git a/app/src/main/java/it/danieleverducci/lunatracker/entities/LunaEvent.kt b/app/src/main/java/it/danieleverducci/lunatracker/entities/LunaEvent.kt index 587da29..1eade79 100644 --- a/app/src/main/java/it/danieleverducci/lunatracker/entities/LunaEvent.kt +++ b/app/src/main/java/it/danieleverducci/lunatracker/entities/LunaEvent.kt @@ -140,10 +140,18 @@ class LunaEvent: Comparable { } fun getDialogMessage(context: Context): String? { - return when(type) { - TYPE_MEDICINE -> context.getString(R.string.log_medicine_dialog_description) - else -> null - } + return context.getString( + when(type) { + TYPE_BABY_BOTTLE -> R.string.log_bottle_dialog_description + TYPE_MEDICINE -> R.string.log_medicine_dialog_description + TYPE_TEMPERATURE -> R.string.log_temperature_dialog_description + TYPE_DIAPERCHANGE_POO, + TYPE_DIAPERCHANGE_PEE, + TYPE_PUKE -> R.string.log_amount_dialog_description + TYPE_WEIGHT -> R.string.log_weight_dialog_description + else -> R.string.log_unknown_dialog_description + } + ) } fun toJson(): JSONObject { diff --git a/app/src/main/java/utils/NumericUtils.kt b/app/src/main/java/utils/NumericUtils.kt index 23cd5c6..8d12c35 100644 --- a/app/src/main/java/utils/NumericUtils.kt +++ b/app/src/main/java/utils/NumericUtils.kt @@ -4,6 +4,7 @@ import android.content.Context import android.icu.util.LocaleData import android.icu.util.ULocale import android.os.Build +import android.util.Log import it.danieleverducci.lunatracker.R import it.danieleverducci.lunatracker.entities.LunaEvent import java.text.NumberFormat @@ -66,8 +67,15 @@ class NumericUtils (val context: Context) { formatted.append(when (event.type) { LunaEvent.TYPE_TEMPERATURE -> (event.quantity / 10.0f).toString() - LunaEvent.TYPE_PUKE -> - context.resources.getStringArray(R.array.AmountLabels)[event.quantity - 1] + LunaEvent.TYPE_DIAPERCHANGE_POO, + LunaEvent.TYPE_DIAPERCHANGE_PEE, + LunaEvent.TYPE_PUKE -> { + val array = context.resources.getStringArray(R.array.AmountLabels) + return array.getOrElse(event.quantity) { + Log.e("NumericUtils", "Invalid index ${event.quantity}") + return "" + } + } else -> event.quantity }) diff --git a/app/src/main/res/layout/dialog_edit_puke.xml b/app/src/main/res/layout/dialog_edit_amount.xml similarity index 93% rename from app/src/main/res/layout/dialog_edit_puke.xml rename to app/src/main/res/layout/dialog_edit_amount.xml index 2277369..2a4b4b7 100644 --- a/app/src/main/res/layout/dialog_edit_puke.xml +++ b/app/src/main/res/layout/dialog_edit_amount.xml @@ -8,7 +8,7 @@ android:orientation="vertical"> 🌜 LunaTracker 🌛 Ereignisprotokoll - Fläschchen - Trinkmenge eingeben - - Gewicht - Gewicht eingeben - - Temperatur - Temperatur eingeben - Fläschchen Essen Gewicht @@ -77,10 +68,13 @@ Jetzt bereinigen Später erinnern - Notizen: + Trinkmenge eingeben Medikamentenname, Menge, Art, Notizen, …: - Menge (optional) + Notizen: Notiz eingeben + Menge (optional) + Temperatur eingeben + Gewicht eingeben Ereignisdetails OK diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 0afd508..9364887 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -3,15 +3,6 @@ 🌜 LunaTracker 🌛 Entrées enregistrées - Biberon - Renseignez la quantité contenue dans le biberon - - Poids - Renseignez le poids - - Température - Renseignez la Température - Biberon Nourriture Poids @@ -76,10 +67,13 @@ Supprimer les vieilles entrées maintenant Me rappeller plus tard - Notes: + Renseignez la quantité contenue dans le biberon nom du médicament, quantité, type, notes …: - Quantité (ou vide) + Notes: Notes ... + Quantité (ou vide) + Renseignez la Température + Renseignez le poids Détails de l\'entrée OK diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 69dc200..3e1fdd2 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -3,15 +3,6 @@ 🌜 LunaTracker 🌛 Diario di bordo - Biberon - Inserisci la quantità contenuta nel biberon - - Pesata - Inserisci il peso rilevato - - Temperatura - Inserisci la temperatura - ⚖️ Peso 💊 Medicina 🪠 Clistere @@ -76,10 +67,13 @@ Cancella i più vecchi Ricordamelo dopo - Note: + Inserisci la quantità contenuta nel biberon Nome della medicina, quantità, formato, note…: - Quantità, o vuoto + Note: Inserisci le note + Quantità, o vuoto + Inserisci la temperatura + Inserisci il peso rilevato Dettaglio evento OK diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 4f5ae1a..87a93d3 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -1,6 +1,7 @@ + @string/amount_unspecified @string/amount_little @string/amount_normal @string/amount_plenty diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6242696..487a06c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -3,18 +3,6 @@ 🌜 LunaTracker 🌛 Logged events - Baby bottle - Insert the quantity contained in the baby bottle - - Weight - Insert the weight - - Temperature - Insert the temperature - - Puke - Select the amount - 🍼 🥣 ⚖️ @@ -75,6 +63,7 @@ year years + Little Normal Plenty @@ -114,10 +103,15 @@ Trim it now Remind me later - Notes: + Select the amount: + Insert the quantity contained in the baby bottle: Medicine name, quantity, type, notes…: - Quantity (or empty) + Notes: Write some notes + Quantity (or empty) + Select the temperature: + + Insert the weight: ml g