From 1e4d7f8c6e94669b929435cfe1da570a460faa35 Mon Sep 17 00:00:00 2001 From: arkon Date: Sat, 13 Nov 2021 10:14:55 -0500 Subject: [PATCH] Only allow digits in custom download range dialog (closes #6220) --- .../widget/DialogCustomDownloadView.kt | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/app/src/main/java/eu/kanade/tachiyomi/widget/DialogCustomDownloadView.kt b/app/src/main/java/eu/kanade/tachiyomi/widget/DialogCustomDownloadView.kt index 8913c87595..7d90bd2c35 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/widget/DialogCustomDownloadView.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/widget/DialogCustomDownloadView.kt @@ -1,11 +1,14 @@ package eu.kanade.tachiyomi.widget import android.content.Context +import android.text.InputFilter import android.text.SpannableStringBuilder +import android.text.Spanned import android.util.AttributeSet import android.view.LayoutInflater import android.view.View import android.widget.LinearLayout +import androidx.core.text.isDigitsOnly import androidx.core.widget.doOnTextChanged import eu.kanade.tachiyomi.databinding.DownloadCustomAmountBinding import eu.kanade.tachiyomi.util.system.logcat @@ -45,6 +48,7 @@ class DialogCustomDownloadView @JvmOverloads constructor(context: Context, attrs // Set download count to 0. binding.myNumber.text = SpannableStringBuilder(getAmount(0).toString()) + binding.myNumber.filters = arrayOf(DigitInputFilter()) // When user presses button decrease amount by 10. binding.btnDecrease10.setOnClickListener { @@ -102,3 +106,20 @@ class DialogCustomDownloadView @JvmOverloads constructor(context: Context, attrs } } } + +private class DigitInputFilter : InputFilter { + + override fun filter( + source: CharSequence, + start: Int, + end: Int, + dest: Spanned, + dstart: Int, + dend: Int, + ): CharSequence { + return when { + source.toString().isDigitsOnly() -> source.toString() + else -> "" + } + } +}