diff --git a/src/io/github/sspanak/tt9/ime/modes/ModePredictive.java b/src/io/github/sspanak/tt9/ime/modes/ModePredictive.java index b6fa9aba..af95a1a5 100644 --- a/src/io/github/sspanak/tt9/ime/modes/ModePredictive.java +++ b/src/io/github/sspanak/tt9/ime/modes/ModePredictive.java @@ -289,14 +289,14 @@ public class ModePredictive extends InputMode { * Similar to "loadSuggestions()", but loads suggestions that are not in the database. * Returns "false", when there are no static suggestions for the current digitSequence. */ - private boolean loadStaticSuggestions() { + private boolean loadStaticSuggestions(Language language) { if (digitSequence.equals("0")) { stem = ""; - suggestions = Punctuation.Secondary; + suggestions = language.getKeyCharacters(0, false); } else if (containsOnly1Regex.matcher(digitSequence).matches()) { stem = ""; if (digitSequence.length() == 1) { - suggestions = Punctuation.Main; + suggestions = language.getKeyCharacters(1, false); } else { digitSequence = digitSequence.length() <= maxEmojiSequence.length() ? digitSequence : maxEmojiSequence; suggestions = Punctuation.getEmoji(digitSequence.length() - 2); @@ -319,7 +319,7 @@ public class ModePredictive extends InputMode { */ @Override public boolean loadSuggestions(Handler handler, Language language, String currentWord) { - if (loadStaticSuggestions()) { + if (loadStaticSuggestions(language)) { super.onSuggestionsUpdated(handler); return true; } diff --git a/src/io/github/sspanak/tt9/languages/Language.java b/src/io/github/sspanak/tt9/languages/Language.java index a1a16442..21c68149 100644 --- a/src/io/github/sspanak/tt9/languages/Language.java +++ b/src/io/github/sspanak/tt9/languages/Language.java @@ -89,19 +89,23 @@ public class Language { ); } - public ArrayList getKeyCharacters(int key) { + public ArrayList getKeyCharacters(int key, boolean includeDigit) { if (key < 0 || key >= characterMap.size()) { return new ArrayList<>(); } ArrayList chars = new ArrayList<>(characterMap.get(key)); - if (chars.size() > 0) { + if (includeDigit && chars.size() > 0) { chars.add(String.valueOf(key)); } return chars; } + public ArrayList getKeyCharacters(int key) { + return getKeyCharacters(key, true); + } + public String getDigitSequenceForWord(String word) throws InvalidLanguageCharactersException { StringBuilder sequence = new StringBuilder(); String lowerCaseWord = word.toLowerCase(locale); diff --git a/src/io/github/sspanak/tt9/languages/definitions/Spanish.java b/src/io/github/sspanak/tt9/languages/definitions/Spanish.java index ef874e65..17e5f061 100644 --- a/src/io/github/sspanak/tt9/languages/definitions/Spanish.java +++ b/src/io/github/sspanak/tt9/languages/definitions/Spanish.java @@ -1,10 +1,12 @@ package io.github.sspanak.tt9.languages.definitions; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Locale; import io.github.sspanak.tt9.R; +import io.github.sspanak.tt9.languages.Punctuation; public class Spanish extends English { public Spanish() { @@ -18,11 +20,13 @@ public class Spanish extends English { isPunctuationPartOfWords = false; + characterMap.set(1, new ArrayList<>(Punctuation.Main)); characterMap.get(1).addAll(Arrays.asList("¡", "¿")); + characterMap.get(2).addAll(Collections.singletonList("á")); characterMap.get(3).addAll(Collections.singletonList("é")); characterMap.get(4).addAll(Collections.singletonList("í")); - characterMap.get(6).clear(); characterMap.get(6).addAll(Arrays.asList("m", "n", "ñ", "o", "ó")); + characterMap.set(6, new ArrayList<>(Arrays.asList("m", "n", "ñ", "o", "ó"))); characterMap.get(8).addAll(Arrays.asList("ú", "ü")); } }