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