Added ktlint.

This commit is contained in:
Erik C. Thauvin 2018-11-06 01:14:50 -08:00
parent 1ea0e84239
commit 4c314683c7
19 changed files with 325 additions and 259 deletions

5
.idea/codeStyles/codeStyleConfig.xml generated Normal file
View file

@ -0,0 +1,5 @@
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Erik's Code Style" />
</state>
</component>

View file

@ -1,3 +1,7 @@
plugins {
id "org.jlleitschuh.gradle.ktlint" version "6.2.1"
}
//noinspection GradleCompatible
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'

View file

@ -25,12 +25,10 @@ import org.acra.ACRA
import org.acra.ReportingInteractionMode
import org.acra.annotation.ReportsCrashes
@ReportsCrashes(mailTo = "erik@thauvin.net",
mode = ReportingInteractionMode.DIALOG,
reportSenderFactoryClasses = arrayOf(CrashEmailFactory::class),
reportDialogClass = CrashReportActivity::class)
open class App : Application() {
override fun attachBaseContext(base: Context) {
super.attachBaseContext(base)

View file

@ -27,7 +27,11 @@ import android.graphics.Typeface
import android.os.Build
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.text.*
import android.text.Html
import android.text.InputFilter
import android.text.InputType
import android.text.Spanned
import android.text.TextUtils
import android.util.TypedValue
import android.view.Menu
import android.view.MenuItem
@ -45,9 +49,22 @@ import net.thauvin.erik.android.tesremoteprogrammer.models.Configurations
import net.thauvin.erik.android.tesremoteprogrammer.util.Dtmf
import net.thauvin.erik.android.tesremoteprogrammer.util.isDKS
import net.thauvin.erik.android.tesremoteprogrammer.util.isDigits
import org.jetbrains.anko.*
import org.jetbrains.anko.AnkoLogger
import org.jetbrains.anko.alert
import org.jetbrains.anko.bottomPadding
import org.jetbrains.anko.cancelButton
import org.jetbrains.anko.design.textInputEditText
import org.jetbrains.anko.design.textInputLayout
import org.jetbrains.anko.dip
import org.jetbrains.anko.horizontalPadding
import org.jetbrains.anko.info
import org.jetbrains.anko.listView
import org.jetbrains.anko.padding
import org.jetbrains.anko.singleLine
import org.jetbrains.anko.startActivity
import org.jetbrains.anko.textView
import org.jetbrains.anko.topPadding
import org.jetbrains.anko.verticalLayout
import permissions.dispatcher.NeedsPermission
import permissions.dispatcher.RuntimePermissions
import java.io.FileNotFoundException
@ -55,7 +72,9 @@ import java.io.InputStreamReader
import java.io.ObjectInputStream
import java.io.ObjectOutputStream
import java.text.DateFormat
import java.util.*
import java.util.ArrayList
import java.util.Date
import java.util.Locale
@RuntimePermissions
class MainActivity : AppCompatActivity(), AnkoLogger {
@ -340,16 +359,17 @@ class MainActivity : AppCompatActivity(), AnkoLogger {
}
alert.show()
}
}
return super.onOptionsItemSelected(item)
}
@SuppressLint("NeedOnRequestPermissionsResult")
override fun onRequestPermissionsResult(requestCode: Int,
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray) {
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
onRequestPermissionsResult(requestCode, grantResults)
}
@ -397,7 +417,6 @@ class MainActivity : AppCompatActivity(), AnkoLogger {
errors.append(getString(R.string.validate_missing_param, "type"))
} else if (!Dtmf.isValidType(type)) {
errors.append(getString(R.string.validate_invalid_param, "type"))
}
// size

View file

