mirror of
https://github.com/iSoron/uhabits.git
synced 2025-12-06 09:08:52 -06:00
Popup: Do not save on dismiss
This commit is contained in:
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user