diff --git a/app/src/main/java/net/mezimmah/wkt9/WKT9.kt b/app/src/main/java/net/mezimmah/wkt9/WKT9.kt index d5e9a9a..ebf2370 100644 --- a/app/src/main/java/net/mezimmah/wkt9/WKT9.kt +++ b/app/src/main/java/net/mezimmah/wkt9/WKT9.kt @@ -490,54 +490,50 @@ class WKT9: InputMethodService() { inputStatus = Status.UPPER candidatesToUpperCase() - showStatusIcon(R.drawable.shift) } Status.UPPER -> { inputStatus = Status.LOWER candidatesToLowerCase() - showStatusIcon(R.drawable.word) } else -> { inputStatus = Status.CAP capitalizeCandidates() - showStatusIcon(R.drawable.shift) } } + showStatusIcon(getIconResource()) loadCandidates(candidateIndex) composeText(candidates[candidateIndex]) } + @SuppressLint("DiscouragedApi") + private fun getIconResource(): Int { + val name = inputMode?.let { + val inputMethodManager = getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager + val inputMethodSubtype = inputMethodManager.currentInputMethodSubtype + + it.mode + .plus("_") + .plus(inputMethodSubtype.languageTag) + .plus("_") + .plus(inputStatus.toString()) + .replace('-', '_') + .lowercase() + } ?: "wkt9" + + return resources.getIdentifier(name, "drawable", packageName) + } + private fun updateInputStatus() { - when (inputMode?.status) { - Status.UPPER -> { - inputStatus = Status.UPPER + inputStatus = inputMode?.status ?: Status.CAP - showStatusIcon(R.drawable.shift) - } + if (inputStatus == Status.CAP && !isSentenceStart()) inputStatus = Status.LOWER - Status.CAP -> { - if (isSentenceStart()) { - inputStatus = Status.CAP - - showStatusIcon(R.drawable.shift) - } else { - inputStatus = Status.LOWER - - showStatusIcon(R.drawable.word) - } - } - - else -> { - inputStatus = Status.LOWER - - showStatusIcon(R.drawable.word) - } - } + showStatusIcon(getIconResource()) } private suspend fun queryT9Candidates(codeWord: StringBuilder, limit: Int = 10): Boolean { diff --git a/app/src/main/java/net/mezimmah/wkt9/inputmode/AlphaInputMode.kt b/app/src/main/java/net/mezimmah/wkt9/inputmode/AlphaInputMode.kt index 46250fb..db7f8b1 100644 --- a/app/src/main/java/net/mezimmah/wkt9/inputmode/AlphaInputMode.kt +++ b/app/src/main/java/net/mezimmah/wkt9/inputmode/AlphaInputMode.kt @@ -4,6 +4,8 @@ import net.mezimmah.wkt9.keypad.Key import net.mezimmah.wkt9.keypad.KeyEventResult class AlphaInputMode: InputMode { + override val mode: String = "alpha" + override var status: Status = Status.CAP private set diff --git a/app/src/main/java/net/mezimmah/wkt9/inputmode/InputMode.kt b/app/src/main/java/net/mezimmah/wkt9/inputmode/InputMode.kt index cb4090b..219f758 100644 --- a/app/src/main/java/net/mezimmah/wkt9/inputmode/InputMode.kt +++ b/app/src/main/java/net/mezimmah/wkt9/inputmode/InputMode.kt @@ -4,6 +4,7 @@ import net.mezimmah.wkt9.keypad.Key import net.mezimmah.wkt9.keypad.KeyEventResult interface InputMode { + val mode: String val status: Status fun onKeyDown(key: Key, composing: Boolean): KeyEventResult diff --git a/app/src/main/java/net/mezimmah/wkt9/inputmode/NumericInputMode.kt b/app/src/main/java/net/mezimmah/wkt9/inputmode/NumericInputMode.kt index 04be9d5..4171a14 100644 --- a/app/src/main/java/net/mezimmah/wkt9/inputmode/NumericInputMode.kt +++ b/app/src/main/java/net/mezimmah/wkt9/inputmode/NumericInputMode.kt @@ -8,6 +8,8 @@ import net.mezimmah.wkt9.keypad.KeyEventResult import java.lang.StringBuilder class NumericInputMode: InputMode { + override val mode: String = "numeric" + private val tag = "WKT9" private val keyCommandResolver: KeyCommandResolver = KeyCommandResolver.getBasic() private val codeWord = StringBuilder() diff --git a/app/src/main/java/net/mezimmah/wkt9/inputmode/Status.kt b/app/src/main/java/net/mezimmah/wkt9/inputmode/Status.kt index 3a09743..19f3698 100644 --- a/app/src/main/java/net/mezimmah/wkt9/inputmode/Status.kt +++ b/app/src/main/java/net/mezimmah/wkt9/inputmode/Status.kt @@ -1,8 +1,8 @@ package net.mezimmah.wkt9.inputmode -enum class Status(val idx: Int) { - CAP(0), - UPPER(1), - LOWER(2), - NUM(3) +enum class Status { + CAP, + UPPER, + LOWER, + NUM } \ No newline at end of file diff --git a/app/src/main/java/net/mezimmah/wkt9/inputmode/WordInputMode.kt b/app/src/main/java/net/mezimmah/wkt9/inputmode/WordInputMode.kt index cc0ac9f..dfba572 100644 --- a/app/src/main/java/net/mezimmah/wkt9/inputmode/WordInputMode.kt +++ b/app/src/main/java/net/mezimmah/wkt9/inputmode/WordInputMode.kt @@ -15,6 +15,8 @@ class WordInputMode: InputMode { private var keyIndex = 0 private var lastKey: Key? = null + override val mode: String = "word" + override var status: Status = Status.CAP private set @@ -174,8 +176,6 @@ class WordInputMode: InputMode { private fun shiftMode(composing: Boolean): KeyEventResult { if (!composing) { - reset() - status = when(status) { Status.CAP -> Status.UPPER Status.UPPER -> Status.LOWER diff --git a/app/src/main/res/drawable/alpha.xml b/app/src/main/res/drawable/alpha.xml deleted file mode 100644 index eef0cfa..0000000 --- a/app/src/main/res/drawable/alpha.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/alpha_en_us_cap.xml b/app/src/main/res/drawable/alpha_en_us_cap.xml new file mode 100644 index 0000000..5f8e053 --- /dev/null +++ b/app/src/main/res/drawable/alpha_en_us_cap.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/alpha_en_us_lower.xml b/app/src/main/res/drawable/alpha_en_us_lower.xml new file mode 100644 index 0000000..169beab --- /dev/null +++ b/app/src/main/res/drawable/alpha_en_us_lower.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/alpha_en_us_upper.xml b/app/src/main/res/drawable/alpha_en_us_upper.xml new file mode 100644 index 0000000..b8f4fb5 --- /dev/null +++ b/app/src/main/res/drawable/alpha_en_us_upper.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/numeric.xml b/app/src/main/res/drawable/numeric.xml deleted file mode 100644 index 94f6181..0000000 --- a/app/src/main/res/drawable/numeric.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/shift.xml b/app/src/main/res/drawable/shift.xml deleted file mode 100644 index 44a171a..0000000 --- a/app/src/main/res/drawable/shift.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/word.xml b/app/src/main/res/drawable/word.xml deleted file mode 100644 index 33237f3..0000000 --- a/app/src/main/res/drawable/word.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/word_en.xml b/app/src/main/res/drawable/word_en.xml deleted file mode 100644 index b1c308d..0000000 --- a/app/src/main/res/drawable/word_en.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/word_en_cap.xml b/app/src/main/res/drawable/word_en_cap.xml deleted file mode 100644 index e08a37e..0000000 --- a/app/src/main/res/drawable/word_en_cap.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/word_en_us_cap.xml b/app/src/main/res/drawable/word_en_us_cap.xml new file mode 100644 index 0000000..f98b13f --- /dev/null +++ b/app/src/main/res/drawable/word_en_us_cap.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/word_en_us_lower.xml b/app/src/main/res/drawable/word_en_us_lower.xml new file mode 100644 index 0000000..d0855a7 --- /dev/null +++ b/app/src/main/res/drawable/word_en_us_lower.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/word_en_us_upper.xml b/app/src/main/res/drawable/word_en_us_upper.xml new file mode 100644 index 0000000..1616245 --- /dev/null +++ b/app/src/main/res/drawable/word_en_us_upper.xml @@ -0,0 +1,10 @@ + + +