diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/HotkeyHandler.java b/app/src/main/java/io/github/sspanak/tt9/ime/HotkeyHandler.java
index 699070c8..acf8c77f 100644
--- a/app/src/main/java/io/github/sspanak/tt9/ime/HotkeyHandler.java
+++ b/app/src/main/java/io/github/sspanak/tt9/ime/HotkeyHandler.java
@@ -234,6 +234,8 @@ public abstract class HotkeyHandler extends CommandHandler {
mInputMode.onAcceptSuggestion(suggestionOps.acceptIncomplete());
resetKeyRepeat();
+ mainView.render();
+
return true;
}
@@ -269,6 +271,8 @@ public abstract class HotkeyHandler extends CommandHandler {
.loadSuggestions(filter);
}
+ mainView.render();
+
return true;
}
@@ -284,6 +288,7 @@ public abstract class HotkeyHandler extends CommandHandler {
backward = isLanguageRTL != backward;
scrollSuggestions(backward);
+ mainView.render();
return true;
}
diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/MainViewHandler.java b/app/src/main/java/io/github/sspanak/tt9/ime/MainViewHandler.java
index 96c1ba13..3a1b9b8a 100644
--- a/app/src/main/java/io/github/sspanak/tt9/ime/MainViewHandler.java
+++ b/app/src/main/java/io/github/sspanak/tt9/ime/MainViewHandler.java
@@ -78,6 +78,14 @@ abstract public class MainViewHandler extends HotkeyHandler {
return mInputMode.supportsFiltering();
}
+ public boolean isFilteringFuzzy() {
+ return mInputMode.isStemFilterFuzzy();
+ }
+
+ public boolean isFilteringOn() {
+ String stem = mInputMode.getWordStem();
+ return stem != null && !stem.isEmpty();
+ }
public boolean isInputLimited() {
return inputType.isLimited();
diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/TypingHandler.java b/app/src/main/java/io/github/sspanak/tt9/ime/TypingHandler.java
index 1a0967da..df9a5670 100644
--- a/app/src/main/java/io/github/sspanak/tt9/ime/TypingHandler.java
+++ b/app/src/main/java/io/github/sspanak/tt9/ime/TypingHandler.java
@@ -119,6 +119,7 @@ public abstract class TypingHandler extends KeyPadHandler {
if (appHacks.onBackspace(settings, mInputMode)) {
mInputMode.reset();
+ mainView.render();
return false;
}
@@ -151,6 +152,8 @@ public abstract class TypingHandler extends KeyPadHandler {
statusBar.setText(mInputMode);
}
+ mainView.render();
+
return true;
}
diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyFilter.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyFilter.java
index de2340c5..c657d59d 100644
--- a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyFilter.java
+++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyFilter.java
@@ -27,11 +27,21 @@ public class SoftKeyFilter extends BaseSoftKeyWithIcons {
&& tt9.onKeyFilterSuggestions(false, getLastPressedKey() == getId());
}
- @Override protected int getCentralIcon() { return R.drawable.ic_fn_filter; }
- @Override protected int getHoldIcon() { return R.drawable.ic_fn_filter_off; }
+ @Override protected int getCentralIcon() {
+ if (tt9 != null) {
+ if (tt9.isFilteringFuzzy()) return R.drawable.ic_fn_filter_fuzzy;
+ if (tt9.isFilteringOn()) return R.drawable.ic_fn_filter_exact;
+ }
+ return R.drawable.ic_fn_filter;
+ }
+
+ @Override protected int getHoldIcon() {
+ return R.drawable.ic_fn_filter_off;
+ }
@Override
public void render() {
+ resetIconCache();
if (tt9 != null) {
setEnabled(
tt9.isFilteringSupported()
diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyRF3.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyRF3.java
index 83a0c407..905cc65c 100644
--- a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyRF3.java
+++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyRF3.java
@@ -74,7 +74,7 @@ public class SoftKeyRF3 extends BaseSoftKeyWithIcons {
}
if (isVoiceInputActive() || (isTextEditingMissing() && !isVoiceInputMissing())) {
- return R.drawable.ic_fn_voice;
+ return R.drawable.ic_fn_voice_off;
}
return -1;
diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyShift.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyShift.java
index 2cf6340f..e8926ff8 100644
--- a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyShift.java
+++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyShift.java
@@ -4,6 +4,7 @@ import android.content.Context;
import android.util.AttributeSet;
import io.github.sspanak.tt9.R;
+import io.github.sspanak.tt9.ime.modes.InputMode;
public class SoftKeyShift extends BaseSoftKeyWithIcons {
public SoftKeyShift(Context context) {
@@ -19,7 +20,12 @@ public class SoftKeyShift extends BaseSoftKeyWithIcons {
}
@Override protected int getCentralIcon() {
- return R.drawable.ic_fn_shift;
+ final int textCase = tt9 != null ? tt9.getTextCase() : InputMode.CASE_UNDEFINED;
+ return switch (textCase) {
+ case InputMode.CASE_CAPITALIZE -> R.drawable.ic_fn_shift_caps;
+ case InputMode.CASE_UPPER -> R.drawable.ic_fn_shift_up;
+ default -> R.drawable.ic_fn_shift_low;
+ };
}
@Override
@@ -29,6 +35,7 @@ public class SoftKeyShift extends BaseSoftKeyWithIcons {
@Override
public void render() {
+ resetIconCache();
setEnabled(
tt9 != null
&& !tt9.isVoiceInputActive()
diff --git a/app/src/main/res/drawable/ic_fn_filter_exact.xml b/app/src/main/res/drawable/ic_fn_filter_exact.xml
new file mode 100644
index 00000000..636a6992
--- /dev/null
+++ b/app/src/main/res/drawable/ic_fn_filter_exact.xml
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_fn_filter_fuzzy.xml b/app/src/main/res/drawable/ic_fn_filter_fuzzy.xml
new file mode 100644
index 00000000..713242e9
--- /dev/null
+++ b/app/src/main/res/drawable/ic_fn_filter_fuzzy.xml
@@ -0,0 +1,3 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_fn_shift.xml b/app/src/main/res/drawable/ic_fn_shift.xml
deleted file mode 100644
index 61c9f018..00000000
--- a/app/src/main/res/drawable/ic_fn_shift.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/app/src/main/res/drawable/ic_fn_shift_caps.xml b/app/src/main/res/drawable/ic_fn_shift_caps.xml
new file mode 100644
index 00000000..2bf04fc9
--- /dev/null
+++ b/app/src/main/res/drawable/ic_fn_shift_caps.xml
@@ -0,0 +1,3 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_fn_shift_low.xml b/app/src/main/res/drawable/ic_fn_shift_low.xml
new file mode 100644
index 00000000..42364c1d
--- /dev/null
+++ b/app/src/main/res/drawable/ic_fn_shift_low.xml
@@ -0,0 +1,3 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_fn_shift_up.xml b/app/src/main/res/drawable/ic_fn_shift_up.xml
new file mode 100644
index 00000000..2b5e0d43
--- /dev/null
+++ b/app/src/main/res/drawable/ic_fn_shift_up.xml
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_fn_voice_off.xml b/app/src/main/res/drawable/ic_fn_voice_off.xml
new file mode 100644
index 00000000..09fe3aa8
--- /dev/null
+++ b/app/src/main/res/drawable/ic_fn_voice_off.xml
@@ -0,0 +1,3 @@
+
+
+