1
0
Fork 0

ensured correct default character order on the very first start

This commit is contained in:
sspanak 2025-05-14 18:56:04 +03:00 committed by Dimo Karaivanov
parent f195daad95
commit a7b4c44913
4 changed files with 30 additions and 16 deletions

View file

@ -185,6 +185,7 @@ abstract public class CommandHandler extends TextEditingHandler {
validateLanguages(); validateLanguages();
detectRTL(); detectRTL();
settings.setDefaultCharOrder(mLanguage, false);
// for languages that do not have ABC or Predictive, make sure we remain in valid state // for languages that do not have ABC or Predictive, make sure we remain in valid state
if (mInputMode.changeLanguage(mLanguage)) { if (mInputMode.changeLanguage(mLanguage)) {

View file

@ -68,6 +68,7 @@ public abstract class TypingHandler extends KeyPadHandler {
return false; return false;
} }
settings.setDefaultCharOrder(mLanguage, true);
resetKeyRepeat(); resetKeyRepeat();
mInputMode = determineInputMode(); mInputMode = determineInputMode();
determineTextCase(); determineTextCase();

View file

@ -7,7 +7,6 @@ import io.github.sspanak.tt9.languages.Language;
import io.github.sspanak.tt9.preferences.items.ItemClickable; import io.github.sspanak.tt9.preferences.items.ItemClickable;
import io.github.sspanak.tt9.preferences.settings.SettingsStore; import io.github.sspanak.tt9.preferences.settings.SettingsStore;
import io.github.sspanak.tt9.util.ConsumerCompat; import io.github.sspanak.tt9.util.ConsumerCompat;
import io.github.sspanak.tt9.util.chars.Characters;
class ItemRestoreDefaultPunctuation extends ItemClickable { class ItemRestoreDefaultPunctuation extends ItemClickable {
public static final String NAME = "punctuation_order_reset_defaults"; public static final String NAME = "punctuation_order_reset_defaults";
@ -33,21 +32,7 @@ class ItemRestoreDefaultPunctuation extends ItemClickable {
return false; return false;
} }
settings.saveChars0( settings.setDefaultCharOrder(language, true);
language,
String.join("", language.getKeyCharacters(0))
);
settings.saveChars1(
language,
String.join("", language.getKeyCharacters(1))
);
settings.saveCharsExtra(
language,
SettingsStore.CHARS_GROUP_0,
String.join("", Characters.getCurrencies(language))
);
if (onClick != null) { if (onClick != null) {
onClick.accept(String.valueOf(language.getId())); onClick.accept(String.valueOf(language.getId()));

View file

@ -29,6 +29,33 @@ class SettingsPunctuation extends SettingsInput {
} }
public void setDefaultCharOrder(@NonNull Language language, boolean overwrite) {
if (overwrite || noDefault0Chars(language)) {
String chars = new String(FORBIDDEN_CHARS_0) + String.join("", language.getKeyCharacters(0));
final int splitPosition = 7;
saveChars0(language, String.join("", chars.substring(0, splitPosition)));
saveCharsExtra(language, CHARS_GROUP_0, String.join("", Characters.getCurrencies(language)));
saveCharsExtra(language, CHARS_AFTER_GROUP_0, chars.substring(splitPosition));
}
if (overwrite || noDefault1Chars(language)) {
saveChars1(language, String.join("", language.getKeyCharacters(1)));
saveCharsExtra(language, CHARS_GROUP_1, "");
saveCharsExtra(language, CHARS_AFTER_GROUP_1, "");
}
}
private boolean noDefault0Chars(Language language) {
return prefs.getString(CHARS_0_PREFIX + language.getId(), null) == null;
}
private boolean noDefault1Chars(Language language) {
return prefs.getString(CHARS_1_PREFIX + language.getId(), null) == null;
}
public char[] getMandatoryChars0(Language language) { public char[] getMandatoryChars0(Language language) {
return LanguageKind.isCyrillic(language) || LanguageKind.isLatinBased(language) ? MANDATORY_CHARS_1_EU : new char[0]; return LanguageKind.isCyrillic(language) || LanguageKind.isLatinBased(language) ? MANDATORY_CHARS_1_EU : new char[0];
} }