From 8493d2822f4227eec90786548fc24164869ac0ec 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 +++++- app/src/main/res/layout/dialog_edit_puke.xml | 24 ----------- 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, 68 insertions(+), 96 deletions(-) delete mode 100644 app/src/main/res/layout/dialog_edit_puke.xml diff --git a/app/src/main/java/it/danieleverducci/lunatracker/MainActivity.kt b/app/src/main/java/it/danieleverducci/lunatracker/MainActivity.kt index 22f2df9..9766352 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) @@ -246,8 +246,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) @@ -289,8 +289,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) @@ -369,24 +369,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) @@ -396,7 +397,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() } @@ -580,7 +581,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) } @@ -1037,7 +1040,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 575d59c..1695411 100644 --- a/app/src/main/java/it/danieleverducci/lunatracker/entities/LunaEvent.kt +++ b/app/src/main/java/it/danieleverducci/lunatracker/entities/LunaEvent.kt @@ -138,10 +138,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 c6ca7e1..1a2c8cc 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_puke.xml deleted file mode 100644 index 8303e76..0000000 --- a/app/src/main/res/layout/dialog_edit_puke.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index e76bd4f..b7ddd7d 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -3,15 +3,6 @@ 🌜 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