mirror of
https://github.com/iSoron/uhabits.git
synced 2025-12-06 01:08:50 -06:00
NumberPopup: Accept comma (instead of dot) in certain locales
Fixes #1532
This commit is contained in:
@@ -21,6 +21,7 @@ package org.isoron.uhabits.activities.common.dialogs
|
|||||||
|
|
||||||
import android.app.Dialog
|
import android.app.Dialog
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.text.method.DigitsKeyListener
|
||||||
import android.view.KeyEvent.KEYCODE_ENTER
|
import android.view.KeyEvent.KEYCODE_ENTER
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.MotionEvent.ACTION_DOWN
|
import android.view.MotionEvent.ACTION_DOWN
|
||||||
@@ -35,6 +36,9 @@ import org.isoron.uhabits.utils.dismissCurrentAndShow
|
|||||||
import org.isoron.uhabits.utils.dp
|
import org.isoron.uhabits.utils.dp
|
||||||
import org.isoron.uhabits.utils.requestFocusWithKeyboard
|
import org.isoron.uhabits.utils.requestFocusWithKeyboard
|
||||||
import java.text.DecimalFormat
|
import java.text.DecimalFormat
|
||||||
|
import java.text.DecimalFormatSymbols
|
||||||
|
import java.text.NumberFormat
|
||||||
|
import java.text.ParseException
|
||||||
|
|
||||||
class NumberPopup(
|
class NumberPopup(
|
||||||
private val context: Context,
|
private val context: Context,
|
||||||
@@ -55,10 +59,17 @@ class NumberPopup(
|
|||||||
|
|
||||||
init {
|
init {
|
||||||
view.numberButtons.visibility = VISIBLE
|
view.numberButtons.visibility = VISIBLE
|
||||||
|
fixDecimalSeparator()
|
||||||
hideDisabledButtons()
|
hideDisabledButtons()
|
||||||
populate()
|
populate()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun fixDecimalSeparator() {
|
||||||
|
// https://stackoverflow.com/a/34256139
|
||||||
|
val separator = DecimalFormatSymbols.getInstance().decimalSeparator
|
||||||
|
view.value.keyListener = DigitsKeyListener.getInstance("0123456789$separator")
|
||||||
|
}
|
||||||
|
|
||||||
private fun hideDisabledButtons() {
|
private fun hideDisabledButtons() {
|
||||||
if (!prefs.isSkipEnabled) view.skipBtnNumber.visibility = GONE
|
if (!prefs.isSkipEnabled) view.skipBtnNumber.visibility = GONE
|
||||||
}
|
}
|
||||||
@@ -108,7 +119,14 @@ class NumberPopup(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun save() {
|
fun save() {
|
||||||
val value = view.value.text.toString().toDoubleOrNull() ?: originalValue
|
var value = originalValue
|
||||||
|
try {
|
||||||
|
val numberFormat = NumberFormat.getInstance()
|
||||||
|
val valueStr = view.value.text.toString()
|
||||||
|
value = numberFormat.parse(valueStr)!!.toDouble()
|
||||||
|
} catch (e: ParseException) {
|
||||||
|
// NOP
|
||||||
|
}
|
||||||
val notes = view.notes.text.toString()
|
val notes = view.notes.text.toString()
|
||||||
onToggle(value, notes)
|
onToggle(value, notes)
|
||||||
dialog.dismiss()
|
dialog.dismiss()
|
||||||
|
|||||||
Reference in New Issue
Block a user