Popup: Do not save on dismiss

pull/1370/head
Alinson S. Xavier 3 years ago
parent b0a4f26e7a
commit 7649119db7

@ -54,6 +54,7 @@ class CheckmarkPopup(
private val anchor: View, private val anchor: View,
) { ) {
var onToggle: (Int, String) -> Unit = { _, _ -> } var onToggle: (Int, String) -> Unit = { _, _ -> }
private lateinit var popup: PopupWindow
private val view = CheckmarkPopupBinding.inflate(LayoutInflater.from(context)).apply { private val view = CheckmarkPopupBinding.inflate(LayoutInflater.from(context)).apply {
// Required for round corners // Required for round corners
@ -101,12 +102,11 @@ class CheckmarkPopup(
SKIP -> if (prefs.isSkipEnabled) view.skipBtn else view.noBtn SKIP -> if (prefs.isSkipEnabled) view.skipBtn else view.noBtn
else -> null else -> null
} }
selectedBtn?.background = ColorDrawable(view.root.sres.getColor(R.attr.contrast40))
view.notes.setText(notes) view.notes.setText(notes)
} }
fun show() { fun show() {
val popup = PopupWindow() popup = PopupWindow()
popup.contentView = view.root popup.contentView = view.root
popup.width = view.root.dp(POPUP_WIDTH).toInt() popup.width = view.root.dp(POPUP_WIDTH).toInt()
popup.height = view.root.dp(POPUP_HEIGHT).toInt() popup.height = view.root.dp(POPUP_HEIGHT).toInt()
@ -114,16 +114,18 @@ class CheckmarkPopup(
popup.elevation = view.root.dp(24f) popup.elevation = view.root.dp(24f)
fun onClick(v: Int) { fun onClick(v: Int) {
this.value = v this.value = v
popup.dismiss() save()
} }
view.yesBtn.setOnClickListener { onClick(YES_MANUAL) } view.yesBtn.setOnClickListener { onClick(YES_MANUAL) }
view.noBtn.setOnClickListener { onClick(NO) } view.noBtn.setOnClickListener { onClick(NO) }
view.skipBtn.setOnClickListener { onClick(SKIP) } view.skipBtn.setOnClickListener { onClick(SKIP) }
view.unknownBtn.setOnClickListener { onClick(UNKNOWN) } view.unknownBtn.setOnClickListener { onClick(UNKNOWN) }
popup.setOnDismissListener {
onToggle(value, view.notes.text.toString())
}
popup.showAtLocation(anchor, Gravity.CENTER, 0, 0) popup.showAtLocation(anchor, Gravity.CENTER, 0, 0)
popup.dimBehind() popup.dimBehind()
} }
fun save() {
onToggle(value, view.notes.text.toString().trim())
popup.dismiss()
}
} }

@ -47,6 +47,7 @@ class NumberPopup(
) { ) {
var onToggle: (Double, String) -> Unit = { _, _ -> } var onToggle: (Double, String) -> Unit = { _, _ -> }
private val originalValue = value private val originalValue = value
private lateinit var popup: PopupWindow
private val view = CheckmarkPopupBinding.inflate(LayoutInflater.from(context)).apply { private val view = CheckmarkPopupBinding.inflate(LayoutInflater.from(context)).apply {
// Required for round corners // Required for round corners
@ -78,26 +79,25 @@ class NumberPopup(
} }
fun show() { fun show() {
val popup = PopupWindow() popup = PopupWindow()
popup.contentView = view.root popup.contentView = view.root
popup.width = view.root.dp(POPUP_WIDTH).toInt() popup.width = view.root.dp(POPUP_WIDTH).toInt()
popup.height = view.root.dp(POPUP_HEIGHT).toInt() popup.height = view.root.dp(POPUP_HEIGHT).toInt()
popup.isFocusable = true popup.isFocusable = true
popup.elevation = view.root.dp(24f) popup.elevation = view.root.dp(24f)
popup.setOnDismissListener {
save()
}
view.value.setOnKeyListener { _, keyCode, event -> view.value.setOnKeyListener { _, keyCode, event ->
if (event.action == ACTION_DOWN && keyCode == KEYCODE_ENTER) { if (event.action == ACTION_DOWN && keyCode == KEYCODE_ENTER) {
popup.dismiss() save()
return@setOnKeyListener true return@setOnKeyListener true
} }
return@setOnKeyListener false return@setOnKeyListener false
} }
view.saveBtn.setOnClickListener { popup.dismiss() } view.saveBtn.setOnClickListener {
save()
}
view.skipBtnNumber.setOnClickListener { view.skipBtnNumber.setOnClickListener {
view.value.setText((Entry.SKIP.toDouble() / 1000).toString()) view.value.setText((Entry.SKIP.toDouble() / 1000).toString())
popup.dismiss() save()
} }
popup.showAtLocation(anchor, Gravity.CENTER, 0, 0) popup.showAtLocation(anchor, Gravity.CENTER, 0, 0)
view.value.requestFocusWithKeyboard() view.value.requestFocusWithKeyboard()
@ -108,5 +108,6 @@ class NumberPopup(
val value = view.value.text.toString().toDoubleOrNull() ?: originalValue val value = view.value.text.toString().toDoubleOrNull() ?: originalValue
val notes = view.notes.text.toString() val notes = view.notes.text.toString()
onToggle(value, notes) onToggle(value, notes)
popup.dismiss()
} }
} }

Loading…
Cancel
Save