From c76e931d9fa976c04c096b1466e12eac127fbb28 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Wed, 7 Sep 2016 22:33:33 -0700 Subject: [PATCH] Reworked field validation. --- .../ProgrammingActivity.kt | 73 +++++++++++-------- 1 file changed, 42 insertions(+), 31 deletions(-) diff --git a/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/ProgrammingActivity.kt b/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/ProgrammingActivity.kt index c5ced24..bb579bc 100644 --- a/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/ProgrammingActivity.kt +++ b/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/ProgrammingActivity.kt @@ -252,46 +252,57 @@ class ProgrammingActivity : AppCompatActivity(), AnkoLogger { var isValid = true fields.forEachIndexed { i, v -> - if (!option.fields[i].alpha) { - if (v.text.isNullOrBlank()) { - v.error = getString(R.string.error_required) - isValid = false - } - - val min = if ((!type.isDKS() && !option.fields[i].zeros) && option.fields[i].min > 0) { - option.fields[i].min.toString().length - } else { - option.fields[i].minSize - } - - if (!validateSize(v.length(), min, option.fields[i].size)) { - if (option.fields[i].minSize > 0) { - v.error = getString(R.string.error_invalid_size, option.fields[i].minSize, - resources.getQuantityString(R.plurals.error_digit, option.fields[i].minSize), - getString(R.string.error_minimum)) - } else { - v.error = getString(R.string.error_invalid_size, option.fields[i].size, - resources.getQuantityString(R.plurals.error_digit, option.fields[i].size), "") + with(option.fields[i]!!) { + if (alpha) { // alphanumeric fields + if (minSize < 0 && v.text.isNullOrBlank()) { + v.error = getString(R.string.error_required) + isValid = false + } + } else { // numeric fields + if (v.text.isNullOrBlank()) { + v.error = getString(R.string.error_required) + isValid = false } - isValid = false - } + val min = if ((!type.isDKS() && !zeros) && min >= 0) { + min.toString().length + } else { + minSize + } - if (option.fields[i].min > 0 && option.fields[i].max > 0) { - try { - if (v.text.toString().toInt() !in IntRange(option.fields[i].min, option.fields[i].max)) { + if (!validateSize(v.length(), min, size)) { + if (minSize > 0) { + v.error = getString( + R.string.error_invalid_size, + minSize, + resources.getQuantityString(R.plurals.error_digit, minSize), + getString(R.string.error_minimum)) + } else { + v.error = getString( + R.string.error_invalid_size, + size, + resources.getQuantityString(R.plurals.error_digit, size), + empty) + } + + isValid = false + } + + if (min > 0 && max > 0) { + try { + if (v.text.toString().toInt() !in IntRange(min, max)) { + v.error = getString(R.string.error_invalid) + isValid = false + } + } catch (nfe: NumberFormatException) { v.error = getString(R.string.error_invalid) isValid = false } - } catch (nfe: NumberFormatException) { - v.error = getString(R.string.error_invalid) - isValid = false + } } - } else if (option.fields[i].minSize < 0 && v.text.isNullOrBlank()) { - v.error = getString(R.string.error_required) - isValid = false } + } return isValid