From 7c3443a66a93d0361a8dcd9ed6d579525f34b7a2 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Sun, 23 Jul 2017 18:22:27 -0700 Subject: [PATCH] Android Studio 2.3.3 and Anko 0.10.1 updates. --- .idea/inspectionProfiles/Project_Default.xml | 7 ++ .../inspectionProfiles/profiles_settings.xml | 7 ++ app/build.gradle | 13 +-- .../tesremoteprogrammer/MainActivity.kt | 29 ++++-- .../ProgrammingActivity.kt | 93 +++++++++---------- app/src/main/res/values/strings.xml | 2 +- build.gradle | 4 +- 7 files changed, 88 insertions(+), 67 deletions(-) create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..ab73ccd --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..3b31283 --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index c9172f4..8ec3835 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,10 +1,11 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'kotlin-kapt' android { compileSdkVersion 25 - buildToolsVersion "25.0.2" + buildToolsVersion "26.0.0" defaultConfig { applicationId "net.thauvin.erik.android.tesremoteprogrammer" @@ -33,12 +34,12 @@ dependencies { compile 'com.android.support:support-v13:25.3.1' compile 'com.android.support:appcompat-v7:25.3.1' compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - 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 'org.jetbrains.anko:anko-sdk23:0.10.1' + compile 'org.jetbrains.anko:anko-appcompat-v7:0.10.1' + compile 'org.jetbrains.anko:anko-support-v4:0.10.1' + compile 'org.jetbrains.anko:anko-design:0.10.1' compile 'com.android.support:design:25.3.1' - compile group: 'com.google.code.gson', name: 'gson', version: '2.7' + compile group: 'com.google.code.gson', name: 'gson', version: '2.8.1' // https://github.com/JakeWharton/ViewPagerIndicator compile 'fr.avianey.com.viewpagerindicator:library:2.4.1.1@aar' 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 1d3b05d..3961c8a 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 @@ -22,6 +22,7 @@ import android.app.Activity import android.app.AlertDialog import android.content.Context import android.content.Intent +import android.graphics.Color import android.graphics.Typeface import android.os.Build import android.os.Bundle @@ -38,7 +39,6 @@ import android.view.inputmethod.InputMethodManager import android.widget.AdapterView import android.widget.ArrayAdapter import android.widget.EditText -import android.widget.TextView import com.google.gson.Gson import com.google.gson.JsonSyntaxException import net.thauvin.erik.android.tesremoteprogrammer.models.Config @@ -143,8 +143,8 @@ class MainActivity : AppCompatActivity(), AnkoLogger { if (errors.isNotEmpty()) { alert { - title(R.string.alert_config_error) - message(fromHtml("$errors")) + title = getString(R.string.alert_config_error) + message = fromHtml("$errors") cancelButton { } }.show() } @@ -283,15 +283,24 @@ class MainActivity : AppCompatActivity(), AnkoLogger { when (item?.itemId) { R.id.action_about -> { val alert = alert { - title(R.string.app_name) - message(fromHtml(getString(R.string.about_message, BuildConfig.VERSION_NAME, - SimpleDateFormat("yyyy-MM-dd", Locale.US).format(Date(BuildConfig.TIMESTAMP))))) - icon(R.mipmap.ic_launcher) + title = getString(R.string.app_name) + icon = getDrawable(R.mipmap.ic_launcher) + customView { + linearLayout { + topPadding = dip(16) + rightPadding = topPadding + leftPadding = topPadding * 2 + textView(fromHtml(getString(R.string.about_message, + BuildConfig.VERSION_NAME, + SimpleDateFormat("yyyy-MM-dd", Locale.US).format(Date(BuildConfig.TIMESTAMP))))) { + movementMethod = LinkMovementMethod.getInstance() + setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18f) + setTextColor(Color.BLACK) + } + } + } okButton {} }.show() - - (alert.dialog?.findViewById(android.R.id.message) as TextView) - .movementMethod = LinkMovementMethod.getInstance() } R.id.action_confs -> { val confs = loadConfigurations().configs.toSortedMap() diff --git a/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/ProgrammingActivity.kt b/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/ProgrammingActivity.kt index 17b903d..e68e644 100644 --- a/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/ProgrammingActivity.kt +++ b/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/ProgrammingActivity.kt @@ -59,8 +59,8 @@ import java.util.* class ProgrammingActivity : AppCompatActivity(), AnkoLogger { val empty = "" - inline fun ViewManager.autofitTextView(theme: Int = 0, init: AutoResizeTextView.() -> Unit) = ankoView({ AutoResizeTextView(it) }, theme, init) - inline fun ViewManager.textInputEditText(theme: Int = 0, init: TextInputEditText.() -> Unit) = ankoView({ TextInputEditText(it) }, theme, init) + inline fun ViewManager.autofitTextView(theme: Int = 0, init: AutoResizeTextView.() -> Unit) = ankoView(::AutoResizeTextView, theme, init) + inline fun ViewManager.textInputEditText(theme: Int = 0, init: TextInputEditText.() -> Unit) = ankoView(::TextInputEditText, theme, init) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -109,7 +109,7 @@ class ProgrammingActivity : AppCompatActivity(), AnkoLogger { val inputFilters: ArrayList = ArrayList() - val editText = textInputEditText() { + val editText = textInputEditText { hint = field!!.hint if (field.alpha) { @@ -171,35 +171,6 @@ class ProgrammingActivity : AppCompatActivity(), AnkoLogger { if (!option.nodial) { backgroundTintList = ColorStateList.valueOf(Color.GRAY) } - - onClick { - 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)) { - val begin = if (params.begin.isNotBlank()) { - "${params.begin}${MainActivity.PAUSE}" - } else { - empty - } - - val end = if (params.end.isNotBlank()) { - "${MainActivity.PAUSE}${params.end}" - } else { - empty - } - - startActivity( - StepsActivity.EXTRA_STEPS to "$begin${dtmf.replace(MainActivity.QUOTE, empty)}$end".split(MainActivity.PAUSE)) - } else { - Snackbar.make(this@coordinatorLayout, - getString(R.string.error_invalid_dtmf, dtmf), - Snackbar.LENGTH_LONG).show() - } - } else { - Snackbar.make(this@coordinatorLayout, R.string.error_invalid_field, - Snackbar.LENGTH_LONG).show() - } - } }.lparams(width = wrapContent, height = wrapContent) { if (option.nodial) { gravity = BOTTOM or END @@ -212,6 +183,33 @@ class ProgrammingActivity : AppCompatActivity(), AnkoLogger { bottomMargin = dip(16) 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)) { + val begin = if (params.begin.isNotBlank()) { + "${params.begin}${MainActivity.PAUSE}" + } else { + empty + } + + val end = if (params.end.isNotBlank()) { + "${MainActivity.PAUSE}${params.end}" + } else { + empty + } + + startActivity( + StepsActivity.EXTRA_STEPS to "$begin${dtmf.replace(MainActivity.QUOTE, empty)}$end".split(MainActivity.PAUSE)) + } else { + Snackbar.make(this@coordinatorLayout, + getString(R.string.error_invalid_dtmf, dtmf), + Snackbar.LENGTH_LONG).show() + } + } else { + Snackbar.make(this@coordinatorLayout, R.string.error_invalid_field, + Snackbar.LENGTH_LONG).show() + } } } @@ -219,28 +217,27 @@ class ProgrammingActivity : AppCompatActivity(), AnkoLogger { if (!option.nodial) { floatingActionButton { imageResource = R.drawable.fab_ic_call - onClick { - 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)) { - ProgrammingActivityPermissionsDispatcher.callWithCheck( - this@ProgrammingActivity, params.phone, dtmf) - } else { - Snackbar.make(this@coordinatorLayout, - getString(R.string.error_invalid_dtmf, dtmf), - Snackbar.LENGTH_LONG).show() - } - } else { - Snackbar.make(this@coordinatorLayout, R.string.error_invalid_field, - Snackbar.LENGTH_LONG).show() - } - } }.lparams(width = wrapContent, height = wrapContent) { gravity = BOTTOM or END bottomMargin = dip(16) rightMargin = dip(16) 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)) { + ProgrammingActivityPermissionsDispatcher.callWithCheck( + this@ProgrammingActivity, params.phone, dtmf) + } else { + Snackbar.make(this@coordinatorLayout, + getString(R.string.error_invalid_dtmf, dtmf), + Snackbar.LENGTH_LONG).show() + } + } else { + Snackbar.make(this@coordinatorLayout, R.string.error_invalid_field, + Snackbar.LENGTH_LONG).show() + } } } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 00f8a65..0b7c415 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,5 +1,5 @@ - <p><b>Version %1$s</b> <small>(%2$s)</small></p><p>Developed by <a href=\"http://erik.thauvin.net/\"><b>Erik C. Thauvin</b></a>. See all my apps <a href=\"http://mobile.thauvin.net/android/\"><b>here</b></a>.</p><a href=\"http://thauv.in/TESRemote\"><b>thauv.in/TESRemote</b></a> + <p><b>Version %1$s</b> <small>(%2$s)</small></p><p>Developed by <a href=\"https://erik.thauvin.net/\"><b>Erik C. Thauvin</b></a>. See all my apps <a href=\"http://mobile.thauvin.net/android/\"><b>here</b></a>.</p><a href=\"http://thauv.in/TESRemote\"><b>thauv.in/TESRemote</b></a> About Configurations Configuration Errors diff --git a/build.gradle b/build.gradle index 30ebe8c..a8738db 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.1.1' + ext.kotlin_version = '1.1.3-2' repositories { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.3.1' + classpath 'com.android.tools.build:gradle:2.3.3' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong