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 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));

View file

@ -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);
}
}

View file

@ -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));
}

View file

@ -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)
);
}

View file

@ -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;
}

View file

@ -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;
}

View file

@ -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);
}

View file

@ -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);
}
}

View file

@ -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))
);

View file

@ -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());
}
}

View file

@ -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);
}
}

View file

@ -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));
}

View file

@ -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<>();
};
}

View file

@ -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"/>