diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/modes/InputMode.java b/app/src/main/java/io/github/sspanak/tt9/ime/modes/InputMode.java index 5e5dbb6f..21a2726f 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/modes/InputMode.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/modes/InputMode.java @@ -88,7 +88,7 @@ abstract public class InputMode { public void onCursorMove(@NonNull String word) { if (!digitSequence.isEmpty()) onAcceptSuggestion(word); } public boolean onReplaceSuggestion(@NonNull String rawWord) { String newSequence = switch(rawWord) { - case SuggestionsBar.SHOW_SPECIAL_CHARS_SUGGESTION -> seq.SPECIAL_CHAR_SEQUENCE; + case SuggestionsBar.SHOW_SPECIAL_CHARS_SUGGESTION -> seq.CHARS_GROUP_0_SEQUENCE; case SuggestionsBar.SHOW_CURRENCIES_SUGGESTION -> seq.CURRENCY_SEQUENCE; default -> null; }; @@ -214,7 +214,7 @@ abstract public class InputMode { if (!Characters.getCurrencies(language).isEmpty()) { special.add(SuggestionsBar.SHOW_CURRENCIES_SUGGESTION); } - if (!settings.getSpecialChars(language).isEmpty()) { + if (!settings.getChars0(language).isEmpty()) { special.add(SuggestionsBar.SHOW_SPECIAL_CHARS_SUGGESTION); } return special; @@ -228,7 +228,7 @@ abstract public class InputMode { protected boolean loadSpecialCharacters() { suggestions.clear(); - if (digitSequence.equals(seq.SPECIAL_CHAR_SEQUENCE) || digitSequence.equals(seq.PUNCTUATION_SEQUENCE)) { + if (digitSequence.equals(seq.CHARS_GROUP_0_SEQUENCE) || digitSequence.equals(seq.CHARS_1_SEQUENCE)) { suggestions.addAll(settings.getOrderedKeyChars(language, digitSequence.charAt(0) - '0')); } else if (digitSequence.equals(seq.CURRENCY_SEQUENCE)) { suggestions.addAll(Characters.getCurrencies(language)); diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeBopomofo.java b/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeBopomofo.java index 220d8ed2..705c3a7c 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeBopomofo.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeBopomofo.java @@ -59,7 +59,7 @@ public class ModeBopomofo extends ModePinyin { @Override public boolean onBackspace() { - if (digitSequence.equals(seq.PUNCTUATION_SEQUENCE) || digitSequence.equals(seq.WHITESPACE_SEQUENCE)) { + if (digitSequence.equals(seq.CHARS_1_SEQUENCE) || digitSequence.equals(seq.CHARS_0_SEQUENCE)) { digitSequence = ""; return false; } else { @@ -72,7 +72,7 @@ public class ModeBopomofo extends ModePinyin { protected void onNumberPress(int nextNumber) { if (seq.startsWithEmojiSequence(digitSequence)) { digitSequence = EmojiLanguage.validateEmojiSequence(seq, digitSequence, nextNumber); - } else if (!seq.SPECIAL_CHAR_SEQUENCE.equals(digitSequence) && !seq.CURRENCY_SEQUENCE.equals(digitSequence)) { + } else if (!seq.CHARS_GROUP_0_SEQUENCE.equals(digitSequence) && !seq.CURRENCY_SEQUENCE.equals(digitSequence)) { digitSequence += String.valueOf(nextNumber); } } @@ -82,10 +82,10 @@ public class ModeBopomofo extends ModePinyin { protected void onNumberHold(int number) { if (number == 0) { disablePredictions = false; - digitSequence = seq.WHITESPACE_SEQUENCE; + digitSequence = seq.CHARS_0_SEQUENCE; } else if (number == 1) { disablePredictions = false; - digitSequence = seq.PUNCTUATION_SEQUENCE; + digitSequence = seq.CHARS_1_SEQUENCE; } else { autoAcceptTimeout = 0; suggestions.add(language.getKeyNumeral(number)); @@ -102,7 +102,7 @@ public class ModeBopomofo extends ModePinyin { public boolean shouldAcceptPreviousSuggestion(int nextKey, boolean hold) { String newSequence = digitSequence + (char)(nextKey + '0'); return hold - || newSequence.startsWith(seq.WHITESPACE_SEQUENCE) - || (newSequence.startsWith(seq.PUNCTUATION_SEQUENCE) && nextKey != Sequences.PUNCTUATION_KEY); + || newSequence.startsWith(seq.CHARS_0_SEQUENCE) + || (newSequence.startsWith(seq.CHARS_1_SEQUENCE) && nextKey != Sequences.CHARS_1_KEY); } } diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeCheonjiin.java b/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeCheonjiin.java index e8bf3678..ec3076d5 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeCheonjiin.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeCheonjiin.java @@ -99,11 +99,11 @@ class ModeCheonjiin extends InputMode { @Override public boolean onBackspace() { - if (digitSequence.equals(seq.CURRENCY_SEQUENCE) || digitSequence.equals(seq.SPECIAL_CHAR_SEQUENCE)) { - digitSequence = seq.WHITESPACE_SEQUENCE; - } else if (digitSequence.equals(seq.PUNCTUATION_SEQUENCE)) { + if (digitSequence.equals(seq.CURRENCY_SEQUENCE) || digitSequence.equals(seq.CHARS_GROUP_0_SEQUENCE)) { + digitSequence = seq.CHARS_0_SEQUENCE; + } else if (digitSequence.equals(seq.CHARS_1_SEQUENCE)) { digitSequence = ""; - } else if (digitSequence.equals(seq.WHITESPACE_SEQUENCE) || (!digitSequence.startsWith(seq.PUNCTUATION_SEQUENCE) && Cheonjiin.isSingleJamo(digitSequence))) { + } else if (digitSequence.equals(seq.CHARS_0_SEQUENCE) || (!digitSequence.startsWith(seq.CHARS_1_SEQUENCE) && Cheonjiin.isSingleJamo(digitSequence))) { digitSequence = ""; } else if (!digitSequence.isEmpty()) { digitSequence = digitSequence.substring(0, digitSequence.length() - 1); @@ -133,10 +133,10 @@ class ModeCheonjiin extends InputMode { protected void onNumberHold(int number) { if (number == 0) { disablePredictions = false; - digitSequence = seq.WHITESPACE_SEQUENCE; + digitSequence = seq.CHARS_0_SEQUENCE; } else if (number == 1) { disablePredictions = false; - digitSequence = seq.PUNCTUATION_SEQUENCE; + digitSequence = seq.CHARS_1_SEQUENCE; } else { autoAcceptTimeout = 0; suggestions.add(language.getKeyNumeral(number)); @@ -152,7 +152,7 @@ class ModeCheonjiin extends InputMode { if (seq.startsWithEmojiSequence(digitSequence)) { digitSequence = EmojiLanguage.validateEmojiSequence(seq, digitSequence, nextNumber); - } else if (!seq.SPECIAL_CHAR_SEQUENCE.equals(digitSequence) && !seq.CURRENCY_SEQUENCE.equals(digitSequence)) { + } else if (!seq.CHARS_GROUP_0_SEQUENCE.equals(digitSequence) && !seq.CURRENCY_SEQUENCE.equals(digitSequence)) { digitSequence += String.valueOf(nextNumber); } @@ -252,7 +252,7 @@ class ModeCheonjiin extends InputMode { return false; } - if (digitSequence.equals(seq.WHITESPACE_SEQUENCE) || digitSequence.equals(seq.PUNCTUATION_SEQUENCE)) { + if (digitSequence.equals(seq.CHARS_0_SEQUENCE) || digitSequence.equals(seq.CHARS_1_SEQUENCE)) { int number = digitSequence.isEmpty() ? Integer.MAX_VALUE : digitSequence.charAt(digitSequence.length() - 1) - '0'; if (KEY_CHARACTERS.size() > number) { suggestions.clear(); @@ -267,10 +267,10 @@ class ModeCheonjiin extends InputMode { protected boolean shouldDisplaySpecialCharacters() { return - digitSequence.equals(seq.PUNCTUATION_SEQUENCE) - || digitSequence.equals(seq.WHITESPACE_SEQUENCE) + digitSequence.equals(seq.CHARS_1_SEQUENCE) + || digitSequence.equals(seq.CHARS_0_SEQUENCE) || digitSequence.equals(seq.CURRENCY_SEQUENCE) - || digitSequence.equals(seq.SPECIAL_CHAR_SEQUENCE); + || digitSequence.equals(seq.CHARS_GROUP_0_SEQUENCE); } @@ -336,8 +336,8 @@ class ModeCheonjiin extends InputMode { public boolean shouldAcceptPreviousSuggestion(int nextKey, boolean hold) { return (hold && !digitSequence.isEmpty()) - || (nextKey != Sequences.SPECIAL_CHAR_KEY && digitSequence.startsWith(seq.WHITESPACE_SEQUENCE)) - || (nextKey != Sequences.PUNCTUATION_KEY && digitSequence.startsWith(seq.PUNCTUATION_SEQUENCE)); + || (nextKey != Sequences.CHARS_0_KEY && digitSequence.startsWith(seq.CHARS_0_SEQUENCE)) + || (nextKey != Sequences.CHARS_1_KEY && digitSequence.startsWith(seq.CHARS_1_SEQUENCE)); } 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 3e51e05b..518372a2 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 @@ -126,7 +126,7 @@ public class ModeIdeograms extends ModeWords { boolean lastDigitBelongsToNewWord = preserveWords && initialLength >= 2; try { - if (!digitSequence.equals(seq.WHITESPACE_SEQUENCE) && !digitSequence.equals(seq.PUNCTUATION_SEQUENCE)) { + if (!digitSequence.equals(seq.CHARS_0_SEQUENCE) && !digitSequence.equals(seq.CHARS_1_SEQUENCE)) { lastAcceptedWord = currentWord; lastAcceptedSequence = lastDigitBelongsToNewWord ? digitSequence.substring(0, initialLength - 1) : digitSequence; @@ -153,8 +153,8 @@ public class ModeIdeograms extends ModeWords { digitSequence.length() > 1 && predictions.noDbWords() && !digitSequence.equals(seq.EMOJI_SEQUENCE) - && !digitSequence.equals(seq.PUNCTUATION_SEQUENCE) - && !digitSequence.equals(seq.WHITESPACE_SEQUENCE); + && !digitSequence.equals(seq.CHARS_1_SEQUENCE) + && !digitSequence.equals(seq.CHARS_0_SEQUENCE); } @@ -174,7 +174,7 @@ public class ModeIdeograms extends ModeWords { TextTools.containsOtherThan1(nextSequence) && ( nextSequence.endsWith(seq.EMOJI_SEQUENCE) || nextSequence.startsWith(seq.EMOJI_SEQUENCE) || - nextSequence.endsWith(seq.PUNCTUATION_SEQUENCE) || nextSequence.startsWith(seq.PUNCTUATION_SEQUENCE) + nextSequence.endsWith(seq.CHARS_1_SEQUENCE) || nextSequence.startsWith(seq.CHARS_1_SEQUENCE) ); } diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeKanji.java b/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeKanji.java index 1dcb91f4..781c5d47 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeKanji.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeKanji.java @@ -31,7 +31,7 @@ public class ModeKanji extends ModePinyin { } String nextSequence = digitSequence + (char)(nextKey + '0'); - if (nextSequence.endsWith(seq.PUNCTUATION_SEQUENCE) && !predictions.noDbWords()) { + if (nextSequence.endsWith(seq.CHARS_1_SEQUENCE) && !predictions.noDbWords()) { return false; } diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModePinyin.java b/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModePinyin.java index 775b5eab..d0f0b38f 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModePinyin.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModePinyin.java @@ -43,7 +43,7 @@ public class ModePinyin extends ModeIdeograms { @Override protected void onNumberPress(int number) { - if (ignoreNextSpace && number == Sequences.SPECIAL_CHAR_KEY) { + if (ignoreNextSpace && number == Sequences.CHARS_0_KEY) { ignoreNextSpace = false; return; } @@ -65,7 +65,7 @@ public class ModePinyin extends ModeIdeograms { // In East Asian languages, Space must accept the current word, or type a space when there is no word. // Here, we handle the case when 0-key is Space, unlike the Space hotkey in HotkeyHandler, // which could be a different key, assigned by the user. - if (!digitSequence.isEmpty() && !digitSequence.equals(seq.WHITESPACE_SEQUENCE) && nextKey == Sequences.SPECIAL_CHAR_KEY) { + if (!digitSequence.isEmpty() && !digitSequence.equals(seq.CHARS_0_SEQUENCE) && nextKey == Sequences.CHARS_0_KEY) { ignoreNextSpace = true; } diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeWords.java b/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeWords.java index 3082fd9f..367ec403 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeWords.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeWords.java @@ -69,8 +69,8 @@ class ModeWords extends ModeCheonjiin { return false; } - if (digitSequence.equals(seq.CURRENCY_SEQUENCE) || digitSequence.equals(seq.SPECIAL_CHAR_SEQUENCE)) { - digitSequence = seq.WHITESPACE_SEQUENCE; + if (digitSequence.equals(seq.CURRENCY_SEQUENCE) || digitSequence.equals(seq.CHARS_GROUP_0_SEQUENCE)) { + digitSequence = seq.CHARS_0_SEQUENCE; } else { digitSequence = digitSequence.substring(0, digitSequence.length() - 1); } @@ -218,7 +218,7 @@ class ModeWords extends ModeCheonjiin { } try { - digitSequence = Characters.getWhitespaces(language).contains(newStem) ? seq.WHITESPACE_SEQUENCE : language.getDigitSequenceForWord(newStem); + digitSequence = Characters.getWhitespaces(language).contains(newStem) ? seq.CHARS_0_SEQUENCE : language.getDigitSequenceForWord(newStem); isStemFuzzy = !exact; stem = newStem.toLowerCase(language.getLocale()); @@ -404,16 +404,16 @@ class ModeWords extends ModeCheonjiin { // Prevent typing the preferred character when the user has scrolled the special char suggestions. // For example, it makes more sense to allow typing "+ " with 0 + scroll + 0, instead of clearing // the "+" and replacing it with the preferred character. - boolean specialOrCurrency = digitSequence.equals(seq.SPECIAL_CHAR_SEQUENCE) || digitSequence.equals(seq.CURRENCY_SEQUENCE); - boolean isWhitespaceAndScrolled = digitSequence.equals(seq.WHITESPACE_SEQUENCE) && !stem.isEmpty(); - if (nextKey == Sequences.SPECIAL_CHAR_KEY && (isWhitespaceAndScrolled || specialOrCurrency)) { + boolean specialOrCurrency = digitSequence.equals(seq.CHARS_GROUP_0_SEQUENCE) || digitSequence.equals(seq.CURRENCY_SEQUENCE); + boolean isWhitespaceAndScrolled = digitSequence.equals(seq.CHARS_0_SEQUENCE) && !stem.isEmpty(); + if (nextKey == Sequences.CHARS_0_KEY && (isWhitespaceAndScrolled || specialOrCurrency)) { return true; } return !digitSequence.isEmpty() && ( - (nextKey == Sequences.SPECIAL_CHAR_KEY && digitSequence.charAt(digitSequence.length() - 1) != Sequences.SPECIAL_CHAR_CODE) - || (nextKey != Sequences.SPECIAL_CHAR_KEY && digitSequence.charAt(digitSequence.length() - 1) == Sequences.SPECIAL_CHAR_CODE) + (nextKey == Sequences.CHARS_0_KEY && digitSequence.charAt(digitSequence.length() - 1) != Sequences.CHARS_0_CODE) + || (nextKey != Sequences.CHARS_0_KEY && digitSequence.charAt(digitSequence.length() - 1) == Sequences.CHARS_0_CODE) ); } @@ -437,7 +437,7 @@ class ModeWords extends ModeCheonjiin { return !digitSequence.isEmpty() && predictions.noDbWords() - && digitSequence.contains(seq.PUNCTUATION_SEQUENCE) + && digitSequence.contains(seq.CHARS_1_SEQUENCE) && !digitSequence.startsWith(seq.EMOJI_SEQUENCE) && Text.containsOtherThan1(digitSequence); } diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/modes/helpers/Sequences.java b/app/src/main/java/io/github/sspanak/tt9/ime/modes/helpers/Sequences.java index a5fcaaac..cbc218e3 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/modes/helpers/Sequences.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/modes/helpers/Sequences.java @@ -4,40 +4,40 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; public class Sequences { - public static final int SPECIAL_CHAR_KEY = 0; - public static final int SPECIAL_CHAR_CODE = SPECIAL_CHAR_KEY + '0'; - public static final int PUNCTUATION_KEY = 1; + public static final int CHARS_0_KEY = 0; + public static final int CHARS_0_CODE = CHARS_0_KEY + '0'; + public static final int CHARS_1_KEY = 1; public static final int CUSTOM_EMOJI_KEY = 3; public final int PUNCTUATION_PREFIX_LENGTH; - @NonNull public final String PUNCTUATION_SEQUENCE; + @NonNull public final String CHARS_1_SEQUENCE; @NonNull public final String EMOJI_SEQUENCE; @NonNull public final String CUSTOM_EMOJI_SEQUENCE; @NonNull public final String CURRENCY_SEQUENCE; @NonNull public final String PREFERRED_CHAR_SEQUENCE; - @NonNull public final String SPECIAL_CHAR_SEQUENCE; - @NonNull public final String WHITESPACE_SEQUENCE; + @NonNull public final String CHARS_GROUP_0_SEQUENCE; + @NonNull public final String CHARS_0_SEQUENCE; public Sequences() { this(null, null); } - public Sequences(@Nullable String punctuationPrefix, @Nullable String specialCharPrefix) { - final String PUNCTUATION_PREFIX = punctuationPrefix != null ? punctuationPrefix : ""; - final String SPECIAL_CHAR_PREFIX = specialCharPrefix != null ? specialCharPrefix : ""; + public Sequences(@Nullable String chars1Prefix, @Nullable String chars0Prefix) { + final String CHARS_1_PREFIX = chars1Prefix != null ? chars1Prefix : ""; + final String CHARS_0_PREFIX = chars0Prefix != null ? chars0Prefix : ""; - PUNCTUATION_SEQUENCE = PUNCTUATION_PREFIX + PUNCTUATION_KEY; - PUNCTUATION_PREFIX_LENGTH = PUNCTUATION_PREFIX.length(); + CHARS_1_SEQUENCE = CHARS_1_PREFIX + CHARS_1_KEY; + PUNCTUATION_PREFIX_LENGTH = CHARS_1_PREFIX.length(); - EMOJI_SEQUENCE = PUNCTUATION_SEQUENCE + PUNCTUATION_KEY; + EMOJI_SEQUENCE = CHARS_1_SEQUENCE + CHARS_1_KEY; CUSTOM_EMOJI_SEQUENCE = EMOJI_SEQUENCE + CUSTOM_EMOJI_KEY; - WHITESPACE_SEQUENCE = SPECIAL_CHAR_PREFIX + SPECIAL_CHAR_KEY; - PREFERRED_CHAR_SEQUENCE = WHITESPACE_SEQUENCE + SPECIAL_CHAR_KEY; - SPECIAL_CHAR_SEQUENCE = SPECIAL_CHAR_PREFIX + SPECIAL_CHAR_KEY + SPECIAL_CHAR_KEY + SPECIAL_CHAR_KEY; - CURRENCY_SEQUENCE = SPECIAL_CHAR_SEQUENCE + SPECIAL_CHAR_KEY; + CHARS_0_SEQUENCE = CHARS_0_PREFIX + CHARS_0_KEY; + PREFERRED_CHAR_SEQUENCE = CHARS_0_SEQUENCE + CHARS_0_KEY; + CHARS_GROUP_0_SEQUENCE = CHARS_0_PREFIX + CHARS_0_KEY + CHARS_0_KEY + CHARS_0_KEY; + CURRENCY_SEQUENCE = CHARS_GROUP_0_SEQUENCE + CHARS_0_KEY; } public boolean startsWithEmojiSequence(String sequence) { @@ -52,11 +52,11 @@ public class Sequences { } return - sequence.equals(PUNCTUATION_SEQUENCE) - || sequence.equals(WHITESPACE_SEQUENCE) + sequence.equals(CHARS_1_SEQUENCE) + || sequence.equals(CHARS_0_SEQUENCE) || sequence.equals(EMOJI_SEQUENCE) || sequence.equals(PREFERRED_CHAR_SEQUENCE) - || sequence.equals(SPECIAL_CHAR_SEQUENCE) + || sequence.equals(CHARS_GROUP_0_SEQUENCE) || sequence.equals(CURRENCY_SEQUENCE); } @@ -66,11 +66,11 @@ public class Sequences { } return - sequence.startsWith(PUNCTUATION_SEQUENCE) - || sequence.startsWith(WHITESPACE_SEQUENCE) + sequence.startsWith(CHARS_1_SEQUENCE) + || sequence.startsWith(CHARS_0_SEQUENCE) || sequence.startsWith(EMOJI_SEQUENCE) || sequence.startsWith(PREFERRED_CHAR_SEQUENCE) - || sequence.startsWith(SPECIAL_CHAR_SEQUENCE) + || sequence.startsWith(CHARS_GROUP_0_SEQUENCE) || sequence.startsWith(CURRENCY_SEQUENCE); } } diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/ItemRestoreDefaultPunctuation.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/ItemRestoreDefaultPunctuation.java index 1885d102..bc00f055 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/ItemRestoreDefaultPunctuation.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/ItemRestoreDefaultPunctuation.java @@ -32,12 +32,12 @@ class ItemRestoreDefaultPunctuation extends ItemClickable { return false; } - settings.saveSpecialChars( + settings.saveChars0( language, String.join("", language.getKeyCharacters(0)) ); - settings.savePunctuation( + settings.saveChars1( language, String.join("", language.getKeyCharacters(1)) ); diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/PreferenceSpecialCharList.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/PreferenceChars0.java similarity index 55% rename from app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/PreferenceSpecialCharList.java rename to app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/PreferenceChars0.java index 70a012c1..7571c8af 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/PreferenceSpecialCharList.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/PreferenceChars0.java @@ -8,20 +8,20 @@ import androidx.annotation.Nullable; import io.github.sspanak.tt9.preferences.settings.SettingsStore; -public class PreferenceSpecialCharList extends AbstractPreferenceCharList { +public class PreferenceChars0 extends AbstractPreferenceCharList { public static final String NAME = "punctuation_order_special_chars"; private char[] forbiddenChars; - public PreferenceSpecialCharList(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } - public PreferenceSpecialCharList(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } - public PreferenceSpecialCharList(@NonNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); } - public PreferenceSpecialCharList(@NonNull Context context) { super(context); } + public PreferenceChars0(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } + public PreferenceChars0(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } + public PreferenceChars0(@NonNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); } + public PreferenceChars0(@NonNull Context context) { super(context); } @Override @NonNull protected String getChars() { - return getSettings().getSpecialChars(language); + return getSettings().getChars0(language); } @@ -29,11 +29,11 @@ public class PreferenceSpecialCharList extends AbstractPreferenceCharList { @Override protected char[] getForbiddenChars() { if (forbiddenChars == null) { - char[] mandatoryChars = getSettings().getMandatoryPunctuation(language); + char[] mandatoryChars = getSettings().getMandatoryChars0(language); - forbiddenChars = new char[mandatoryChars.length + SettingsStore.FORBIDDEN_SPECIAL_CHARS.length]; + forbiddenChars = new char[mandatoryChars.length + SettingsStore.FORBIDDEN_CHARS_0.length]; System.arraycopy(mandatoryChars, 0, forbiddenChars, 0, mandatoryChars.length); - System.arraycopy(SettingsStore.FORBIDDEN_SPECIAL_CHARS, 0, forbiddenChars, mandatoryChars.length, SettingsStore.FORBIDDEN_SPECIAL_CHARS.length); + System.arraycopy(SettingsStore.FORBIDDEN_CHARS_0, 0, forbiddenChars, mandatoryChars.length, SettingsStore.FORBIDDEN_CHARS_0.length); } return forbiddenChars; @@ -68,6 +68,6 @@ public class PreferenceSpecialCharList extends AbstractPreferenceCharList { } all.append(currentChars); - getSettings().saveSpecialChars(language, all.toString()); + getSettings().saveChars0(language, all.toString()); } } diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/PreferenceSentencePunctuationList.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/PreferenceChars1.java similarity index 63% rename from app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/PreferenceSentencePunctuationList.java rename to app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/PreferenceChars1.java index 094b108b..f2e1fa5d 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/PreferenceSentencePunctuationList.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/PreferenceChars1.java @@ -9,24 +9,24 @@ import androidx.annotation.Nullable; import io.github.sspanak.tt9.R; import io.github.sspanak.tt9.preferences.settings.SettingsStore; -public class PreferenceSentencePunctuationList extends AbstractPreferenceCharList { +public class PreferenceChars1 extends AbstractPreferenceCharList { public static final String NAME = "punctuation_order_sentence"; - public PreferenceSentencePunctuationList(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } - public PreferenceSentencePunctuationList(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } - public PreferenceSentencePunctuationList(@NonNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); } - public PreferenceSentencePunctuationList(@NonNull Context context) { super(context); } + public PreferenceChars1(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } + public PreferenceChars1(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } + public PreferenceChars1(@NonNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); } + public PreferenceChars1(@NonNull Context context) { super(context); } @Override @NonNull protected String getChars() { - return getSettings().getPunctuation(language); + return getSettings().getChars1(language); } @NonNull @Override protected char[] getForbiddenChars() { - return SettingsStore.FORBIDDEN_SPECIAL_CHARS; + return SettingsStore.FORBIDDEN_CHARS_0; } /** @@ -41,7 +41,7 @@ public class PreferenceSentencePunctuationList extends AbstractPreferenceCharLis @Override protected String validateMandatoryChars() { - return super.validateMandatoryChars(getSettings().getMandatoryPunctuation(language)); + return super.validateMandatoryChars(getSettings().getMandatoryChars0(language)); } public boolean validateCurrentChars() { @@ -62,6 +62,6 @@ public class PreferenceSentencePunctuationList extends AbstractPreferenceCharLis @Override public void saveCurrentChars() { - getSettings().savePunctuation(language, currentChars); + getSettings().saveChars1(language, currentChars); } } diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/PunctuationScreen.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/PunctuationScreen.java index e2449797..dc756ee2 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/PunctuationScreen.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/PunctuationScreen.java @@ -14,8 +14,8 @@ public class PunctuationScreen extends BaseScreenFragment { public static final String NAME = "Punctuation"; private ItemPunctuationOrderLanguage languageList; private ItemRestoreDefaultPunctuation restoreDefaults; - private PreferenceSpecialCharList specialCharList; - private PreferenceSentencePunctuationList punctuationList; + private PreferenceChars0 charList0; + private PreferenceChars1 charList1; public PunctuationScreen() { init(); } public PunctuationScreen(PreferencesActivity activity) { init(activity); } @@ -44,8 +44,8 @@ public class PunctuationScreen extends BaseScreenFragment { @Override protected void onCreate() { - specialCharList = findPreference(PreferenceSpecialCharList.NAME); - punctuationList = findPreference(PreferenceSentencePunctuationList.NAME); + charList0 = findPreference(PreferenceChars0.NAME); + charList1 = findPreference(PreferenceChars1.NAME); initLanguageList(); initResetDefaults(); @@ -87,11 +87,11 @@ public class PunctuationScreen extends BaseScreenFragment { private void onSaveOrdering() { - if (specialCharList == null || !specialCharList.validateCurrentChars() || punctuationList == null || !punctuationList.validateCurrentChars()) { + if (charList0 == null || !charList0.validateCurrentChars() || charList1 == null || !charList1.validateCurrentChars()) { UI.toastShortSingle(activity, R.string.punctuation_order_save_error); } else { - specialCharList.saveCurrentChars(); - punctuationList.saveCurrentChars(); + charList0.saveCurrentChars(); + charList1.saveCurrentChars(); } } @@ -101,19 +101,19 @@ public class PunctuationScreen extends BaseScreenFragment { restoreDefaults.setLanguage(language); - if (specialCharList != null) { - specialCharList.onLanguageChange(language); + if (charList0 != null) { + charList0.onLanguageChange(language); } - if (punctuationList != null) { - punctuationList.onLanguageChange(language); + if (charList1 != null) { + charList1.onLanguageChange(language); } } private void loadCharLists() { - loadCharList(findPreference(PreferenceSpecialCharList.NAME)); - loadCharList(findPreference(PreferenceSentencePunctuationList.NAME)); + loadCharList(findPreference(PreferenceChars0.NAME)); + loadCharList(findPreference(PreferenceChars1.NAME)); } diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsPunctuation.java b/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsPunctuation.java index e61203fd..2864f1a3 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsPunctuation.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsPunctuation.java @@ -11,10 +11,10 @@ import io.github.sspanak.tt9.languages.LanguageKind; import io.github.sspanak.tt9.util.chars.Characters; class SettingsPunctuation extends SettingsInput { - private final static String KEY_PREFIX_PUNCTUATION = "pref_punctuation_"; - private final static String KEY_PREFIX_SPECIAL = "pref_special_chars_"; - private final static char[] MANDATORY_EU_PUNCTUATION = new char[] {'\'', '"', '-'}; - public final static char[] FORBIDDEN_SPECIAL_CHARS = new char[] {' ', '\n', '\t'}; + private final static String CHARS_1_PREFIX = "pref_punctuation_"; + private final static String CHARS_0_PREFIX = "pref_special_chars_"; + private final static char[] MANDATORY_CHARS_1_EU = new char[] {'\'', '"', '-'}; + public final static char[] FORBIDDEN_CHARS_0 = new char[] {' ', '\n', '\t'}; SettingsPunctuation(Context context) { @@ -22,56 +22,56 @@ class SettingsPunctuation extends SettingsInput { } - public char[] getMandatoryPunctuation(Language language) { - return LanguageKind.isCyrillic(language) || LanguageKind.isLatinBased(language) ? MANDATORY_EU_PUNCTUATION : new char[0]; + public char[] getMandatoryChars0(Language language) { + return LanguageKind.isCyrillic(language) || LanguageKind.isLatinBased(language) ? MANDATORY_CHARS_1_EU : new char[0]; } - public void savePunctuation(@NonNull Language language, @NonNull String punctuation) { - prefsEditor.putString(KEY_PREFIX_PUNCTUATION + language.getId(), punctuation); + public void saveChars1(@NonNull Language language, @NonNull String punctuation) { + prefsEditor.putString(CHARS_1_PREFIX + language.getId(), punctuation); prefsEditor.apply(); } - public void saveSpecialChars(@NonNull Language language, @NonNull String specialChars) { + public void saveChars0(@NonNull Language language, @NonNull String specialChars) { String safeChars = specialChars .replace("\n", "⏎") .replace("\t", Characters.TAB); - prefsEditor.putString(KEY_PREFIX_SPECIAL + language.getId(), safeChars); + prefsEditor.putString(CHARS_0_PREFIX + language.getId(), safeChars); prefsEditor.apply(); } - @NonNull public String getPunctuation(Language language) { - return String.join("", getPunctuationAsList(language)); + @NonNull public String getChars1(Language language) { + return String.join("", getChars1AsList(language)); } - @NonNull public String getSpecialChars(Language language) { - return String.join("", getSpecialCharsAsList(language)); + @NonNull public String getChars0(Language language) { + return String.join("", getChars0AsList(language)); } @NonNull - public ArrayList getPunctuationAsList(Language language) { + public ArrayList getChars1AsList(Language language) { if (language == null) { return new ArrayList<>(); } return getCharsAsList( - prefs.getString(KEY_PREFIX_PUNCTUATION + language.getId(), null), + prefs.getString(CHARS_1_PREFIX + language.getId(), null), language.getKeyCharacters(1) ); } @NonNull - public ArrayList getSpecialCharsAsList(Language language) { + public ArrayList getChars0AsList(Language language) { if (language == null) { return new ArrayList<>(); } - String safeChars = prefs.getString(KEY_PREFIX_SPECIAL + language.getId(), null); + String safeChars = prefs.getString(CHARS_0_PREFIX + language.getId(), null); return getCharsAsList( safeChars == null ? null : safeChars.replace("⏎", "\n").replace(Characters.TAB, "\t"), @@ -83,8 +83,8 @@ class SettingsPunctuation extends SettingsInput { @NonNull public ArrayList getOrderedKeyChars(Language language, int number) { return switch (number) { - case 0 -> getSpecialCharsAsList(language); - case 1 -> getPunctuationAsList(language); + case 0 -> getChars0AsList(language); + case 1 -> getChars1AsList(language); default -> language != null ? language.getKeyCharacters(number) : new ArrayList<>(); }; } diff --git a/app/src/main/res/xml/prefs_screen_punctuation.xml b/app/src/main/res/xml/prefs_screen_punctuation.xml index 80fffc9f..810831f5 100644 --- a/app/src/main/res/xml/prefs_screen_punctuation.xml +++ b/app/src/main/res/xml/prefs_screen_punctuation.xml @@ -5,11 +5,11 @@ android:key="punctuation_order_language" android:title="@string/language" /> - -