Added type parameter.

This commit is contained in:
Erik C. Thauvin 2016-08-31 16:57:58 -07:00
parent c1e6b1167f
commit fa40890202
13 changed files with 63 additions and 49 deletions

View file

@ -347,6 +347,12 @@ class MainActivity : AppCompatActivity(), AnkoLogger {
errors.append(getString(R.string.validate_missing_param, "name"))
}
if (params.type.isBlank()) {
errors.append(getString(R.string.validate_missing_param, "type"))
} else if (!Dtmf.isValidType(params.type)) {
errors.append(getString(R.string.validate_invalid_param, "type"))
}
if (params.size < 1) {
errors.append(getString(R.string.validate_invalid_param, "size"))
}
@ -387,11 +393,7 @@ class MainActivity : AppCompatActivity(), AnkoLogger {
errors.append(getString(R.string.validate_invalid_attr, i + 1, j + 1, "digits"))
}
if (!Dtmf.isValidAlpha(field.alpha)) {
errors.append(getString(R.string.validate_invalid_attr, i + 1, j + 1, "alpha"))
}
if (field.alpha.isBlank()) {
if (!field.alpha) {
if (field.min >= 0 || field.max >= 0) {
if (field.max < 1) {
errors.append(getString(R.string.validate_invalid_attr, i + 1, j + 1, "max"))

View file

@ -98,11 +98,11 @@ class ProgrammingActivity : AppCompatActivity(), AnkoLogger {
val editText = editText() {
hint = field.hint
if (field.alpha.isNotBlank()) {
if (field.alpha.equals(Dtmf.DKS, true)) {
if (field.alpha) {
if (params.type.equals(Dtmf.DKS, true)) {
inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS
inputFilters.add(AlphaFilter(Dtmf.DKS_EXTRAS))
} else if (field.alpha.equals(Dtmf.LINEAR, true)) {
} else if (params.type.equals(Dtmf.LINEAR, true)) {
inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_CAP_SENTENCES
inputFilters.add(AlphaFilter(Dtmf.LINEAR_EXTRAS))
}
@ -153,7 +153,7 @@ class ProgrammingActivity : AppCompatActivity(), AnkoLogger {
onClick {
if (validateFields(fields, option)) {
val dtmf = Dtmf.build(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}")) {
val begin = if (params.begin.isNotBlank()) {
"${params.begin}${MainActivity.PAUSE}"
@ -198,7 +198,7 @@ class ProgrammingActivity : AppCompatActivity(), AnkoLogger {
imageResource = R.drawable.fab_ic_call
onClick {
if (validateFields(fields, option)) {
val dtmf = Dtmf.build(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}")) {
ProgrammingActivityPermissionsDispatcher.callWithCheck(
this@ProgrammingActivity, params.phone, dtmf)
@ -250,7 +250,7 @@ class ProgrammingActivity : AppCompatActivity(), AnkoLogger {
} else {
option.fields[i].size
}
if (option.fields[i].alpha.isBlank() &&
if (!option.fields[i].alpha &&
!validateSize(v.length(), option.fields[i].minSize, option.fields[i].size)) {
v.error = getString(R.string.error_invalid_size, size,
resources.getQuantityString(R.plurals.error_digit, size))

View file

@ -22,8 +22,8 @@ import android.os.Parcelable
import java.io.Serializable
data class Field(var hint: String,
var alpha: String,
var digits: String,
var alpha: Boolean,
val alt: Boolean,
var zeros: Boolean,
var minSize: Int,
@ -40,12 +40,12 @@ data class Field(var hint: String,
}
}
constructor() : this("", "", "", false, true, -1, -1, -1, -1)
constructor() : this("", "", false, false, true, -1, -1, -1, -1)
constructor(source: Parcel) : this(
source.readString(),
source.readString(),
source.readString(),
1.equals(source.readInt()),
1.equals(source.readInt()),
1.equals(source.readInt()),
source.readInt(),
@ -57,8 +57,8 @@ data class Field(var hint: String,
override fun writeToParcel(dest: Parcel?, flags: Int) {
dest?.writeString(hint)
dest?.writeString(alpha)
dest?.writeString(digits)
dest?.writeInt((if (alpha) 1 else 0))
dest?.writeInt((if (alt) 1 else 0))
dest?.writeInt((if (zeros) 1 else 0))
dest?.writeInt(minSize)

View file

@ -22,6 +22,7 @@ import android.os.Parcelable
import java.io.Serializable
data class Params(var name: String,
var type: String,
var phone: String,
var master: String,
var size: Int,
@ -39,12 +40,13 @@ data class Params(var name: String,
}
}
constructor() : this("", "", "", -1, "", "", "", "")
constructor() : this("", "", "", "", -1, "", "", "", "")
constructor(source: Parcel) : this(
source.readString(),
source.readString(),
source.readString(),
source.readString(),
source.readInt(),
source.readString(),
source.readString(),
@ -55,6 +57,7 @@ data class Params(var name: String,
override fun writeToParcel(dest: Parcel?, flags: Int) {
dest?.writeString(name)
dest?.writeString(type)
dest?.writeString(phone)
dest?.writeString(master)
dest?.writeInt(size)

View file

@ -87,8 +87,8 @@ class Dtmf {
return result.toString()
}
fun isValidAlpha(alpha: String) : Boolean {
return alpha.isBlank() || alpha.equals(DKS, true) || alpha.equals(LINEAR, true)
fun isValidType(type: String): Boolean {
return type.equals(DKS, true) || type.equals(LINEAR, true)
}
@ -152,7 +152,8 @@ class Dtmf {
return result.toString()
}
fun build(master: String,
fun build(type: String,
master: String,
ack: String,
option: Option,
fields: ArrayList<EditText>): String {
@ -160,12 +161,11 @@ class Dtmf {
fields.forEachIndexed { i, field ->
replace.add(Pair(DTMF_FIELD.format(i + 1),
if (option.fields[i].alpha.equals(DKS, true)) {
if (type.equals(DKS, true)) {
dksAlphaToDigits(field.text.toString(), ack)
} else if (option.fields[i].alpha.equals(LINEAR, true)) {
} else if (type.equals(LINEAR, true)) {
linearAlphaToDigits(field.text.toString())
}
else {
} else {
field.text.toString()
}))
}

View file

@ -1,6 +1,7 @@
{
"params": {
"name": "DKS 1802",
"type": "dks",
"ack": "*",
"alt": "#",
"end": "0 + #",

View file

@ -1,6 +1,7 @@
{
"params": {
"name": "DKS 1802-EPD",
"type": "dks",
"ack": "*",
"alt": "#",
"end": "0 + #",
@ -533,7 +534,7 @@
{
"hint": "Name",
"size": 11,
"alpha": "dks"
"alpha": true
}
],
"nodial": true,
@ -545,17 +546,17 @@
{
"hint": "Message (Line 1)",
"size": 16,
"alpha": "dks"
"alpha": true
},
{
"hint": "Message (Line 2)",
"size": 16,
"alpha": "dks"
"alpha": true
},
{
"hint": "Message (Line 3)",
"size": 16,
"alpha": "dks"
"alpha": true
}
],
"nodial": true,
@ -567,17 +568,17 @@
{
"hint": "Message (Line 1)",
"size": 16,
"alpha": "dks"
"alpha": true
},
{
"hint": "Message (Line 2)",
"size": 16,
"alpha": "dks"
"alpha": true
},
{
"hint": "Message (Line 3)",
"size": 16,
"alpha": "dks"
"alpha": true
}
],
"nodial": true,

View file

@ -1,6 +1,7 @@
{
"params": {
"name": "DKS 1803/1808/1810",
"type": "dks",
"ack": "*",
"alt": "#",
"end": "0 + #",

View file

@ -1,6 +1,7 @@
{
"params": {
"name": "DKS 1812",
"type": "dks",
"ack": "*",
"alt": "#",
"end": "0 + #",

View file

@ -1,6 +1,7 @@
{
"params": {
"name": "DKS 1819",
"type": "dks",
"ack": "*",
"alt": "#",
"end": "0 + #",

View file

@ -1,6 +1,7 @@
{
"params": {
"name": "Linear AE-100",
"type": "linear",
"ack": "#",
"begin": "0 + 2",
"size": 6
@ -22,7 +23,7 @@
{
"hint": "Name",
"size": 16,
"alpha": "linear"
"alpha": true
},
{
"hint": "Phone",
@ -51,7 +52,7 @@
{
"hint": "Name",
"size": 16,
"alpha": "linear"
"alpha": true
},
{
"hint": "Phone",
@ -124,12 +125,12 @@
{
"hint": "Line 1",
"size": 16,
"alpha": "linear"
"alpha": true
},
{
"hint": "Line 2",
"size": 16,
"alpha": "linear"
"alpha": true
}
],
"dtmf": "[FIELD:1]#,[MASTER]#,57#,[FIELD:2]#,[FIELD:3]#,99#"

View file

@ -1,6 +1,7 @@
{
"params": {
"name": "Linear AE-500",
"type": "linear",
"ack": "#",
"begin": "0 + 2",
"size": 6
@ -22,7 +23,7 @@
{
"hint": "Name",
"size": 16,
"alpha": "linear"
"alpha": true
},
{
"hint": "Phone",
@ -51,7 +52,7 @@
{
"hint": "Name",
"size": 16,
"alpha": "linear"
"alpha": true
},
{
"hint": "Phone",
@ -166,12 +167,12 @@
{
"hint": "Line 1",
"size": 16,
"alpha": "linear"
"alpha": true
},
{
"hint": "Line 2",
"size": 16,
"alpha": "linear"
"alpha": true
}
],
"dtmf": "[FIELD:1]#,[MASTER]#,57#,[FIELD:2]#,[FIELD:3]#,99#"