Get initial sentence position state

This commit is contained in:
Nehemiah of Zebulun 2023-12-04 05:19:38 -05:00
parent 3b0ce64b09
commit 0ec4f4b262
5 changed files with 24 additions and 13 deletions

View File

@ -31,7 +31,6 @@ interface IME {
fun onDeleteText(beforeCursor: Int = 0, afterCursor: Int = 0, finishComposing: Boolean = false)
fun onGetTextBeforeCursor(n: Int): CharSequence?
fun onSwitchInputHandler(inputMode: InputMode)

View File

@ -112,10 +112,6 @@ class WKT9IME: IME, InputMethodService() {
inputHandler?.onDeleteWord(word)
}
override fun onGetTextBeforeCursor(n: Int): CharSequence? {
return this.currentInputConnection?.getTextBeforeCursor(n, 0)
}
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
if (keyDownStats.keyCode != keyCode) {
keyDownStats.keyCode = keyCode
@ -318,7 +314,7 @@ class WKT9IME: IME, InputMethodService() {
private fun switchInputMode(mode: InputMode) {
inputHandler = when(mode) {
InputMode.Word -> WordInputHandler(this, this, locale)
InputMode.Word -> WordInputHandler(this, this, locale)
InputMode.Letter -> {
val prefs: SharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)

View File

@ -19,14 +19,29 @@ open class DefaultInputHandler(
private var currentCapMode: Int? = null
protected val punctuationMarks = listOf(" ", ". ", "? ", "! ", ", ", ": ", "; ")
protected val sentenceDelimiters = listOf('.', '?', '!')
protected val wordDelimiters = listOf('\t', '\n', ' ', ',', ':', ';')
protected val tag = "WKT9"
protected val keypad: Keypad = Keypad()
protected var wordStart: Boolean = true
protected var sentenceStart: Boolean = true
protected var wordStart: Boolean = false
protected var sentenceStart: Boolean = false
init {
val textBeforeCursor = getTextBeforeCursor(15)
if (
textBeforeCursor.isNullOrEmpty() ||
textBeforeCursor.trim().isEmpty() ||
sentenceDelimiters.contains(textBeforeCursor.trim().last())
) {
sentenceStart = true
wordStart = true
} else if (wordDelimiters.contains(textBeforeCursor.last())) {
wordStart = true
}
wkt9.currentInputEditorInfo?.let {
val inputType = it.inputType
val typeFlags = inputType.and(InputType.TYPE_MASK_FLAGS)
@ -83,4 +98,8 @@ open class DefaultInputHandler(
protected fun triggerOriginalKeyEvent(key: Key) {
triggerKeyEvent(key.keyCode)
}
protected fun getTextBeforeCursor(count: Int): CharSequence? {
return wkt9.currentInputConnection?.getTextBeforeCursor(count, 0)
}
}

View File

@ -30,7 +30,7 @@ class LetterInputHandler(
val ime: IME,
private var wkt9: WKT9IME,
private var locale: Locale,
private var composeTimeout: Long
private var composeTimeout: Long,
): SpellCheckerSession.SpellCheckerSessionListener, DefaultInputHandler(wkt9), InputHandler {
private val db = AppDatabase.getInstance(wkt9)
private val wordDao = db.getWordDao()
@ -163,9 +163,6 @@ class LetterInputHandler(
}
private fun finishComposingChar() {
val wordDelimiters = listOf(' ', ',', ':', ';')
val sentenceDelimiters = listOf('.', '?', '!')
wkt9.onCommit()
if (sentenceDelimiters.contains(lastComposeChar)) {

View File

@ -23,7 +23,7 @@ import java.util.Locale
class WordInputHandler(
val ime: IME,
private var wkt9: WKT9IME,
private var locale: Locale,
private var locale: Locale
) : DefaultInputHandler(wkt9), InputHandler {
private val codeword = StringBuilder()
private var staleCodeword = false