Progress
This commit is contained in:
parent
50cb0d6d9b
commit
aee8243bf6
@ -14,8 +14,6 @@ import android.view.inputmethod.InputMethodManager
|
||||
import android.view.textservice.SentenceSuggestionsInfo
|
||||
import android.view.textservice.SpellCheckerSession
|
||||
import android.view.textservice.SuggestionsInfo
|
||||
import android.view.textservice.TextInfo
|
||||
import android.view.textservice.TextServicesManager
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.TextView
|
||||
import android.widget.Toast
|
||||
@ -30,6 +28,7 @@ import net.mezimmah.wkt9.dao.WordDao
|
||||
import net.mezimmah.wkt9.db.AppDatabase
|
||||
import net.mezimmah.wkt9.inputmode.InputMode
|
||||
import net.mezimmah.wkt9.inputmode.AlphaInputMode
|
||||
import net.mezimmah.wkt9.inputmode.FNInputMode
|
||||
import net.mezimmah.wkt9.inputmode.IdleInputMode
|
||||
import net.mezimmah.wkt9.inputmode.NumericInputMode
|
||||
import net.mezimmah.wkt9.inputmode.Status
|
||||
@ -80,6 +79,7 @@ class WKT9: InputMethodService(), SpellCheckerSession.SpellCheckerSessionListene
|
||||
private var lastInputMode: WKT9InputMode = WKT9InputMode.WORD
|
||||
private var inputMode: InputMode? = null
|
||||
private lateinit var alphaInputMode: AlphaInputMode
|
||||
private lateinit var fnInputMode: FNInputMode
|
||||
private lateinit var numericInputMode: NumericInputMode
|
||||
private lateinit var wordInputMode: WordInputMode
|
||||
private lateinit var idleInputMode: IdleInputMode
|
||||
@ -121,6 +121,7 @@ class WKT9: InputMethodService(), SpellCheckerSession.SpellCheckerSessionListene
|
||||
keypad = Keypad(KeyCodeMapping(KeyCodeMapping.basic), KeyLayout.en_US, KeyLayout.numeric)
|
||||
t9 = T9(this, keypad, settingDao, wordDao)
|
||||
alphaInputMode = AlphaInputMode()
|
||||
fnInputMode = FNInputMode()
|
||||
numericInputMode = NumericInputMode()
|
||||
wordInputMode = WordInputMode()
|
||||
idleInputMode = IdleInputMode()
|
||||
@ -311,13 +312,14 @@ class WKT9: InputMethodService(), SpellCheckerSession.SpellCheckerSessionListene
|
||||
|
||||
// Todo: inputType
|
||||
private fun enableInputMode(mode: WKT9InputMode) {
|
||||
lastInputMode = mode
|
||||
if (mode != WKT9InputMode.FN) lastInputMode = mode
|
||||
|
||||
inputMode = when(mode) {
|
||||
WKT9InputMode.ALPHA -> alphaInputMode
|
||||
WKT9InputMode.NUMERIC -> numericInputMode
|
||||
WKT9InputMode.WORD -> wordInputMode
|
||||
WKT9InputMode.IDLE -> idleInputMode
|
||||
WKT9InputMode.FN -> fnInputMode
|
||||
else -> idleInputMode
|
||||
}
|
||||
}
|
||||
|
||||
@ -373,6 +375,8 @@ class WKT9: InputMethodService(), SpellCheckerSession.SpellCheckerSessionListene
|
||||
.replace('-', '_')
|
||||
.lowercase()
|
||||
|
||||
Log.d(tag, name)
|
||||
|
||||
return resources.getIdentifier(name, "drawable", packageName)
|
||||
}
|
||||
|
||||
@ -416,6 +420,7 @@ class WKT9: InputMethodService(), SpellCheckerSession.SpellCheckerSessionListene
|
||||
if (res.updateWordStatus) onUpdateWordStatus()
|
||||
if (res.focus) onFocus()
|
||||
if (res.switchInputMode != null) onSwitchInputMode(res.switchInputMode)
|
||||
if (res.functionMode) onFunctionMode()
|
||||
|
||||
return res.consumed
|
||||
}
|
||||
@ -504,6 +509,11 @@ class WKT9: InputMethodService(), SpellCheckerSession.SpellCheckerSessionListene
|
||||
requestShowSelf(InputMethodManager.SHOW_IMPLICIT)
|
||||
}
|
||||
|
||||
private fun onFunctionMode() {
|
||||
enableInputMode(WKT9InputMode.FN)
|
||||
updateInputStatus()
|
||||
}
|
||||
|
||||
private fun onIncreaseWeight() {
|
||||
val word = commitHistory.last()
|
||||
|
||||
|
39
app/src/main/java/net/mezimmah/wkt9/inputmode/FNInputMode.kt
Normal file
39
app/src/main/java/net/mezimmah/wkt9/inputmode/FNInputMode.kt
Normal file
@ -0,0 +1,39 @@
|
||||
package net.mezimmah.wkt9.inputmode
|
||||
|
||||
import android.util.Log
|
||||
import net.mezimmah.wkt9.keypad.Key
|
||||
import net.mezimmah.wkt9.keypad.KeyEventResult
|
||||
|
||||
class FNInputMode: InputMode {
|
||||
private val tag = "WKT9"
|
||||
|
||||
override val mode: String = "fn"
|
||||
|
||||
override var status: Status = Status.NA
|
||||
private set
|
||||
|
||||
init {
|
||||
Log.d(tag, "Started $mode input mode.")
|
||||
}
|
||||
|
||||
override fun onKeyDown(key: Key, composing: Boolean): KeyEventResult {
|
||||
return KeyEventResult()
|
||||
}
|
||||
|
||||
override fun onKeyLongDown(key: Key, composing: Boolean): KeyEventResult {
|
||||
return KeyEventResult()
|
||||
}
|
||||
|
||||
override fun onKeyDownRepeatedly(key: Key, repeat: Int, composing: Boolean): KeyEventResult {
|
||||
return KeyEventResult()
|
||||
}
|
||||
|
||||
override fun afterKeyDown(key: Key, composing: Boolean): KeyEventResult {
|
||||
return KeyEventResult()
|
||||
}
|
||||
|
||||
override fun afterKeyLongDown(key: Key, keyDownMS: Long, composing: Boolean): KeyEventResult {
|
||||
return KeyEventResult()
|
||||
}
|
||||
|
||||
}
|
@ -9,7 +9,7 @@ import net.mezimmah.wkt9.keypad.KeyEventResult
|
||||
class IdleInputMode : InputMode {
|
||||
override val mode: String = "idle"
|
||||
|
||||
override var status: Status = Status.LOWER
|
||||
override var status: Status = Status.NA
|
||||
private set
|
||||
|
||||
private val tag = "WKT9"
|
||||
|
@ -4,5 +4,6 @@ enum class Status {
|
||||
CAP,
|
||||
UPPER,
|
||||
LOWER,
|
||||
NUM
|
||||
NUM,
|
||||
NA
|
||||
}
|
@ -1,8 +1,9 @@
|
||||
package net.mezimmah.wkt9.inputmode
|
||||
|
||||
enum class WKT9InputMode(val idx: Int) {
|
||||
WORD(0),
|
||||
ALPHA(1),
|
||||
NUMERIC(2),
|
||||
IDLE(3)
|
||||
enum class WKT9InputMode {
|
||||
WORD,
|
||||
ALPHA,
|
||||
NUMERIC,
|
||||
IDLE,
|
||||
FN
|
||||
}
|
@ -31,6 +31,7 @@ class WordInputMode: InputMode {
|
||||
return when(keyCommandResolver.getCommand(key)) {
|
||||
Command.BACK -> KeyEventResult(consumed = false)
|
||||
Command.DELETE -> deleteCharacter(0, composing)
|
||||
Command.FN -> functionMode()
|
||||
Command.LEFT -> navigateLeft()
|
||||
Command.RIGHT -> navigateRight()
|
||||
Command.SELECT -> focus()
|
||||
@ -127,6 +128,13 @@ class WordInputMode: InputMode {
|
||||
)
|
||||
}
|
||||
|
||||
private fun functionMode(): KeyEventResult {
|
||||
return KeyEventResult(
|
||||
consumed = true,
|
||||
functionMode = true
|
||||
)
|
||||
}
|
||||
|
||||
private fun goBack(composing: Boolean): KeyEventResult {
|
||||
reset()
|
||||
|
||||
|
@ -35,7 +35,9 @@ class KeyCommandResolver (
|
||||
Key.DOWN to Command.NAVIGATE,
|
||||
|
||||
Key.STAR to Command.DELETE,
|
||||
Key.SELECT to Command.SELECT
|
||||
Key.SELECT to Command.SELECT,
|
||||
|
||||
Key.FN to Command.FN
|
||||
)),
|
||||
|
||||
onLong = HashMap(mapOf(
|
||||
|
@ -22,5 +22,6 @@ data class KeyEventResult(
|
||||
val updateInputStatus: Boolean = false,
|
||||
val updateWordStatus: Boolean = false,
|
||||
val focus: Boolean = false,
|
||||
val switchInputMode: WKT9InputMode? = null
|
||||
val switchInputMode: WKT9InputMode? = null,
|
||||
val functionMode: Boolean = false
|
||||
)
|
||||
|
10
app/src/main/res/drawable/fn_en_us_na.xml
Normal file
10
app/src/main/res/drawable/fn_en_us_na.xml
Normal file
@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="32dp"
|
||||
android:height="32dp"
|
||||
android:viewportWidth="32"
|
||||
android:viewportHeight="32">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M0.884,30.784V1.216H14.153V4.501H4.724v9.301h8.363v3.2H4.724V30.784ZM16.951,9.024q1.579,-0.469 3.413,-0.768 1.835,-0.341 3.371,-0.341 1.664,0 3.029,0.469 1.365,0.427 2.304,1.493 0.981,1.067 1.493,2.901 0.555,1.792 0.555,4.48V30.784H27.447V17.557q0,-3.328 -0.853,-4.864 -0.853,-1.536 -3.2,-1.536 -1.237,0 -2.773,0.427V30.784H16.951Z"
|
||||
android:strokeWidth="0.815"/>
|
||||
</vector>
|
Loading…
x
Reference in New Issue
Block a user