From 16a219be2f3b1603bc4c62724bb0ba5130eb2ce2 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Thu, 9 Feb 2017 17:08:14 -0800 Subject: [PATCH] Kotlin 1.6 optimization. --- .idea/misc.xml | 2 +- app/build.gradle | 27 +++++++++--------- .../tesremoteprogrammer/MainActivity.kt | 6 ++-- .../filters/AlphaFilter.kt | 18 ++++-------- .../filters/MinMaxFilter.kt | 13 +-------- .../filters/NumberFilter.kt | 28 +++++++++---------- .../tesremoteprogrammer/models/Field.kt | 6 ++-- .../tesremoteprogrammer/models/Option.kt | 4 +-- .../android/tesremoteprogrammer/util/Dtmf.kt | 6 ++-- build.gradle | 4 +-- gradle/wrapper/gradle-wrapper.properties | 4 +-- 11 files changed, 49 insertions(+), 69 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index 95f0f03..1caa136 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -37,7 +37,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 4f349b8..17b112c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,13 +3,13 @@ apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' android { - compileSdkVersion 24 - buildToolsVersion "24.0.2" + compileSdkVersion 25 + buildToolsVersion "25.0.1" defaultConfig { applicationId "net.thauvin.erik.android.tesremoteprogrammer" minSdkVersion 21 - targetSdkVersion 24 + targetSdkVersion 25 versionCode 1 versionName "1.0" } @@ -29,28 +29,29 @@ dependencies { testCompile 'junit:junit:4.12' - compile 'com.android.support:support-v13:24.1.1' - compile 'com.android.support:appcompat-v7:24.1.1' + compile 'com.android.support:support-v13:25.0.1' + compile 'com.android.support:appcompat-v7:25.0.1' compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - compile 'org.jetbrains.anko:anko-sdk23:0.9' - compile 'org.jetbrains.anko:anko-appcompat-v7:0.9' - compile 'org.jetbrains.anko:anko-support-v4:0.9' - compile 'org.jetbrains.anko:anko-design:0.9' - compile 'com.android.support:design:24.1.1' + compile 'org.jetbrains.anko:anko-sdk23:0.9.1' + compile 'org.jetbrains.anko:anko-appcompat-v7:0.9.1' + compile 'org.jetbrains.anko:anko-support-v4:0.9.1' + compile 'org.jetbrains.anko:anko-design:0.9.1' + compile 'com.android.support:design:25.0.1' compile group: 'com.google.code.gson', name: 'gson', version: '2.7' // https://github.com/JakeWharton/ViewPagerIndicator compile 'fr.avianey.com.viewpagerindicator:library:2.4.1.1@aar' // https://github.com/AndroidDeveloperLB/AutoFitTextView - compile 'com.github.AndroidDeveloperLB:AutoFitTextView:3' + compile 'com.github.AndroidDeveloperLB:AutoFitTextView:4' // https://github.com/hotchemi/PermissionsDispatcher - compile 'com.github.hotchemi:permissionsdispatcher:2.1.3' - kapt 'com.github.hotchemi:permissionsdispatcher-processor:2.1.3' + compile 'com.github.hotchemi:permissionsdispatcher:2.2.0' + kapt 'com.github.hotchemi:permissionsdispatcher-processor:2.2.0' } repositories { + maven { url 'https://dl.bintray.com/jetbrains/anko/'} mavenCentral() maven { url "https://jitpack.io" } } diff --git a/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/MainActivity.kt b/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/MainActivity.kt index 9163e7a..d778a92 100644 --- a/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/MainActivity.kt +++ b/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/MainActivity.kt @@ -138,7 +138,7 @@ class MainActivity : AppCompatActivity(), AnkoLogger { recreate() } - if (errors.length > 0) { + if (errors.isNotEmpty()) { alert { title(R.string.alert_config_error) message(fromHtml("$errors")) @@ -392,7 +392,7 @@ class MainActivity : AppCompatActivity(), AnkoLogger { } // options - if (opts.size == 0) { + if (opts.isEmpty()) { errors.append(getString(R.string.validate_missing_opts)) } else { opts.forEachIndexed { i, option -> @@ -424,7 +424,7 @@ class MainActivity : AppCompatActivity(), AnkoLogger { R.string.validate_missing_opts_prop, i + 1, "dtmf")) - } else if (fields.size == 0) { // fields missing + } else if (fields.isEmpty()) { // fields missing errors.append(getString( R.string.validate_missing_opts_prop, i + 1, diff --git a/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/filters/AlphaFilter.kt b/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/filters/AlphaFilter.kt index ac330c7..11dc26f 100644 --- a/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/filters/AlphaFilter.kt +++ b/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/filters/AlphaFilter.kt @@ -21,13 +21,7 @@ import android.text.InputFilter import android.text.SpannableStringBuilder import android.text.Spanned -class AlphaFilter : InputFilter { - private val extras: String - - constructor(extras: String) { - this.extras = extras - } - +class AlphaFilter(private val extras: String) : InputFilter { override fun filter(source: CharSequence, start: Int, end: Int, @@ -45,12 +39,10 @@ class AlphaFilter : InputFilter { return source } else { val sb = StringBuilder() - for (i in start..end - 1) { - val c = source[i] - if (c.isLetterOrDigit() || extras.contains(c)) { - sb.append(c) - } - } + (start..end - 1) + .map { source[it] } + .filter { it.isLetterOrDigit() || extras.contains(it) } + .forEach { sb.append(it) } return sb.toString() } } diff --git a/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/filters/MinMaxFilter.kt b/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/filters/MinMaxFilter.kt index 8e05b0d..a712f30 100644 --- a/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/filters/MinMaxFilter.kt +++ b/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/filters/MinMaxFilter.kt @@ -21,18 +21,7 @@ import android.text.InputFilter import android.text.Spanned import org.jetbrains.anko.AnkoLogger -class MinMaxFilter : 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 - } +class MinMaxFilter(private val min: Int, private val max: Int, private val size: Int, private val zeros: Boolean) : InputFilter, AnkoLogger { override fun filter(source: CharSequence, start: Int, end: Int, dest: Spanned, dstart: Int, dend: Int): CharSequence? { val input = (dest.toString() + source.toString()) diff --git a/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/filters/NumberFilter.kt b/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/filters/NumberFilter.kt index 0beb552..2be2f24 100644 --- a/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/filters/NumberFilter.kt +++ b/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/filters/NumberFilter.kt @@ -23,18 +23,10 @@ import android.text.Spanned import net.thauvin.erik.android.tesremoteprogrammer.util.isDigits import org.jetbrains.anko.AnkoLogger -class NumberFilter : InputFilter, AnkoLogger { +class NumberFilter(allowed: String, alt: String) : InputFilter, AnkoLogger { private val allowed: String private val digits = "0123456789" - constructor(allowed: String, alt: String) { - this.allowed = if (allowed.isDigits()) { - "$allowed$alt" - } else { - "$digits$alt" - } - } - override fun filter(source: CharSequence, start: Int, end: Int, @@ -52,13 +44,19 @@ class NumberFilter : InputFilter, AnkoLogger { return source } else { val sb = StringBuilder() - for (i in start..end - 1) { - val c = source[i] - if (allowed.contains(c)) { - sb.append(c.toUpperCase()) - } - } + (start..end - 1) + .map { source[it] } + .filter { allowed.contains(it) } + .forEach { sb.append(it.toUpperCase()) } return sb.toString() } } + + init { + this.allowed = if (allowed.isDigits()) { + "$allowed$alt" + } else { + "$digits$alt" + } + } } \ No newline at end of file diff --git a/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/models/Field.kt b/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/models/Field.kt index fbf9c14..3cfffa0 100644 --- a/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/models/Field.kt +++ b/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/models/Field.kt @@ -45,9 +45,9 @@ data class Field(var hint: String, constructor(source: Parcel) : this( source.readString(), source.readString(), - 1.equals(source.readInt()), - 1.equals(source.readInt()), - 1.equals(source.readInt()), + 1 == source.readInt(), + 1 == source.readInt(), + 1 == source.readInt(), source.readInt(), source.readInt(), source.readInt(), diff --git a/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/models/Option.kt b/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/models/Option.kt index 6665ad1..254680d 100644 --- a/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/models/Option.kt +++ b/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/models/Option.kt @@ -41,8 +41,8 @@ data class Option(var title: String, constructor(source: Parcel) : this( source.readString(), source.createTypedArrayList(Field.CREATOR), - 1.equals(source.readInt()), - 1.equals(source.readInt()), + 1 == source.readInt(), + 1 == source.readInt(), source.readString()) override fun compareTo(other: Option): Int { diff --git a/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/util/Dtmf.kt b/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/util/Dtmf.kt index 538e384..70f188e 100644 --- a/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/util/Dtmf.kt +++ b/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/util/Dtmf.kt @@ -157,7 +157,7 @@ class Dtmf { ack: String, option: Option, fields: ArrayList): String { - val replace = arrayListOf(Pair("$DTMF_MASTER", master)) + val replace = arrayListOf(Pair(DTMF_MASTER, master)) fields.forEachIndexed { i, field -> replace.add(Pair(DTMF_FIELD.format(i + 1), @@ -175,7 +175,7 @@ class Dtmf { fun validate(dtmf: String, extra: String): Boolean { dtmf.forEach { - if (!(it.isDigit() || it.equals(',') || extra.contains(it))) { + if (!(it.isDigit() || it == ',' || extra.contains(it))) { return false } } @@ -183,7 +183,7 @@ class Dtmf { } 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 -> replace.add(Pair(DTMF_FIELD.format(i + 1), blank)) diff --git a/build.gradle b/build.gradle index de849fa..3e79861 100644 --- a/build.gradle +++ b/build.gradle @@ -1,12 +1,12 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.0.4' + ext.kotlin_version = '1.0.6' repositories { jcenter() } 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" // NOTE: Do not place your application dependencies here; they belong diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 560b7b7..76eb191 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon Sep 19 21:43:42 PDT 2016 +#Thu Feb 09 15:12:18 PST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME 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