From f8f5d68bb607912546e629ee0321a1b081137b17 Mon Sep 17 00:00:00 2001 From: Moritz Warning Date: Wed, 19 Nov 2025 21:23:23 +0100 Subject: [PATCH] MainActivity: show save button if any values has changed --- .../lunatracker/MainActivity.kt | 82 +++++++++++-------- app/src/main/res/values/strings.xml | 3 +- 2 files changed, 49 insertions(+), 36 deletions(-) diff --git a/app/src/main/java/it/danieleverducci/lunatracker/MainActivity.kt b/app/src/main/java/it/danieleverducci/lunatracker/MainActivity.kt index 866a7c4..a4dcc40 100644 --- a/app/src/main/java/it/danieleverducci/lunatracker/MainActivity.kt +++ b/app/src/main/java/it/danieleverducci/lunatracker/MainActivity.kt @@ -700,6 +700,12 @@ class MainActivity : AppCompatActivity() { fun showEventDetailDialog(originalEvent: LunaEvent) { val event = LunaEvent(originalEvent) + fun eventValuesChanged(): Boolean { + return (event.time != originalEvent.time + || event.quantity != originalEvent.quantity + || event.notes != originalEvent.notes) + } + // Do not update list while the detail is shown, to avoid changing the object below while it is changed by the user pauseLogbookUpdate = true @@ -717,6 +723,40 @@ class MainActivity : AppCompatActivity() { emojiTextView.text = event.getTypeEmoji(this) descriptionTextView.text = event.getTypeDescription(this) + d.setView(dialogView) + + d.setNeutralButton(R.string.dialog_event_detail_delete_button) { dialogInterface, i -> + deleteEvent(originalEvent) + dialogInterface.dismiss() + } + + d.setNegativeButton(R.string.dialog_event_detail_save_button) { dialogInterface, i -> + if (eventValuesChanged()) { + originalEvent.time = event.time + originalEvent.quantity = event.quantity + originalEvent.notes = event.notes + saveEvent(originalEvent) + } + + dialogInterface.dismiss() + } + + d.setPositiveButton(R.string.dialog_event_detail_close_button) { dialogInterface, i -> + dialogInterface.dismiss() + } + + val alertDialog = d.create() + alertDialog.show() + + alertDialog.getButton(DialogInterface.BUTTON_NEUTRAL).setTextColor( + ContextCompat.getColor(this, R.color.danger) + ) + + alertDialog.setOnDismissListener { + // Resume logbook update + pauseLogbookUpdate = false + } + val updateValues = { quantityTextView.text = NumericUtils(this).formatEventQuantity(event) notesTextView.text = event.notes @@ -726,10 +766,16 @@ class MainActivity : AppCompatActivity() { } else { dateEndTextView.visibility = View.GONE } + + alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE).visibility = if (eventValuesChanged()) { + View.VISIBLE + } else { + View.GONE + } } updateValues() - val pickedTime = datePickerHelper(event.time, dateTextView, { newTime: Long -> + datePickerHelper(event.time, dateTextView, { newTime: Long -> event.time = newTime updateValues() }) @@ -755,40 +801,6 @@ class MainActivity : AppCompatActivity() { } } - d.setView(dialogView) - - d.setNeutralButton(R.string.dialog_event_detail_delete_button) { dialogInterface, i -> - deleteEvent(originalEvent) - dialogInterface.dismiss() - } - - d.setPositiveButton(R.string.dialog_event_detail_close_button) { dialogInterface, i -> - event.time = pickedTime.time.time / 1000 - - if (event.time != originalEvent.time - || event.quantity != originalEvent.quantity - || event.notes != originalEvent.notes) { - originalEvent.time = event.time - originalEvent.quantity = event.quantity - originalEvent.notes = event.notes - saveEvent(originalEvent) - } - - dialogInterface.dismiss() - } - - val alertDialog = d.create() - alertDialog.show() - - alertDialog.getButton(DialogInterface.BUTTON_NEUTRAL).setTextColor( - ContextCompat.getColor(this, R.color.danger) - ) - - alertDialog.setOnDismissListener { - // Resume logbook update - pauseLogbookUpdate = false - } - // show optional signature if (event.signature.isNotEmpty()) { val signatureTextEdit = dialogView.findViewById(R.id.dialog_event_detail_type_signature) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 88ebd46..72ce19f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -132,7 +132,8 @@ Time Event detail - OK + Close + Save Delete Quantity Notes