refactoring: more generic special char variable and function names
This commit is contained in:
parent
f77f98aa51
commit
d7004a1a1e
14 changed files with 116 additions and 116 deletions
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
);
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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<String> getPunctuationAsList(Language language) {
|
||||
public ArrayList<String> 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<String> getSpecialCharsAsList(Language language) {
|
||||
public ArrayList<String> 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<String> 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<>();
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,11 +5,11 @@
|
|||
android:key="punctuation_order_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: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:title="@string/punctuation_order_special"/>
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue