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.os.Bundle
import android.support.design.widget.Snackbar
import android.support.design.widget.TextInputEditText
import android.support.v7.app.AppCompatActivity
import android.text.InputFilter
import android.text.InputType
import android.text.SpannableString
import android.text.TextUtils
import android.text.style.ImageSpan
import android.util.TypedValue
import android.view.Gravity.*
import android.view.ViewManager
@ -59,9 +60,9 @@ import java.util.*
@RuntimePermissions
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?) {
super.onCreate(savedInstanceState)
@ -226,18 +227,24 @@ class ProgrammingActivity : AppCompatActivity(), AnkoLogger {
elevation = dip(6).toFloat()
behavior = ScrollAwareFABBehavior()
}.setOnClickListener {
if (validateFields(params.type, fields, option)) {
val dtmf = Dtmf.build(params.type, params.master, params.ack, option, fields)
if (Dtmf.validate(dtmf, "${MainActivity.PAUSE}${params.ack}${params.alt}", option.nodial)) {
callWithPermissionCheck(params.phone, dtmf)
if (validateFieldsForCall(params.type, fields)) {
if (validateFields(params.type, fields, option)) {
val dtmf = Dtmf.build(params.type, params.master, params.ack, option, fields)
if (Dtmf.validate(dtmf, "${MainActivity.PAUSE}${params.ack}${params.alt}", option.nodial)) {
callWithPermissionCheck(params.phone, dtmf)
} else {
Snackbar.make(this@coordinatorLayout,
getString(R.string.error_invalid_dtmf, dtmf),
Snackbar.LENGTH_LONG).show()
}
} else {
Snackbar.make(this@coordinatorLayout,
getString(R.string.error_invalid_dtmf, dtmf),
Snackbar.make(this@coordinatorLayout, R.string.error_invalid_field,
Snackbar.LENGTH_LONG).show()
}
} else {
Snackbar.make(this@coordinatorLayout, R.string.error_invalid_field,
Snackbar.LENGTH_LONG).show()
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")
}
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
fields.forEachIndexed { i, v ->
@ -307,7 +325,7 @@ class ProgrammingActivity : AppCompatActivity(), AnkoLogger {
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)
} else {
size == max

View file

@ -21,6 +21,7 @@
<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_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_minimum">" minimum"</string>
<string name="error_required">Required</string>