@ -32,7 +32,9 @@ import android.text.SpannableString
import android.text.TextUtils
import android.text.style.ImageSpan
import android.util.TypedValue
import android.view.Gravity.*
import android.view.Gravity.BOTTOM
import android.view.Gravity.END
import android.view.Gravity.START
import android.view.ViewManager
import android.view.inputmethod.EditorInfo
import android.view.inputmethod.InputMethodManager
@ -47,16 +49,29 @@ import net.thauvin.erik.android.tesremoteprogrammer.util.Dtmf
import net.thauvin.erik.android.tesremoteprogrammer.util.isDKS
import net.thauvin.erik.android.tesremoteprogrammer.util.isLinear
import net.thauvin.erik.android.tesremoteprogrammer.widget.ScrollAwareFABBehavior
import org.jetbrains.anko.*
import org.jetbrains.anko.AnkoLogger
import org.jetbrains.anko.bottomPadding
import org.jetbrains.anko.custom.ankoView
import org.jetbrains.anko.design.coordinatorLayout
import org.jetbrains.anko.design.floatingActionButton
import org.jetbrains.anko.design.textInputEditText
import org.jetbrains.anko.design.textInputLayout
import org.jetbrains.anko.dip
import org.jetbrains.anko.horizontalPadding
import org.jetbrains.anko.imageResource
import org.jetbrains.anko.info
import org.jetbrains.anko.makeCall
import org.jetbrains.anko.matchParent
import org.jetbrains.anko.padding
import org.jetbrains.anko.singleLine
import org.jetbrains.anko.startActivity
import org.jetbrains.anko.support.v4.nestedScrollView
import org.jetbrains.anko.topPadding
import org.jetbrains.anko.verticalLayout
import org.jetbrains.anko.wrapContent
import permissions.dispatcher.NeedsPermission
import permissions.dispatcher.RuntimePermissions
import java.util.*
import java.util.ArrayList
@RuntimePermissions
class ProgrammingActivity : AppCompatActivity(), AnkoLogger {
@ -100,7 +115,6 @@ class ProgrammingActivity : AppCompatActivity(), AnkoLogger {
typeface = Typeface.create(Typeface.DEFAULT, Typeface.ITALIC)
freezesText = true
}.lparams(width = matchParent, height = matchParent)
} else {
val it = option.fields.iterator()
while (it.hasNext()) {
@ -252,9 +266,11 @@ class ProgrammingActivity : AppCompatActivity(), AnkoLogger {
}
@SuppressLint("NeedOnRequestPermissionsResult")
override fun onRequestPermissionsResult(requestCode: Int,
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray) {
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
onRequestPermissionsResult(requestCode, grantResults)
}

View file

@ -22,8 +22,9 @@ import android.app.FragmentManager
import android.os.Bundle
import android.support.v13.app.FragmentStatePagerAdapter
import android.support.v4.app.FragmentActivity
import kotlinx.android.synthetic.main.activity_steps.*
import java.util.*
import kotlinx.android.synthetic.main.activity_steps.indicator
import kotlinx.android.synthetic.main.activity_steps.pager
import java.util.ArrayList
class StepsActivity : FragmentActivity() {
companion object {
@ -39,8 +40,10 @@ class StepsActivity : FragmentActivity() {
indicator.fades = false
}
private inner class StepsAdapter(fm: FragmentManager,
steps: ArrayList<String>) : FragmentStatePagerAdapter(fm) {
private inner class StepsAdapter(
fm: FragmentManager,
steps: ArrayList<String>
) : FragmentStatePagerAdapter(fm) {
private val steps = ArrayList<String>(steps)
override fun getItem(position: Int): Fragment = StepsFragment.create(position, steps)

View file

@ -22,8 +22,9 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import kotlinx.android.synthetic.main.fragment_steps.*
import java.util.*
import kotlinx.android.synthetic.main.fragment_steps.frag_steps
import kotlinx.android.synthetic.main.fragment_steps.frag_steps_title
import java.util.ArrayList
class StepsFragment : Fragment() {
private var pageNumber: Int = 0
@ -51,9 +52,11 @@ class StepsFragment : Fragment() {
pageNumber = arguments.getInt(ARG_PAGE)
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? =
inflater.inflate(R.layout.fragment_steps, container, false) as ViewGroup
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? = inflater.inflate(R.layout.fragment_steps, container, false) as ViewGroup
override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

View file

@ -22,13 +22,14 @@ import android.text.SpannableStringBuilder
import android.text.Spanned
class AlphaFilter(private val extras: String) : InputFilter {
override fun filter(source: CharSequence,
override fun filter(
source: CharSequence,
start: Int,
end: Int,
dest: Spanned,
dstart: Int,
dend: Int): CharSequence? {
dend: Int
): CharSequence? {
if (source is SpannableStringBuilder) {
for (i in end - 1 downTo start) {
val c = source[i]

View file

@ -27,13 +27,14 @@ class NumberFilter(allowed: String, alt: String) : InputFilter, AnkoLogger {
private val allowed: String
private val digits = "0123456789"
override fun filter(source: CharSequence,
override fun filter(
source: CharSequence,
start: Int,
end: Int,
dest: Spanned,
dstart: Int,
dend: Int): CharSequence? {
dend: Int
): CharSequence? {
if (source is SpannableStringBuilder) {
for (i in end - 1 downTo start) {
val c = source[i]

View file

@ -23,9 +23,11 @@ import java.io.Serializable
data class Config(var params: Params, var opts: List<Option>) : Parcelable, Serializable, Comparable<Config> {
companion object {
private @JvmStatic val serialVersionUID: Long = 1
@JvmStatic
private val serialVersionUID: Long = 1
@JvmField val CREATOR: Parcelable.Creator<Config> = object : Parcelable.Creator<Config> {
@JvmField
val CREATOR: Parcelable.Creator<Config> = object : Parcelable.Creator<Config> {
override fun createFromParcel(source: Parcel): Config = Config(source)
override fun newArray(size: Int): Array<Config?> = arrayOfNulls(size)
}

View file

@ -18,11 +18,12 @@
package net.thauvin.erik.android.tesremoteprogrammer.models
import java.io.Serializable
import java.util.*
import java.util.HashMap
class Configurations : Serializable {
companion object {
private @JvmStatic val serialVersionUID: Long = 1
@JvmStatic
private val serialVersionUID: Long = 1
}
val configs = HashMap<String, Config>()

View file

@ -21,7 +21,8 @@ import android.os.Parcel
import android.os.Parcelable
import java.io.Serializable
data class Field(var hint: String,
data class Field(
var hint: String,
var digits: String,
var alpha: Boolean,
val alt: Boolean,
@ -29,12 +30,14 @@ data class Field(var hint: String,
var minSize: Int,
var size: Int,
var min: Int,
var max: Int) : Parcelable, Serializable {
var max: Int
) : Parcelable, Serializable {
companion object {
private @JvmStatic val serialVersionUID: Long = 1
@JvmStatic
private val serialVersionUID: Long = 1
@JvmField val CREATOR: Parcelable.Creator<Field> = object : Parcelable.Creator<Field> {
@JvmField
val CREATOR: Parcelable.Creator<Field> = object : Parcelable.Creator<Field> {
override fun createFromParcel(source: Parcel): Field = Field(source)
override fun newArray(size: Int): Array<Field?> = arrayOfNulls(size)
}

View file

@ -21,16 +21,19 @@ import android.os.Parcel
import android.os.Parcelable
import java.io.Serializable
data class Option(var title: String,
data class Option(
var title: String,
var fields: List<Field?>,
var nodial: Boolean,
var nosteps: Boolean,
var dtmf: String) : Parcelable, Serializable, Comparable<Option> {
var dtmf: String
) : Parcelable, Serializable, Comparable<Option> {
companion object {
private @JvmStatic val serialVersionUID: Long = 1
@JvmStatic
private val serialVersionUID: Long = 1
@JvmField val CREATOR: Parcelable.Creator<Option> = object : Parcelable.Creator<Option> {
@JvmField
val CREATOR: Parcelable.Creator<Option> = object : Parcelable.Creator<Option> {
override fun createFromParcel(source: Parcel): Option = Option(source)
override fun newArray(size: Int): Array<Option?> = arrayOfNulls(size)
}
@ -56,5 +59,4 @@ data class Option(var title: String,
dest?.writeInt((if (nosteps) 1 else 0))
dest?.writeString(dtmf)
}
}

View file

@ -21,7 +21,8 @@ import android.os.Parcel
import android.os.Parcelable
import java.io.Serializable
data class Params(var name: String,
data class Params(
var name: String,
var type: String,
var phone: String,
var master: String,
@ -29,12 +30,14 @@ data class Params(var name: String,
var ack: String,
var alt: String,
var begin: String,
var end: String) : Parcelable, Serializable {
var end: String
) : Parcelable, Serializable {
companion object {
private @JvmStatic val serialVersionUID: Long = 1
@JvmStatic
private val serialVersionUID: Long = 1
@JvmField val CREATOR: Parcelable.Creator<Params> = object : Parcelable.Creator<Params> {
@JvmField
val CREATOR: Parcelable.Creator<Params> = object : Parcelable.Creator<Params> {
override fun createFromParcel(source: Parcel): Params = Params(source)
override fun newArray(size: Int): Array<Params?> = arrayOfNulls(size)
}

View file

@ -20,7 +20,7 @@ package net.thauvin.erik.android.tesremoteprogrammer.util
import android.widget.EditText
import net.thauvin.erik.android.tesremoteprogrammer.MainActivity
import net.thauvin.erik.android.tesremoteprogrammer.models.Option
import java.util.*
import java.util.ArrayList
class Dtmf {
companion object {
@ -89,7 +89,6 @@ class Dtmf {
fun isValidType(type: String): Boolean = type.equals(DKS, true) || type.equals(LINEAR, true)
private fun linearAlphaToDigits(text: String): String {
val result = StringBuffer()
@ -150,11 +149,13 @@ class Dtmf {
return result.toString()
}
fun build(type: String,
fun build(
type: String,
master: String,
ack: String,
option: Option,
fields: ArrayList<EditText>): String {
fields: ArrayList<EditText>
): String {
val replace = arrayListOf(Pair(DTMF_MASTER, master))
fields.forEachIndexed { i, field ->

View file

@ -23,24 +23,28 @@ import android.support.v4.view.ViewCompat
import android.view.View
class ScrollAwareFABBehavior : FloatingActionButton.Behavior() {
override fun onStartNestedScroll(coordinatorLayout: CoordinatorLayout,
override fun onStartNestedScroll(
coordinatorLayout: CoordinatorLayout,
child: FloatingActionButton,
directTargetChild: View,
target: View,
nestedScrollAxes: Int,
type: Int): Boolean =
type: Int
): Boolean =
nestedScrollAxes == ViewCompat.SCROLL_AXIS_VERTICAL ||
super.onStartNestedScroll(coordinatorLayout, child, directTargetChild, target,
nestedScrollAxes, type)
override fun onNestedScroll(coordinatorLayout: CoordinatorLayout,
override fun onNestedScroll(
coordinatorLayout: CoordinatorLayout,
child: FloatingActionButton,
target: View,
dxConsumed: Int,
dyConsumed: Int,
dxUnconsumed: Int,
dyUnconsumed: Int,
type: Int) {
type: Int
) {
super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed,
dxUnconsumed, dyUnconsumed, type)
if (dyConsumed > 0 && child.visibility == View.VISIBLE) {