1
0
Fork 0

refactoring: more generic special char variable and function names

This commit is contained in:
sspanak 2025-05-14 14:43:50 +03:00 committed by Dimo Karaivanov
parent f77f98aa51
commit d7004a1a1e
14 changed files with 116 additions and 116 deletions

View file

@ -88,7 +88,7 @@ abstract public class InputMode {
public void onCursorMove(@NonNull String word) { if (!digitSequence.isEmpty()) onAcceptSuggestion(word); } public void onCursorMove(@NonNull String word) { if (!digitSequence.isEmpty()) onAcceptSuggestion(word); }
public boolean onReplaceSuggestion(@NonNull String rawWord) { public boolean onReplaceSuggestion(@NonNull String rawWord) {
String newSequence = switch(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; case SuggestionsBar.SHOW_CURRENCIES_SUGGESTION -> seq.CURRENCY_SEQUENCE;
default -> null; default -> null;
}; };
@ -214,7 +214,7 @@ abstract public class InputMode {
if (!Characters.getCurrencies(language).isEmpty()) { if (!Characters.getCurrencies(language).isEmpty()) {
special.add(SuggestionsBar.SHOW_CURRENCIES_SUGGESTION); special.add(SuggestionsBar.SHOW_CURRENCIES_SUGGESTION);
} }
if (!settings.getSpecialChars(language).isEmpty()) { if (!settings.getChars0(language).isEmpty()) {
special.add(SuggestionsBar.SHOW_SPECIAL_CHARS_SUGGESTION); special.add(SuggestionsBar.SHOW_SPECIAL_CHARS_SUGGESTION);
} }
return special; return special;
@ -228,7 +228,7 @@ abstract public class InputMode {
protected boolean loadSpecialCharacters() { protected boolean loadSpecialCharacters() {
suggestions.clear(); 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')); suggestions.addAll(settings.getOrderedKeyChars(language, digitSequence.charAt(0) - '0'));
} else if (digitSequence.equals(seq.CURRENCY_SEQUENCE)) { } else if (digitSequence.equals(seq.CURRENCY_SEQUENCE)) {
suggestions.addAll(Characters.getCurrencies(language)); suggestions.addAll(Characters.getCurrencies(language));

View file

@ -59,7 +59,7 @@ public class ModeBopomofo extends ModePinyin {
@Override @Override
public boolean onBackspace() { 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 = ""; digitSequence = "";
return false; return false;
} else { } else {
@ -72,7 +72,7 @@ public class ModeBopomofo extends ModePinyin {
protected void onNumberPress(int nextNumber) { protected void onNumberPress(int nextNumber) {
if (seq.startsWithEmojiSequence(digitSequence)) { if (seq.startsWithEmojiSequence(digitSequence)) {
digitSequence = EmojiLanguage.validateEmojiSequence(seq, digitSequence, nextNumber); 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); digitSequence += String.valueOf(nextNumber);
} }
} }
@ -82,10 +82,10 @@ public class ModeBopomofo extends ModePinyin {
protected void onNumberHold(int number) { protected void onNumberHold(int number) {
if (number == 0) { if (number == 0) {
disablePredictions = false; disablePredictions = false;
digitSequence = seq.WHITESPACE_SEQUENCE; digitSequence = seq.CHARS_0_SEQUENCE;
} else if (number == 1) { } else if (number == 1) {
disablePredictions = false; disablePredictions = false;
digitSequence = seq.PUNCTUATION_SEQUENCE; digitSequence = seq.CHARS_1_SEQUENCE;
} else { } else {
autoAcceptTimeout = 0; autoAcceptTimeout = 0;
suggestions.add(language.getKeyNumeral(number)); suggestions.add(language.getKeyNumeral(number));
@ -102,7 +102,7 @@ public class ModeBopomofo extends ModePinyin {
public boolean shouldAcceptPreviousSuggestion(int nextKey, boolean hold) { public boolean shouldAcceptPreviousSuggestion(int nextKey, boolean hold) {
String newSequence = digitSequence + (char)(nextKey + '0'); String newSequence = digitSequence + (char)(nextKey + '0');
return hold return hold
|| newSequence.startsWith(seq.WHITESPACE_SEQUENCE) || newSequence.startsWith(seq.CHARS_0_SEQUENCE)
|| (newSequence.startsWith(seq.PUNCTUATION_SEQUENCE) && nextKey != Sequences.PUNCTUATION_KEY); || (newSequence.startsWith(seq.CHARS_1_SEQUENCE) && nextKey != Sequences.CHARS_1_KEY);
} }
} }

View file

@ -99,11 +99,11 @@ class ModeCheonjiin extends InputMode {
@Override @Override
public boolean onBackspace() { public boolean onBackspace() {
if (digitSequence.equals(seq.CURRENCY_SEQUENCE) || digitSequence.equals(seq.SPECIAL_CHAR_SEQUENCE)) { if (digitSequence.equals(seq.CURRENCY_SEQUENCE) || digitSequence.equals(seq.CHARS_GROUP_0_SEQUENCE)) {
digitSequence = seq.WHITESPACE_SEQUENCE; digitSequence = seq.CHARS_0_SEQUENCE;
} else if (digitSequence.equals(seq.PUNCTUATION_SEQUENCE)) { } else if (digitSequence.equals(seq.CHARS_1_SEQUENCE)) {
digitSequence = ""; 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 = ""; digitSequence = "";
} else if (!digitSequence.isEmpty()) { } else if (!digitSequence.isEmpty()) {
digitSequence = digitSequence.substring(0, digitSequence.length() - 1); digitSequence = digitSequence.substring(0, digitSequence.length() - 1);
@ -133,10 +133,10 @@ class ModeCheonjiin extends InputMode {
protected void onNumberHold(int number) { protected void onNumberHold(int number) {
if (number == 0) { if (number == 0) {
disablePredictions = false; disablePredictions = false;
digitSequence = seq.WHITESPACE_SEQUENCE; digitSequence = seq.CHARS_0_SEQUENCE;
} else if (number == 1) { } else if (number == 1) {
disablePredictions = false; disablePredictions = false;
digitSequence = seq.PUNCTUATION_SEQUENCE; digitSequence = seq.CHARS_1_SEQUENCE;
} else { } else {
autoAcceptTimeout = 0; autoAcceptTimeout = 0;
suggestions.add(language.getKeyNumeral(number)); suggestions.add(language.getKeyNumeral(number));
@ -152,7 +152,7 @@ class ModeCheonjiin extends InputMode {
if (seq.startsWithEmojiSequence(digitSequence)) { if (seq.startsWithEmojiSequence(digitSequence)) {
digitSequence = EmojiLanguage.validateEmojiSequence(seq, digitSequence, nextNumber); 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); digitSequence += String.valueOf(nextNumber);
} }
@ -252,7 +252,7 @@ class ModeCheonjiin extends InputMode {
return false; 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'; int number = digitSequence.isEmpty() ? Integer.MAX_VALUE : digitSequence.charAt(digitSequence.length() - 1) - '0';
if (KEY_CHARACTERS.size() > number) { if (KEY_CHARACTERS.size() > number) {
suggestions.clear(); suggestions.clear();
@ -267,10 +267,10 @@ class ModeCheonjiin extends InputMode {
protected boolean shouldDisplaySpecialCharacters() { protected boolean shouldDisplaySpecialCharacters() {
return return
digitSequence.equals(seq.PUNCTUATION_SEQUENCE) digitSequence.equals(seq.CHARS_1_SEQUENCE)
|| digitSequence.equals(seq.WHITESPACE_SEQUENCE) || digitSequence.equals(seq.CHARS_0_SEQUENCE)
|| digitSequence.equals(seq.CURRENCY_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) { public boolean shouldAcceptPreviousSuggestion(int nextKey, boolean hold) {
return return
(hold && !digitSequence.isEmpty()) (hold && !digitSequence.isEmpty())
|| (nextKey != Sequences.SPECIAL_CHAR_KEY && digitSequence.startsWith(seq.WHITESPACE_SEQUENCE)) || (nextKey != Sequences.CHARS_0_KEY && digitSequence.startsWith(seq.CHARS_0_SEQUENCE))
|| (nextKey != Sequences.PUNCTUATION_KEY && digitSequence.startsWith(seq.PUNCTUATION_SEQUENCE)); || (nextKey != Sequences.CHARS_1_KEY && digitSequence.startsWith(seq.CHARS_1_SEQUENCE));
} }

View file

@ -126,7 +126,7 @@ public class ModeIdeograms extends ModeWords {
boolean lastDigitBelongsToNewWord = preserveWords && initialLength >= 2; boolean lastDigitBelongsToNewWord = preserveWords && initialLength >= 2;
try { 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; lastAcceptedWord = currentWord;
lastAcceptedSequence = lastDigitBelongsToNewWord ? digitSequence.substring(0, initialLength - 1) : digitSequence; lastAcceptedSequence = lastDigitBelongsToNewWord ? digitSequence.substring(0, initialLength - 1) : digitSequence;
@ -153,8 +153,8 @@ public class ModeIdeograms extends ModeWords {
digitSequence.length() > 1 digitSequence.length() > 1
&& predictions.noDbWords() && predictions.noDbWords()
&& !digitSequence.equals(seq.EMOJI_SEQUENCE) && !digitSequence.equals(seq.EMOJI_SEQUENCE)
&& !digitSequence.equals(seq.PUNCTUATION_SEQUENCE) && !digitSequence.equals(seq.CHARS_1_SEQUENCE)
&& !digitSequence.equals(seq.WHITESPACE_SEQUENCE); && !digitSequence.equals(seq.CHARS_0_SEQUENCE);
} }
@ -174,7 +174,7 @@ public class ModeIdeograms extends ModeWords {
TextTools.containsOtherThan1(nextSequence) TextTools.containsOtherThan1(nextSequence)
&& ( && (
nextSequence.endsWith(seq.EMOJI_SEQUENCE) || nextSequence.startsWith(seq.EMOJI_SEQUENCE) || 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)
); );
} }

View file

@ -31,7 +31,7 @@ public class ModeKanji extends ModePinyin {
} }
String nextSequence = digitSequence + (char)(nextKey + '0'); 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; return false;
} }

View file

@ -43,7 +43,7 @@ public class ModePinyin extends ModeIdeograms {
@Override @Override
protected void onNumberPress(int number) { protected void onNumberPress(int number) {
if (ignoreNextSpace && number == Sequences.SPECIAL_CHAR_KEY) { if (ignoreNextSpace && number == Sequences.CHARS_0_KEY) {
ignoreNextSpace = false; ignoreNextSpace = false;
return; 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. // 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, // 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. // 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; ignoreNextSpace = true;
} }

View file

@ -69,8 +69,8 @@ class ModeWords extends ModeCheonjiin {
return false; return false;
} }
if (digitSequence.equals(seq.CURRENCY_SEQUENCE) || digitSequence.equals(seq.SPECIAL_CHAR_SEQUENCE)) { if (digitSequence.equals(seq.CURRENCY_SEQUENCE) || digitSequence.equals(seq.CHARS_GROUP_0_SEQUENCE)) {
digitSequence = seq.WHITESPACE_SEQUENCE; digitSequence = seq.CHARS_0_SEQUENCE;
} else { } else {
digitSequence = digitSequence.substring(0, digitSequence.length() - 1); digitSequence = digitSequence.substring(0, digitSequence.length() - 1);
} }
@ -218,7 +218,7 @@ class ModeWords extends ModeCheonjiin {
} }
try { 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; isStemFuzzy = !exact;
stem = newStem.toLowerCase(language.getLocale()); 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. // 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 // For example, it makes more sense to allow typing "+ " with 0 + scroll + 0, instead of clearing
// the "+" and replacing it with the preferred character. // the "+" and replacing it with the preferred character.
boolean specialOrCurrency = digitSequence.equals(seq.SPECIAL_CHAR_SEQUENCE) || digitSequence.equals(seq.CURRENCY_SEQUENCE); boolean specialOrCurrency = digitSequence.equals(seq.CHARS_GROUP_0_SEQUENCE) || digitSequence.equals(seq.CURRENCY_SEQUENCE);
boolean isWhitespaceAndScrolled = digitSequence.equals(seq.WHITESPACE_SEQUENCE) && !stem.isEmpty(); boolean isWhitespaceAndScrolled = digitSequence.equals(seq.CHARS_0_SEQUENCE) && !stem.isEmpty();
if (nextKey == Sequences.SPECIAL_CHAR_KEY && (isWhitespaceAndScrolled || specialOrCurrency)) { if (nextKey == Sequences.CHARS_0_KEY && (isWhitespaceAndScrolled || specialOrCurrency)) {
return true; return true;
} }
return return
!digitSequence.isEmpty() && ( !digitSequence.isEmpty() && (
(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.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)
); );
} }
@ -437,7 +437,7 @@ class ModeWords extends ModeCheonjiin {
return return
!digitSequence.isEmpty() !digitSequence.isEmpty()
&& predictions.noDbWords() && predictions.noDbWords()
&& digitSequence.contains(seq.PUNCTUATION_SEQUENCE) && digitSequence.contains(seq.CHARS_1_SEQUENCE)
&& !digitSequence.startsWith(seq.EMOJI_SEQUENCE) && !digitSequence.startsWith(seq.EMOJI_SEQUENCE)
&& Text.containsOtherThan1(digitSequence); && Text.containsOtherThan1(digitSequence);
} }

View file

@ -4,40 +4,40 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
public class Sequences { public class Sequences {
public static final int SPECIAL_CHAR_KEY = 0; public static final int CHARS_0_KEY = 0;
public static final int SPECIAL_CHAR_CODE = SPECIAL_CHAR_KEY + '0'; public static final int CHARS_0_CODE = CHARS_0_KEY + '0';
public static final int PUNCTUATION_KEY = 1; public static final int CHARS_1_KEY = 1;
public static final int CUSTOM_EMOJI_KEY = 3; public static final int CUSTOM_EMOJI_KEY = 3;
public final int PUNCTUATION_PREFIX_LENGTH; 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 EMOJI_SEQUENCE;
@NonNull public final String CUSTOM_EMOJI_SEQUENCE; @NonNull public final String CUSTOM_EMOJI_SEQUENCE;
@NonNull public final String CURRENCY_SEQUENCE; @NonNull public final String CURRENCY_SEQUENCE;
@NonNull public final String PREFERRED_CHAR_SEQUENCE; @NonNull public final String PREFERRED_CHAR_SEQUENCE;
@NonNull public final String SPECIAL_CHAR_SEQUENCE; @NonNull public final String CHARS_GROUP_0_SEQUENCE;
@NonNull public final String WHITESPACE_SEQUENCE; @NonNull public final String CHARS_0_SEQUENCE;
public Sequences() { public Sequences() {
this(null, null); this(null, null);
} }
public Sequences(@Nullable String punctuationPrefix, @Nullable String specialCharPrefix) { public Sequences(@Nullable String chars1Prefix, @Nullable String chars0Prefix) {
final String PUNCTUATION_PREFIX = punctuationPrefix != null ? punctuationPrefix : ""; final String CHARS_1_PREFIX = chars1Prefix != null ? chars1Prefix : "";
final String SPECIAL_CHAR_PREFIX = specialCharPrefix != null ? specialCharPrefix : ""; final String CHARS_0_PREFIX = chars0Prefix != null ? chars0Prefix : "";
PUNCTUATION_SEQUENCE = PUNCTUATION_PREFIX + PUNCTUATION_KEY; CHARS_1_SEQUENCE = CHARS_1_PREFIX + CHARS_1_KEY;
PUNCTUATION_PREFIX_LENGTH = PUNCTUATION_PREFIX.length(); 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; CUSTOM_EMOJI_SEQUENCE = EMOJI_SEQUENCE + CUSTOM_EMOJI_KEY;
WHITESPACE_SEQUENCE = SPECIAL_CHAR_PREFIX + SPECIAL_CHAR_KEY; CHARS_0_SEQUENCE = CHARS_0_PREFIX + CHARS_0_KEY;
PREFERRED_CHAR_SEQUENCE = WHITESPACE_SEQUENCE + SPECIAL_CHAR_KEY; PREFERRED_CHAR_SEQUENCE = CHARS_0_SEQUENCE + CHARS_0_KEY;
SPECIAL_CHAR_SEQUENCE = SPECIAL_CHAR_PREFIX + SPECIAL_CHAR_KEY + SPECIAL_CHAR_KEY + SPECIAL_CHAR_KEY; CHARS_GROUP_0_SEQUENCE = CHARS_0_PREFIX + CHARS_0_KEY + CHARS_0_KEY + CHARS_0_KEY;
CURRENCY_SEQUENCE = SPECIAL_CHAR_SEQUENCE + SPECIAL_CHAR_KEY; CURRENCY_SEQUENCE = CHARS_GROUP_0_SEQUENCE + CHARS_0_KEY;
} }
public boolean startsWithEmojiSequence(String sequence) { public boolean startsWithEmojiSequence(String sequence) {
@ -52,11 +52,11 @@ public class Sequences {
} }
return return
sequence.equals(PUNCTUATION_SEQUENCE) sequence.equals(CHARS_1_SEQUENCE)
|| sequence.equals(WHITESPACE_SEQUENCE) || sequence.equals(CHARS_0_SEQUENCE)
|| sequence.equals(EMOJI_SEQUENCE) || sequence.equals(EMOJI_SEQUENCE)
|| sequence.equals(PREFERRED_CHAR_SEQUENCE) || sequence.equals(PREFERRED_CHAR_SEQUENCE)
|| sequence.equals(SPECIAL_CHAR_SEQUENCE) || sequence.equals(CHARS_GROUP_0_SEQUENCE)
|| sequence.equals(CURRENCY_SEQUENCE); || sequence.equals(CURRENCY_SEQUENCE);
} }
@ -66,11 +66,11 @@ public class Sequences {
} }
return return
sequence.startsWith(PUNCTUATION_SEQUENCE) sequence.startsWith(CHARS_1_SEQUENCE)
|| sequence.startsWith(WHITESPACE_SEQUENCE) || sequence.startsWith(CHARS_0_SEQUENCE)
|| sequence.startsWith(EMOJI_SEQUENCE) || sequence.startsWith(EMOJI_SEQUENCE)
|| sequence.startsWith(PREFERRED_CHAR_SEQUENCE) || sequence.startsWith(PREFERRED_CHAR_SEQUENCE)
|| sequence.startsWith(SPECIAL_CHAR_SEQUENCE) || sequence.startsWith(CHARS_GROUP_0_SEQUENCE)
|| sequence.startsWith(CURRENCY_SEQUENCE); || sequence.startsWith(CURRENCY_SEQUENCE);
} }
} }

View file

@ -32,12 +32,12 @@ class ItemRestoreDefaultPunctuation extends ItemClickable {
return false; return false;
} }
settings.saveSpecialChars( settings.saveChars0(
language, language,
String.join("", language.getKeyCharacters(0)) String.join("", language.getKeyCharacters(0))
); );
settings.savePunctuation( settings.saveChars1(
language, language,
String.join("", language.getKeyCharacters(1)) String.join("", language.getKeyCharacters(1))
); );

View file

@ -8,20 +8,20 @@ import androidx.annotation.Nullable;
import io.github.sspanak.tt9.preferences.settings.SettingsStore; 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"; public static final String NAME = "punctuation_order_special_chars";
private char[] forbiddenChars; private char[] forbiddenChars;
public PreferenceSpecialCharList(@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, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); }
public PreferenceSpecialCharList(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public PreferenceChars0(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); }
public PreferenceSpecialCharList(@NonNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public PreferenceChars0(@NonNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); }
public PreferenceSpecialCharList(@NonNull Context context) { super(context); } public PreferenceChars0(@NonNull Context context) { super(context); }
@Override @Override
@NonNull @NonNull
protected String getChars() { protected String getChars() {
return getSettings().getSpecialChars(language); return getSettings().getChars0(language);
} }
@ -29,11 +29,11 @@ public class PreferenceSpecialCharList extends AbstractPreferenceCharList {
@Override @Override
protected char[] getForbiddenChars() { protected char[] getForbiddenChars() {
if (forbiddenChars == null) { 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(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; return forbiddenChars;
@ -68,6 +68,6 @@ public class PreferenceSpecialCharList extends AbstractPreferenceCharList {
} }
all.append(currentChars); all.append(currentChars);
getSettings().saveSpecialChars(language, all.toString()); getSettings().saveChars0(language, all.toString());
} }
} }

View file

@ -9,24 +9,24 @@ import androidx.annotation.Nullable;
import io.github.sspanak.tt9.R; import io.github.sspanak.tt9.R;
import io.github.sspanak.tt9.preferences.settings.SettingsStore; 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 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 PreferenceChars1(@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 PreferenceChars1(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); }
public PreferenceSentencePunctuationList(@NonNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public PreferenceChars1(@NonNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); }
public PreferenceSentencePunctuationList(@NonNull Context context) { super(context); } public PreferenceChars1(@NonNull Context context) { super(context); }
@Override @Override
@NonNull @NonNull
protected String getChars() { protected String getChars() {
return getSettings().getPunctuation(language); return getSettings().getChars1(language);
} }
@NonNull @NonNull
@Override @Override
protected char[] getForbiddenChars() { protected char[] getForbiddenChars() {
return SettingsStore.FORBIDDEN_SPECIAL_CHARS; return SettingsStore.FORBIDDEN_CHARS_0;
} }
/** /**
@ -41,7 +41,7 @@ public class PreferenceSentencePunctuationList extends AbstractPreferenceCharLis
@Override @Override
protected String validateMandatoryChars() { protected String validateMandatoryChars() {
return super.validateMandatoryChars(getSettings().getMandatoryPunctuation(language)); return super.validateMandatoryChars(getSettings().getMandatoryChars0(language));
} }
public boolean validateCurrentChars() { public boolean validateCurrentChars() {
@ -62,6 +62,6 @@ public class PreferenceSentencePunctuationList extends AbstractPreferenceCharLis
@Override @Override
public void saveCurrentChars() { public void saveCurrentChars() {
getSettings().savePunctuation(language, currentChars); getSettings().saveChars1(language, currentChars);
} }
} }

View file

@ -14,8 +14,8 @@ public class PunctuationScreen extends BaseScreenFragment {
public static final String NAME = "Punctuation"; public static final String NAME = "Punctuation";
private ItemPunctuationOrderLanguage languageList; private ItemPunctuationOrderLanguage languageList;
private ItemRestoreDefaultPunctuation restoreDefaults; private ItemRestoreDefaultPunctuation restoreDefaults;
private PreferenceSpecialCharList specialCharList; private PreferenceChars0 charList0;
private PreferenceSentencePunctuationList punctuationList; private PreferenceChars1 charList1;
public PunctuationScreen() { init(); } public PunctuationScreen() { init(); }
public PunctuationScreen(PreferencesActivity activity) { init(activity); } public PunctuationScreen(PreferencesActivity activity) { init(activity); }
@ -44,8 +44,8 @@ public class PunctuationScreen extends BaseScreenFragment {
@Override @Override
protected void onCreate() { protected void onCreate() {
specialCharList = findPreference(PreferenceSpecialCharList.NAME); charList0 = findPreference(PreferenceChars0.NAME);
punctuationList = findPreference(PreferenceSentencePunctuationList.NAME); charList1 = findPreference(PreferenceChars1.NAME);
initLanguageList(); initLanguageList();
initResetDefaults(); initResetDefaults();
@ -87,11 +87,11 @@ public class PunctuationScreen extends BaseScreenFragment {
private void onSaveOrdering() { 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); UI.toastShortSingle(activity, R.string.punctuation_order_save_error);
} else { } else {
specialCharList.saveCurrentChars(); charList0.saveCurrentChars();
punctuationList.saveCurrentChars(); charList1.saveCurrentChars();
} }
} }
@ -101,19 +101,19 @@ public class PunctuationScreen extends BaseScreenFragment {
restoreDefaults.setLanguage(language); restoreDefaults.setLanguage(language);
if (specialCharList != null) { if (charList0 != null) {
specialCharList.onLanguageChange(language); charList0.onLanguageChange(language);
} }
if (punctuationList != null) { if (charList1 != null) {
punctuationList.onLanguageChange(language); charList1.onLanguageChange(language);
} }
} }
private void loadCharLists() { private void loadCharLists() {
loadCharList(findPreference(PreferenceSpecialCharList.NAME)); loadCharList(findPreference(PreferenceChars0.NAME));
loadCharList(findPreference(PreferenceSentencePunctuationList.NAME)); loadCharList(findPreference(PreferenceChars1.NAME));
} }

View file

@ -11,10 +11,10 @@ import io.github.sspanak.tt9.languages.LanguageKind;
import io.github.sspanak.tt9.util.chars.Characters; import io.github.sspanak.tt9.util.chars.Characters;
class SettingsPunctuation extends SettingsInput { class SettingsPunctuation extends SettingsInput {
private final static String KEY_PREFIX_PUNCTUATION = "pref_punctuation_"; private final static String CHARS_1_PREFIX = "pref_punctuation_";
private final static String KEY_PREFIX_SPECIAL = "pref_special_chars_"; private final static String CHARS_0_PREFIX = "pref_special_chars_";
private final static char[] MANDATORY_EU_PUNCTUATION = new char[] {'\'', '"', '-'}; private final static char[] MANDATORY_CHARS_1_EU = new char[] {'\'', '"', '-'};
public final static char[] FORBIDDEN_SPECIAL_CHARS = new char[] {' ', '\n', '\t'}; public final static char[] FORBIDDEN_CHARS_0 = new char[] {' ', '\n', '\t'};
SettingsPunctuation(Context context) { SettingsPunctuation(Context context) {
@ -22,56 +22,56 @@ class SettingsPunctuation extends SettingsInput {
} }
public char[] getMandatoryPunctuation(Language language) { public char[] getMandatoryChars0(Language language) {
return LanguageKind.isCyrillic(language) || LanguageKind.isLatinBased(language) ? MANDATORY_EU_PUNCTUATION : new char[0]; return LanguageKind.isCyrillic(language) || LanguageKind.isLatinBased(language) ? MANDATORY_CHARS_1_EU : new char[0];
} }
public void savePunctuation(@NonNull Language language, @NonNull String punctuation) { public void saveChars1(@NonNull Language language, @NonNull String punctuation) {
prefsEditor.putString(KEY_PREFIX_PUNCTUATION + language.getId(), punctuation); prefsEditor.putString(CHARS_1_PREFIX + language.getId(), punctuation);
prefsEditor.apply(); prefsEditor.apply();
} }
public void saveSpecialChars(@NonNull Language language, @NonNull String specialChars) { public void saveChars0(@NonNull Language language, @NonNull String specialChars) {
String safeChars = specialChars String safeChars = specialChars
.replace("\n", "") .replace("\n", "")
.replace("\t", Characters.TAB); .replace("\t", Characters.TAB);
prefsEditor.putString(KEY_PREFIX_SPECIAL + language.getId(), safeChars); prefsEditor.putString(CHARS_0_PREFIX + language.getId(), safeChars);
prefsEditor.apply(); prefsEditor.apply();
} }
@NonNull public String getPunctuation(Language language) { @NonNull public String getChars1(Language language) {
return String.join("", getPunctuationAsList(language)); return String.join("", getChars1AsList(language));
} }
@NonNull public String getSpecialChars(Language language) { @NonNull public String getChars0(Language language) {
return String.join("", getSpecialCharsAsList(language)); return String.join("", getChars0AsList(language));
} }
@NonNull @NonNull
public ArrayList<String> getPunctuationAsList(Language language) { public ArrayList<String> getChars1AsList(Language language) {
if (language == null) { if (language == null) {
return new ArrayList<>(); return new ArrayList<>();
} }
return getCharsAsList( return getCharsAsList(
prefs.getString(KEY_PREFIX_PUNCTUATION + language.getId(), null), prefs.getString(CHARS_1_PREFIX + language.getId(), null),
language.getKeyCharacters(1) language.getKeyCharacters(1)
); );
} }
@NonNull @NonNull
public ArrayList<String> getSpecialCharsAsList(Language language) { public ArrayList<String> getChars0AsList(Language language) {
if (language == null) { if (language == null) {
return new ArrayList<>(); 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( return getCharsAsList(
safeChars == null ? null : safeChars.replace("", "\n").replace(Characters.TAB, "\t"), safeChars == null ? null : safeChars.replace("", "\n").replace(Characters.TAB, "\t"),
@ -83,8 +83,8 @@ class SettingsPunctuation extends SettingsInput {
@NonNull @NonNull
public ArrayList<String> getOrderedKeyChars(Language language, int number) { public ArrayList<String> getOrderedKeyChars(Language language, int number) {
return switch (number) { return switch (number) {
case 0 -> getSpecialCharsAsList(language); case 0 -> getChars0AsList(language);
case 1 -> getPunctuationAsList(language); case 1 -> getChars1AsList(language);
default -> language != null ? language.getKeyCharacters(number) : new ArrayList<>(); default -> language != null ? language.getKeyCharacters(number) : new ArrayList<>();
}; };
} }

View file

@ -5,11 +5,11 @@
android:key="punctuation_order_language" android:key="punctuation_order_language"
android:title="@string/language" /> android:title="@string/language" />
<io.github.sspanak.tt9.preferences.screens.punctuation.PreferenceSentencePunctuationList <io.github.sspanak.tt9.preferences.screens.punctuation.PreferenceChars1
android:key="punctuation_order_sentence" android:key="punctuation_order_sentence"
android:title="@string/punctuation_order_sentence" /> android:title="@string/punctuation_order_sentence" />
<io.github.sspanak.tt9.preferences.screens.punctuation.PreferenceSpecialCharList <io.github.sspanak.tt9.preferences.screens.punctuation.PreferenceChars0
android:key="punctuation_order_special_chars" android:key="punctuation_order_special_chars"
android:title="@string/punctuation_order_special"/> android:title="@string/punctuation_order_special"/>