From 7649119db78e151b41df7c00ff48851d7e749072 Mon Sep 17 00:00:00 2001 From: "Alinson S. Xavier" Date: Sun, 24 Jul 2022 05:41:52 -0500 Subject: [PATCH] Popup: Do not save on dismiss --- .../activities/common/dialogs/CheckmarkPopup.kt | 14 ++++++++------ .../activities/common/dialogs/NumberPopup.kt | 15 ++++++++------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/CheckmarkPopup.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/CheckmarkPopup.kt index ffb1aa905..0b7129387 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/CheckmarkPopup.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/CheckmarkPopup.kt @@ -54,6 +54,7 @@ class CheckmarkPopup( private val anchor: View, ) { var onToggle: (Int, String) -> Unit = { _, _ -> } + private lateinit var popup: PopupWindow private val view = CheckmarkPopupBinding.inflate(LayoutInflater.from(context)).apply { // Required for round corners @@ -101,12 +102,11 @@ class CheckmarkPopup( SKIP -> if (prefs.isSkipEnabled) view.skipBtn else view.noBtn else -> null } - selectedBtn?.background = ColorDrawable(view.root.sres.getColor(R.attr.contrast40)) view.notes.setText(notes) } fun show() { - val popup = PopupWindow() + popup = PopupWindow() popup.contentView = view.root popup.width = view.root.dp(POPUP_WIDTH).toInt() popup.height = view.root.dp(POPUP_HEIGHT).toInt() @@ -114,16 +114,18 @@ class CheckmarkPopup( popup.elevation = view.root.dp(24f) fun onClick(v: Int) { this.value = v - popup.dismiss() + save() } view.yesBtn.setOnClickListener { onClick(YES_MANUAL) } view.noBtn.setOnClickListener { onClick(NO) } view.skipBtn.setOnClickListener { onClick(SKIP) } view.unknownBtn.setOnClickListener { onClick(UNKNOWN) } - popup.setOnDismissListener { - onToggle(value, view.notes.text.toString()) - } popup.showAtLocation(anchor, Gravity.CENTER, 0, 0) popup.dimBehind() } + + fun save() { + onToggle(value, view.notes.text.toString().trim()) + popup.dismiss() + } } diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/NumberPopup.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/NumberPopup.kt index a7183323f..d0ed17a9b 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/NumberPopup.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/NumberPopup.kt @@ -47,6 +47,7 @@ class NumberPopup( ) { var onToggle: (Double, String) -> Unit = { _, _ -> } private val originalValue = value + private lateinit var popup: PopupWindow private val view = CheckmarkPopupBinding.inflate(LayoutInflater.from(context)).apply { // Required for round corners @@ -78,26 +79,25 @@ class NumberPopup( } fun show() { - val popup = PopupWindow() + popup = PopupWindow() popup.contentView = view.root popup.width = view.root.dp(POPUP_WIDTH).toInt() popup.height = view.root.dp(POPUP_HEIGHT).toInt() popup.isFocusable = true popup.elevation = view.root.dp(24f) - popup.setOnDismissListener { - save() - } view.value.setOnKeyListener { _, keyCode, event -> if (event.action == ACTION_DOWN && keyCode == KEYCODE_ENTER) { - popup.dismiss() + save() return@setOnKeyListener true } return@setOnKeyListener false } - view.saveBtn.setOnClickListener { popup.dismiss() } + view.saveBtn.setOnClickListener { + save() + } view.skipBtnNumber.setOnClickListener { view.value.setText((Entry.SKIP.toDouble() / 1000).toString()) - popup.dismiss() + save() } popup.showAtLocation(anchor, Gravity.CENTER, 0, 0) view.value.requestFocusWithKeyboard() @@ -108,5 +108,6 @@ class NumberPopup( val value = view.value.text.toString().toDoubleOrNull() ?: originalValue val notes = view.notes.text.toString() onToggle(value, notes) + popup.dismiss() } }