Added ktlint.
This commit is contained in:
parent
1ea0e84239
commit
4c314683c7
19 changed files with 325 additions and 259 deletions
5
.idea/codeStyles/codeStyleConfig.xml
generated
Normal file
5
.idea/codeStyles/codeStyleConfig.xml
generated
Normal file
|
@ -0,0 +1,5 @@
|
|||
<component name="ProjectCodeStyleConfiguration">
|
||||
<state>
|
||||
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Erik's Code Style" />
|
||||
</state>
|
||||
</component>
|
|
@ -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'
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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>()
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
||||
}
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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 ->
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue