From 82cac3153e7b39f67e72e30bec624248e7402e62 Mon Sep 17 00:00:00 2001 From: sspanak Date: Thu, 10 Apr 2025 17:44:56 +0300 Subject: [PATCH] enabled single Latin letters in Ideographic modes, when there is no dictionary loaded --- .../sspanak/tt9/ime/modes/ModeIdeograms.java | 2 +- .../predictions/IdeogramPredictions.java | 20 +++++++++++++++++++ .../modes/predictions/KanaPredictions.java | 10 ++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeIdeograms.java b/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeIdeograms.java index a04b47f2..68425d41 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeIdeograms.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeIdeograms.java @@ -122,7 +122,7 @@ public class ModeIdeograms extends ModeWords { @Override public boolean shouldAcceptPreviousSuggestion(String s) { return - !digitSequence.isEmpty() + digitSequence.length() > 1 && predictions.noDbWords() && !digitSequence.equals(EMOJI_SEQUENCE) && !digitSequence.equals(PUNCTUATION_SEQUENCE) diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/modes/predictions/IdeogramPredictions.java b/app/src/main/java/io/github/sspanak/tt9/ime/modes/predictions/IdeogramPredictions.java index 3d80150a..645deb03 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/modes/predictions/IdeogramPredictions.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/modes/predictions/IdeogramPredictions.java @@ -49,6 +49,10 @@ public class IdeogramPredictions extends WordPredictions { transcriptions = onlyExactMatches ? reduceFuzzyMatches(dbWords, SettingsStore.SUGGESTIONS_MAX) : dbWords; words = new ArrayList<>(transcriptions); areThereDbWords = !words.isEmpty(); + if (!areThereDbWords) { + onNoWords(); + } + onWordsChanged.run(); } @@ -60,6 +64,14 @@ public class IdeogramPredictions extends WordPredictions { } + protected void onNoWords() { + if (digitSequence.length() == 1) { + transcriptions = generateWordVariations(null); + words = new ArrayList<>(transcriptions); + } + } + + @Override @NonNull protected String getPenultimateWord(@NonNull String currentWord) { @@ -164,6 +176,10 @@ public class IdeogramPredictions extends WordPredictions { * Example operation: [SHIWU食物, SHIWU事物, SHIWU事务, SHIZU十足] -> [SHIWU, SHIZU] */ public void stripNativeWords() { + if (!areThereDbWords) { + return; + } + HashSet uniqueTranscriptions = new HashSet<>(); for (int i = 0; i < transcriptions.size(); i++) { @@ -191,6 +207,10 @@ public class IdeogramPredictions extends WordPredictions { * Example operation: [SHIWU食物, SHIZU十足] -> [食物, 十足] */ public void stripTranscriptions() { + if (!areThereDbWords) { + return; + } + words.clear(); for (int i = 0; i < transcriptions.size(); i++) { String transcription = transcriptions.get(i); diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/modes/predictions/KanaPredictions.java b/app/src/main/java/io/github/sspanak/tt9/ime/modes/predictions/KanaPredictions.java index d252601e..fb37999e 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/modes/predictions/KanaPredictions.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/modes/predictions/KanaPredictions.java @@ -2,6 +2,8 @@ package io.github.sspanak.tt9.ime.modes.predictions; import androidx.annotation.NonNull; +import java.util.ArrayList; + import io.github.sspanak.tt9.ime.helpers.TextField; import io.github.sspanak.tt9.languages.exceptions.InvalidLanguageCharactersException; import io.github.sspanak.tt9.preferences.settings.SettingsStore; @@ -51,4 +53,12 @@ public class KanaPredictions extends IdeogramPredictions { String sequence = SEQUENCE_PREFIX + language.getDigitSequenceForWord(stripStemPrefix(transcription)); super.onAccept(transcription + word, sequence); } + + @Override + protected void onNoWords() { + if (digitSequence.length() == 2) { + transcriptions = generateWordVariations(null); + words = new ArrayList<>(transcriptions); + } + } }