Skip to content

Instantly share code, notes, and snippets.

@dbh4ck
Created January 8, 2018 13:45
Show Gist options
  • Select an option

  • Save dbh4ck/6e86f60a15520cc5b66131ced61db592 to your computer and use it in GitHub Desktop.

Select an option

Save dbh4ck/6e86f60a15520cc5b66131ced61db592 to your computer and use it in GitHub Desktop.
package com.db.smsotpautofillkotlin.editable
import android.view.View
import android.view.inputmethod.BaseInputConnection
import android.text.Editable
import android.view.KeyEvent
/**
* Created by DB on 03-01-2018.
*/
class EditCodeInputConnection(targetView: View, fullEditor: Boolean, textLength: Int): BaseInputConnection(targetView, fullEditor) {
private var _editable: Editable? = null
private var textLength: Int = 0
init {
val view = targetView as EditCodeView
this.textLength = textLength
this._editable = view.getEditable()
}
override fun getEditable(): Editable {
return this._editable!!
}
override fun sendKeyEvent(event: KeyEvent): Boolean {
if (event.getAction() === KeyEvent.ACTION_DOWN) {
if (event.getKeyCode() >= KeyEvent.KEYCODE_0 && event.getKeyCode() <= KeyEvent.KEYCODE_9) {
val c = event.getKeyCharacterMap().getNumber(event.getKeyCode())
commitText(c.toString(), 1)
} else if (event.getKeyCode() === KeyEvent.KEYCODE_DEL) {
deleteSurroundingText(1, 0)
}
}
return super.sendKeyEvent(event)
}
override fun commitText(text: CharSequence, newCursorPosition: Int): Boolean {
return _editable!!.length + text.length <= textLength && super.commitText(text.subSequence(0, 1), newCursorPosition)
}
override fun setComposingText(text: CharSequence, newCursorPosition: Int): Boolean {
var text = text
if (text.length > textLength) {
text = text.subSequence(0, textLength)
}
return super.setComposingText(text, newCursorPosition)
}
override fun setComposingRegion(start: Int, end: Int): Boolean {
return super.setComposingRegion(start, end)
}
override fun finishComposingText(): Boolean {
return super.finishComposingText()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment