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 @@
+
+
+