Validate values that cannot be used over the phone with DKS.

This commit is contained in:
Erik C. Thauvin 2018-11-05 01:32:36 -08:00
parent b3e336db70
commit 56ea5a1a36
2 changed files with 32 additions and 13 deletions

View file

@ -25,11 +25,12 @@ import android.graphics.Color
import android.graphics.Typeface import android.graphics.Typeface
import android.os.Bundle import android.os.Bundle
import android.support.design.widget.Snackbar import android.support.design.widget.Snackbar
import android.support.design.widget.TextInputEditText
import android.support.v7.app.AppCompatActivity import android.support.v7.app.AppCompatActivity
import android.text.InputFilter import android.text.InputFilter
import android.text.InputType import android.text.InputType
import android.text.SpannableString
import android.text.TextUtils import android.text.TextUtils
import android.text.style.ImageSpan
import android.util.TypedValue import android.util.TypedValue
import android.view.Gravity.* import android.view.Gravity.*
import android.view.ViewManager import android.view.ViewManager
@ -59,9 +60,9 @@ import java.util.*
@RuntimePermissions @RuntimePermissions
class ProgrammingActivity : AppCompatActivity(), AnkoLogger { class ProgrammingActivity : AppCompatActivity(), AnkoLogger {
val empty = "" private val empty = ""
inline fun ViewManager.autofitTextView(theme: Int = 0, init: AutoResizeTextView.() -> Unit) = ankoView(::AutoResizeTextView, theme, init) private inline fun ViewManager.autofitTextView(theme: Int = 0, init: AutoResizeTextView.() -> Unit) = ankoView(::AutoResizeTextView, theme, init)
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
@ -226,6 +227,7 @@ class ProgrammingActivity : AppCompatActivity(), AnkoLogger {
elevation = dip(6).toFloat() elevation = dip(6).toFloat()
behavior = ScrollAwareFABBehavior() behavior = ScrollAwareFABBehavior()
}.setOnClickListener { }.setOnClickListener {
if (validateFieldsForCall(params.type, fields)) {
if (validateFields(params.type, fields, option)) { if (validateFields(params.type, fields, option)) {
val dtmf = Dtmf.build(params.type, params.master, params.ack, option, fields) val dtmf = Dtmf.build(params.type, params.master, params.ack, option, fields)
if (Dtmf.validate(dtmf, "${MainActivity.PAUSE}${params.ack}${params.alt}", option.nodial)) { if (Dtmf.validate(dtmf, "${MainActivity.PAUSE}${params.ack}${params.alt}", option.nodial)) {
@ -239,6 +241,11 @@ class ProgrammingActivity : AppCompatActivity(), AnkoLogger {
Snackbar.make(this@coordinatorLayout, R.string.error_invalid_field, Snackbar.make(this@coordinatorLayout, R.string.error_invalid_field,
Snackbar.LENGTH_LONG).show() Snackbar.LENGTH_LONG).show()
} }
} else {
val text = SpannableString(getString(R.string.error_invalid_field_for_call) + " ")
text.setSpan(ImageSpan(context, R.drawable.ic_menu_dialpad_lt), text.length - 1, text.length, 0)
Snackbar.make(this@coordinatorLayout, text, Snackbar.LENGTH_LONG).show()
}
} }
} }
} }
@ -260,7 +267,18 @@ class ProgrammingActivity : AppCompatActivity(), AnkoLogger {
makeCall("$phone${MainActivity.PAUSE}${MainActivity.PAUSE}$dtmf") makeCall("$phone${MainActivity.PAUSE}${MainActivity.PAUSE}$dtmf")
} }
fun validateFields(type: String, fields: ArrayList<EditText>, option: Option): Boolean { private fun validateFieldsForCall(type: String, fields: ArrayList<EditText>): Boolean {
if (type.isDKS()) {
fields.forEach {
if (it.text.contains('#')) {
return false
}
}
}
return true
}
private fun validateFields(type: String, fields: ArrayList<EditText>, option: Option): Boolean {
var isValid = true var isValid = true
fields.forEachIndexed { i, v -> fields.forEachIndexed { i, v ->
@ -307,7 +325,7 @@ class ProgrammingActivity : AppCompatActivity(), AnkoLogger {
return isValid return isValid
} }
fun validateSize(size: Int, min: Int, max: Int): Boolean = if (min > 0) { private fun validateSize(size: Int, min: Int, max: Int): Boolean = if (min > 0) {
size in IntRange(min, max) size in IntRange(min, max)
} else { } else {
size == max size == max

View file

@ -21,6 +21,7 @@
<string name="error_invalid">Invalid</string> <string name="error_invalid">Invalid</string>
<string name="error_invalid_dtmf">Invalid DTMF: <xliff:g id="type">%1$s</xliff:g></string> <string name="error_invalid_dtmf">Invalid DTMF: <xliff:g id="type">%1$s</xliff:g></string>
<string name="error_invalid_field">Missing or invalid data.</string> <string name="error_invalid_field">Missing or invalid data.</string>
<string name="error_invalid_field_for_call">The specified values must be entered using the manual steps</string>
<string name="error_invalid_size">Invalid: <xliff:g id="size">%1$d</xliff:g> <xliff:g id="type">%2$s</xliff:g><xliff:g id="min">%3$s</xliff:g> required</string> <string name="error_invalid_size">Invalid: <xliff:g id="size">%1$d</xliff:g> <xliff:g id="type">%2$s</xliff:g><xliff:g id="min">%3$s</xliff:g> required</string>
<string name="error_minimum">" minimum"</string> <string name="error_minimum">" minimum"</string>
<string name="error_required">Required</string> <string name="error_required">Required</string>