Validate values that cannot be used over the phone with DKS.
This commit is contained in:
parent
b3e336db70
commit
56ea5a1a36
2 changed files with 32 additions and 13 deletions
|
@ -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
|
||||||
|
|
|
@ -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>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue