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