Kotlin 1.6 optimization.
This commit is contained in:
parent
1baeb4902c
commit
16a219be2f
11 changed files with 49 additions and 69 deletions
2
.idea/misc.xml
generated
2
.idea/misc.xml
generated
|
@ -37,7 +37,7 @@
|
||||||
<ConfirmationsSetting value="0" id="Add" />
|
<ConfirmationsSetting value="0" id="Add" />
|
||||||
<ConfirmationsSetting value="0" id="Remove" />
|
<ConfirmationsSetting value="0" id="Remove" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectType">
|
<component name="ProjectType">
|
||||||
|
|
|
@ -3,13 +3,13 @@ apply plugin: 'kotlin-android'
|
||||||
apply plugin: 'kotlin-android-extensions'
|
apply plugin: 'kotlin-android-extensions'
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion 24
|
compileSdkVersion 25
|
||||||
buildToolsVersion "24.0.2"
|
buildToolsVersion "25.0.1"
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId "net.thauvin.erik.android.tesremoteprogrammer"
|
applicationId "net.thauvin.erik.android.tesremoteprogrammer"
|
||||||
minSdkVersion 21
|
minSdkVersion 21
|
||||||
targetSdkVersion 24
|
targetSdkVersion 25
|
||||||
versionCode 1
|
versionCode 1
|
||||||
versionName "1.0"
|
versionName "1.0"
|
||||||
}
|
}
|
||||||
|
@ -29,28 +29,29 @@ dependencies {
|
||||||
|
|
||||||
testCompile 'junit:junit:4.12'
|
testCompile 'junit:junit:4.12'
|
||||||
|
|
||||||
compile 'com.android.support:support-v13:24.1.1'
|
compile 'com.android.support:support-v13:25.0.1'
|
||||||
compile 'com.android.support:appcompat-v7:24.1.1'
|
compile 'com.android.support:appcompat-v7:25.0.1'
|
||||||
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
||||||
compile 'org.jetbrains.anko:anko-sdk23:0.9'
|
compile 'org.jetbrains.anko:anko-sdk23:0.9.1'
|
||||||
compile 'org.jetbrains.anko:anko-appcompat-v7:0.9'
|
compile 'org.jetbrains.anko:anko-appcompat-v7:0.9.1'
|
||||||
compile 'org.jetbrains.anko:anko-support-v4:0.9'
|
compile 'org.jetbrains.anko:anko-support-v4:0.9.1'
|
||||||
compile 'org.jetbrains.anko:anko-design:0.9'
|
compile 'org.jetbrains.anko:anko-design:0.9.1'
|
||||||
compile 'com.android.support:design:24.1.1'
|
compile 'com.android.support:design:25.0.1'
|
||||||
compile group: 'com.google.code.gson', name: 'gson', version: '2.7'
|
compile group: 'com.google.code.gson', name: 'gson', version: '2.7'
|
||||||
|
|
||||||
// https://github.com/JakeWharton/ViewPagerIndicator
|
// https://github.com/JakeWharton/ViewPagerIndicator
|
||||||
compile 'fr.avianey.com.viewpagerindicator:library:2.4.1.1@aar'
|
compile 'fr.avianey.com.viewpagerindicator:library:2.4.1.1@aar'
|
||||||
|
|
||||||
// https://github.com/AndroidDeveloperLB/AutoFitTextView
|
// https://github.com/AndroidDeveloperLB/AutoFitTextView
|
||||||
compile 'com.github.AndroidDeveloperLB:AutoFitTextView:3'
|
compile 'com.github.AndroidDeveloperLB:AutoFitTextView:4'
|
||||||
|
|
||||||
// https://github.com/hotchemi/PermissionsDispatcher
|
// https://github.com/hotchemi/PermissionsDispatcher
|
||||||
compile 'com.github.hotchemi:permissionsdispatcher:2.1.3'
|
compile 'com.github.hotchemi:permissionsdispatcher:2.2.0'
|
||||||
kapt 'com.github.hotchemi:permissionsdispatcher-processor:2.1.3'
|
kapt 'com.github.hotchemi:permissionsdispatcher-processor:2.2.0'
|
||||||
}
|
}
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
|
maven { url 'https://dl.bintray.com/jetbrains/anko/'}
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
maven { url "https://jitpack.io" }
|
maven { url "https://jitpack.io" }
|
||||||
}
|
}
|
||||||
|
|
|
@ -138,7 +138,7 @@ class MainActivity : AppCompatActivity(), AnkoLogger {
|
||||||
recreate()
|
recreate()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (errors.length > 0) {
|
if (errors.isNotEmpty()) {
|
||||||
alert {
|
alert {
|
||||||
title(R.string.alert_config_error)
|
title(R.string.alert_config_error)
|
||||||
message(fromHtml("$errors"))
|
message(fromHtml("$errors"))
|
||||||
|
@ -392,7 +392,7 @@ class MainActivity : AppCompatActivity(), AnkoLogger {
|
||||||
}
|
}
|
||||||
|
|
||||||
// options
|
// options
|
||||||
if (opts.size == 0) {
|
if (opts.isEmpty()) {
|
||||||
errors.append(getString(R.string.validate_missing_opts))
|
errors.append(getString(R.string.validate_missing_opts))
|
||||||
} else {
|
} else {
|
||||||
opts.forEachIndexed { i, option ->
|
opts.forEachIndexed { i, option ->
|
||||||
|
@ -424,7 +424,7 @@ class MainActivity : AppCompatActivity(), AnkoLogger {
|
||||||
R.string.validate_missing_opts_prop,
|
R.string.validate_missing_opts_prop,
|
||||||
i + 1,
|
i + 1,
|
||||||
"dtmf"))
|
"dtmf"))
|
||||||
} else if (fields.size == 0) { // fields missing
|
} else if (fields.isEmpty()) { // fields missing
|
||||||
errors.append(getString(
|
errors.append(getString(
|
||||||
R.string.validate_missing_opts_prop,
|
R.string.validate_missing_opts_prop,
|
||||||
i + 1,
|
i + 1,
|
||||||
|
|
|
@ -21,13 +21,7 @@ import android.text.InputFilter
|
||||||
import android.text.SpannableStringBuilder
|
import android.text.SpannableStringBuilder
|
||||||
import android.text.Spanned
|
import android.text.Spanned
|
||||||
|
|
||||||
class AlphaFilter : InputFilter {
|
class AlphaFilter(private val extras: String) : InputFilter {
|
||||||
private val extras: String
|
|
||||||
|
|
||||||
constructor(extras: String) {
|
|
||||||
this.extras = extras
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun filter(source: CharSequence,
|
override fun filter(source: CharSequence,
|
||||||
start: Int,
|
start: Int,
|
||||||
end: Int,
|
end: Int,
|
||||||
|
@ -45,12 +39,10 @@ class AlphaFilter : InputFilter {
|
||||||
return source
|
return source
|
||||||
} else {
|
} else {
|
||||||
val sb = StringBuilder()
|
val sb = StringBuilder()
|
||||||
for (i in start..end - 1) {
|
(start..end - 1)
|
||||||
val c = source[i]
|
.map { source[it] }
|
||||||
if (c.isLetterOrDigit() || extras.contains(c)) {
|
.filter { it.isLetterOrDigit() || extras.contains(it) }
|
||||||
sb.append(c)
|
.forEach { sb.append(it) }
|
||||||
}
|
|
||||||
}
|
|
||||||
return sb.toString()
|
return sb.toString()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,18 +21,7 @@ import android.text.InputFilter
|
||||||
import android.text.Spanned
|
import android.text.Spanned
|
||||||
import org.jetbrains.anko.AnkoLogger
|
import org.jetbrains.anko.AnkoLogger
|
||||||
|
|
||||||
class MinMaxFilter : InputFilter, AnkoLogger {
|
class MinMaxFilter(private val min: Int, private val max: Int, private val size: Int, private val zeros: Boolean) : InputFilter, AnkoLogger {
|
||||||
private val min: Int
|
|
||||||
private val max: Int
|
|
||||||
private val size: Int
|
|
||||||
private val zeros: Boolean
|
|
||||||
|
|
||||||
constructor(min: Int, max: Int, size: Int, zeros: Boolean) {
|
|
||||||
this.min = min
|
|
||||||
this.max = max
|
|
||||||
this.size = size
|
|
||||||
this.zeros = zeros
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun filter(source: CharSequence, start: Int, end: Int, dest: Spanned, dstart: Int, dend: Int): CharSequence? {
|
override fun filter(source: CharSequence, start: Int, end: Int, dest: Spanned, dstart: Int, dend: Int): CharSequence? {
|
||||||
val input = (dest.toString() + source.toString())
|
val input = (dest.toString() + source.toString())
|
||||||
|
|
|
@ -23,18 +23,10 @@ import android.text.Spanned
|
||||||
import net.thauvin.erik.android.tesremoteprogrammer.util.isDigits
|
import net.thauvin.erik.android.tesremoteprogrammer.util.isDigits
|
||||||
import org.jetbrains.anko.AnkoLogger
|
import org.jetbrains.anko.AnkoLogger
|
||||||
|
|
||||||
class NumberFilter : InputFilter, AnkoLogger {
|
class NumberFilter(allowed: String, alt: String) : InputFilter, AnkoLogger {
|
||||||
private val allowed: String
|
private val allowed: String
|
||||||
private val digits = "0123456789"
|
private val digits = "0123456789"
|
||||||
|
|
||||||
constructor(allowed: String, alt: String) {
|
|
||||||
this.allowed = if (allowed.isDigits()) {
|
|
||||||
"$allowed$alt"
|
|
||||||
} else {
|
|
||||||
"$digits$alt"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun filter(source: CharSequence,
|
override fun filter(source: CharSequence,
|
||||||
start: Int,
|
start: Int,
|
||||||
end: Int,
|
end: Int,
|
||||||
|
@ -52,13 +44,19 @@ class NumberFilter : InputFilter, AnkoLogger {
|
||||||
return source
|
return source
|
||||||
} else {
|
} else {
|
||||||
val sb = StringBuilder()
|
val sb = StringBuilder()
|
||||||
for (i in start..end - 1) {
|
(start..end - 1)
|
||||||
val c = source[i]
|
.map { source[it] }
|
||||||
if (allowed.contains(c)) {
|
.filter { allowed.contains(it) }
|
||||||
sb.append(c.toUpperCase())
|
.forEach { sb.append(it.toUpperCase()) }
|
||||||
}
|
|
||||||
}
|
|
||||||
return sb.toString()
|
return sb.toString()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
init {
|
||||||
|
this.allowed = if (allowed.isDigits()) {
|
||||||
|
"$allowed$alt"
|
||||||
|
} else {
|
||||||
|
"$digits$alt"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -45,9 +45,9 @@ data class Field(var hint: String,
|
||||||
constructor(source: Parcel) : this(
|
constructor(source: Parcel) : this(
|
||||||
source.readString(),
|
source.readString(),
|
||||||
source.readString(),
|
source.readString(),
|
||||||
1.equals(source.readInt()),
|
1 == source.readInt(),
|
||||||
1.equals(source.readInt()),
|
1 == source.readInt(),
|
||||||
1.equals(source.readInt()),
|
1 == source.readInt(),
|
||||||
source.readInt(),
|
source.readInt(),
|
||||||
source.readInt(),
|
source.readInt(),
|
||||||
source.readInt(),
|
source.readInt(),
|
||||||
|
|
|
@ -41,8 +41,8 @@ data class Option(var title: String,
|
||||||
constructor(source: Parcel) : this(
|
constructor(source: Parcel) : this(
|
||||||
source.readString(),
|
source.readString(),
|
||||||
source.createTypedArrayList(Field.CREATOR),
|
source.createTypedArrayList(Field.CREATOR),
|
||||||
1.equals(source.readInt()),
|
1 == source.readInt(),
|
||||||
1.equals(source.readInt()),
|
1 == source.readInt(),
|
||||||
source.readString())
|
source.readString())
|
||||||
|
|
||||||
override fun compareTo(other: Option): Int {
|
override fun compareTo(other: Option): Int {
|
||||||
|
|
|
@ -157,7 +157,7 @@ class Dtmf {
|
||||||
ack: String,
|
ack: String,
|
||||||
option: Option,
|
option: Option,
|
||||||
fields: ArrayList<EditText>): String {
|
fields: ArrayList<EditText>): String {
|
||||||
val replace = arrayListOf(Pair("$DTMF_MASTER", master))
|
val replace = arrayListOf(Pair(DTMF_MASTER, master))
|
||||||
|
|
||||||
fields.forEachIndexed { i, field ->
|
fields.forEachIndexed { i, field ->
|
||||||
replace.add(Pair(DTMF_FIELD.format(i + 1),
|
replace.add(Pair(DTMF_FIELD.format(i + 1),
|
||||||
|
@ -175,7 +175,7 @@ class Dtmf {
|
||||||
|
|
||||||
fun validate(dtmf: String, extra: String): Boolean {
|
fun validate(dtmf: String, extra: String): Boolean {
|
||||||
dtmf.forEach {
|
dtmf.forEach {
|
||||||
if (!(it.isDigit() || it.equals(',') || extra.contains(it))) {
|
if (!(it.isDigit() || it == ',' || extra.contains(it))) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -183,7 +183,7 @@ class Dtmf {
|
||||||
}
|
}
|
||||||
|
|
||||||
fun mock(option: Option, blank: String): String {
|
fun mock(option: Option, blank: String): String {
|
||||||
val replace = arrayListOf(Pair("$DTMF_MASTER", blank))
|
val replace = arrayListOf(Pair(DTMF_MASTER, blank))
|
||||||
|
|
||||||
option.fields.forEachIndexed { i, field ->
|
option.fields.forEachIndexed { i, field ->
|
||||||
replace.add(Pair(DTMF_FIELD.format(i + 1), blank))
|
replace.add(Pair(DTMF_FIELD.format(i + 1), blank))
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||||
|
|
||||||
buildscript {
|
buildscript {
|
||||||
ext.kotlin_version = '1.0.4'
|
ext.kotlin_version = '1.0.6'
|
||||||
repositories {
|
repositories {
|
||||||
jcenter()
|
jcenter()
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:2.2.0'
|
classpath 'com.android.tools.build:gradle:2.3.0-beta4'
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||||
|
|
||||||
// NOTE: Do not place your application dependencies here; they belong
|
// NOTE: Do not place your application dependencies here; they belong
|
||||||
|
|
4
gradle/wrapper/gradle-wrapper.properties
vendored
4
gradle/wrapper/gradle-wrapper.properties
vendored
|
@ -1,6 +1,6 @@
|
||||||
#Mon Sep 19 21:43:42 PDT 2016
|
#Thu Feb 09 15:12:18 PST 2017
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue