new way of special char grouping
This commit is contained in:
parent
d7004a1a1e
commit
0164e951cd
25 changed files with 251 additions and 127 deletions
|
|
@ -87,13 +87,12 @@ abstract public class InputMode {
|
||||||
public void onAcceptSuggestion(@NonNull String word, boolean preserveWordList) {}
|
public void onAcceptSuggestion(@NonNull String word, boolean preserveWordList) {}
|
||||||
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;
|
||||||
case SuggestionsBar.SHOW_SPECIAL_CHARS_SUGGESTION -> seq.CHARS_GROUP_0_SEQUENCE;
|
if (SuggestionsBar.SHOW_GROUP_0_SUGGESTION.equalsIgnoreCase(rawWord)) {
|
||||||
case SuggestionsBar.SHOW_CURRENCIES_SUGGESTION -> seq.CURRENCY_SEQUENCE;
|
newSequence = seq.CHARS_GROUP_0_SEQUENCE;
|
||||||
default -> null;
|
} else if (SuggestionsBar.SHOW_GROUP_1_SUGGESTION.equalsIgnoreCase(rawWord)) {
|
||||||
};
|
newSequence = seq.CHARS_GROUP_1_SEQUENCE;
|
||||||
|
} else {
|
||||||
if (newSequence == null) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -209,18 +208,6 @@ abstract public class InputMode {
|
||||||
protected String adjustSuggestionTextCase(String word, int newTextCase) { return word; }
|
protected String adjustSuggestionTextCase(String word, int newTextCase) { return word; }
|
||||||
|
|
||||||
|
|
||||||
protected ArrayList<String> getAbbreviatedSpecialChars() {
|
|
||||||
ArrayList<String> special = Characters.getWhitespaces(language);
|
|
||||||
if (!Characters.getCurrencies(language).isEmpty()) {
|
|
||||||
special.add(SuggestionsBar.SHOW_CURRENCIES_SUGGESTION);
|
|
||||||
}
|
|
||||||
if (!settings.getChars0(language).isEmpty()) {
|
|
||||||
special.add(SuggestionsBar.SHOW_SPECIAL_CHARS_SUGGESTION);
|
|
||||||
}
|
|
||||||
return special;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads the special characters for 0-key or 1-key. For 0-key, this could be a minimized (show more)
|
* Loads the special characters for 0-key or 1-key. For 0-key, this could be a minimized (show more)
|
||||||
* special character list, or the whitespace list.
|
* special character list, or the whitespace list.
|
||||||
|
|
@ -228,12 +215,12 @@ abstract public class InputMode {
|
||||||
protected boolean loadSpecialCharacters() {
|
protected boolean loadSpecialCharacters() {
|
||||||
suggestions.clear();
|
suggestions.clear();
|
||||||
|
|
||||||
if (digitSequence.equals(seq.CHARS_GROUP_0_SEQUENCE) || digitSequence.equals(seq.CHARS_1_SEQUENCE)) {
|
if (digitSequence.equals(seq.CHARS_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.CHARS_GROUP_0_SEQUENCE)) {
|
||||||
suggestions.addAll(Characters.getCurrencies(language));
|
suggestions.addAll(settings.getCharsExtraAsList(language, SettingsStore.CHARS_GROUP_0));
|
||||||
} else {
|
} else if (digitSequence.equals(seq.CHARS_GROUP_1_SEQUENCE)) {
|
||||||
suggestions.addAll(getAbbreviatedSpecialChars());
|
suggestions.addAll(settings.getCharsExtraAsList(language, SettingsStore.CHARS_GROUP_1));
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,9 @@ class Mode123 extends ModePassthrough {
|
||||||
*/
|
*/
|
||||||
private void setDefaultSpecialCharacters() {
|
private void setDefaultSpecialCharacters() {
|
||||||
Language english = LanguageCollection.getByLocale("en");
|
Language english = LanguageCollection.getByLocale("en");
|
||||||
KEY_CHARACTERS.add(getAbbreviatedSpecialChars());
|
KEY_CHARACTERS.add(
|
||||||
|
TextTools.removeLettersFromList(orderCharsForNumericField(settings.getOrderedKeyChars(english, 0), null))
|
||||||
|
);
|
||||||
KEY_CHARACTERS.add(
|
KEY_CHARACTERS.add(
|
||||||
TextTools.removeLettersFromList(orderCharsForNumericField(settings.getOrderedKeyChars(english, 1), null))
|
TextTools.removeLettersFromList(orderCharsForNumericField(settings.getOrderedKeyChars(english, 1), null))
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -87,8 +87,6 @@ class ModeABC extends InputMode {
|
||||||
if (isEmailMode) {
|
if (isEmailMode) {
|
||||||
KEY_CHARACTERS.add(Characters.orderByList(Characters.Email.get(0), settings.getOrderedKeyChars(language, 0), true));
|
KEY_CHARACTERS.add(Characters.orderByList(Characters.Email.get(0), settings.getOrderedKeyChars(language, 0), true));
|
||||||
KEY_CHARACTERS.add(Characters.orderByList(Characters.Email.get(1), settings.getOrderedKeyChars(language, 1), true));
|
KEY_CHARACTERS.add(Characters.orderByList(Characters.Email.get(1), settings.getOrderedKeyChars(language, 1), true));
|
||||||
} else {
|
|
||||||
KEY_CHARACTERS.add(getAbbreviatedSpecialChars());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
refreshSuggestions();
|
refreshSuggestions();
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,7 @@ public class ModeBopomofo extends ModePinyin {
|
||||||
*/
|
*/
|
||||||
protected void setCustomSpecialCharacters() {
|
protected void setCustomSpecialCharacters() {
|
||||||
// special
|
// special
|
||||||
KEY_CHARACTERS.add(getAbbreviatedSpecialChars());
|
KEY_CHARACTERS.add(TextTools.removeLettersFromList(Characters.orderByList(Characters.Special, settings.getOrderedKeyChars(language, 0), false)));
|
||||||
KEY_CHARACTERS.get(0).add(0, "0");
|
KEY_CHARACTERS.get(0).add(0, "0");
|
||||||
|
|
||||||
// punctuation
|
// punctuation
|
||||||
|
|
@ -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.CHARS_GROUP_0_SEQUENCE.equals(digitSequence) && !seq.CURRENCY_SEQUENCE.equals(digitSequence)) {
|
} else if (!seq.CHARS_GROUP_0_SEQUENCE.equals(digitSequence) && !seq.CHARS_GROUP_1_SEQUENCE.equals(digitSequence)) {
|
||||||
digitSequence += String.valueOf(nextNumber);
|
digitSequence += String.valueOf(nextNumber);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -62,12 +62,12 @@ class ModeCheonjiin extends InputMode {
|
||||||
*/
|
*/
|
||||||
protected void setCustomSpecialCharacters() {
|
protected void setCustomSpecialCharacters() {
|
||||||
// special
|
// special
|
||||||
KEY_CHARACTERS.add(getAbbreviatedSpecialChars());
|
KEY_CHARACTERS.add(TextTools.removeLettersFromList(settings.getOrderedKeyChars(language, 0)));
|
||||||
KEY_CHARACTERS.get(0).add(0, "0");
|
KEY_CHARACTERS.get(0).add(0, "0");
|
||||||
|
|
||||||
// punctuation
|
// punctuation
|
||||||
KEY_CHARACTERS.add(
|
KEY_CHARACTERS.add(
|
||||||
TextTools.removeLettersFromList(Characters.orderByList(Characters.PunctuationKorean, settings.getOrderedKeyChars(language, 1), false))
|
TextTools.removeLettersFromList(settings.getOrderedKeyChars(language, 1))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -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.CHARS_GROUP_0_SEQUENCE)) {
|
if (digitSequence.equals(seq.CHARS_GROUP_1_SEQUENCE)) {
|
||||||
|
digitSequence = seq.CHARS_1_SEQUENCE;
|
||||||
|
} else if (digitSequence.equals(seq.CHARS_GROUP_0_SEQUENCE)) {
|
||||||
digitSequence = seq.CHARS_0_SEQUENCE;
|
digitSequence = seq.CHARS_0_SEQUENCE;
|
||||||
} else if (digitSequence.equals(seq.CHARS_1_SEQUENCE)) {
|
} else if (digitSequence.equals(seq.CHARS_0_SEQUENCE) || digitSequence.equals(seq.CHARS_1_SEQUENCE) || (!digitSequence.startsWith(seq.CHARS_1_SEQUENCE) && Cheonjiin.isSingleJamo(digitSequence))) {
|
||||||
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);
|
||||||
|
|
@ -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.CHARS_GROUP_0_SEQUENCE.equals(digitSequence) && !seq.CURRENCY_SEQUENCE.equals(digitSequence)) {
|
} else if (!seq.CHARS_GROUP_0_SEQUENCE.equals(digitSequence) && !seq.CHARS_GROUP_1_SEQUENCE.equals(digitSequence)) {
|
||||||
digitSequence += String.valueOf(nextNumber);
|
digitSequence += String.valueOf(nextNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -269,7 +269,7 @@ class ModeCheonjiin extends InputMode {
|
||||||
return
|
return
|
||||||
digitSequence.equals(seq.CHARS_1_SEQUENCE)
|
digitSequence.equals(seq.CHARS_1_SEQUENCE)
|
||||||
|| digitSequence.equals(seq.CHARS_0_SEQUENCE)
|
|| digitSequence.equals(seq.CHARS_0_SEQUENCE)
|
||||||
|| digitSequence.equals(seq.CURRENCY_SEQUENCE)
|
|| digitSequence.equals(seq.CHARS_GROUP_1_SEQUENCE)
|
||||||
|| digitSequence.equals(seq.CHARS_GROUP_0_SEQUENCE);
|
|| digitSequence.equals(seq.CHARS_GROUP_0_SEQUENCE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -47,10 +47,7 @@ class ModeWords extends ModeCheonjiin {
|
||||||
determineTextFieldTextCase();
|
determineTextFieldTextCase();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override protected void setCustomSpecialCharacters() {} // use defaults
|
||||||
@Override protected void setCustomSpecialCharacters() {
|
|
||||||
KEY_CHARACTERS.add(getAbbreviatedSpecialChars()); // special
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -69,7 +66,9 @@ class ModeWords extends ModeCheonjiin {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (digitSequence.equals(seq.CURRENCY_SEQUENCE) || digitSequence.equals(seq.CHARS_GROUP_0_SEQUENCE)) {
|
if (digitSequence.equals(seq.CHARS_GROUP_1_SEQUENCE)) {
|
||||||
|
digitSequence = seq.CHARS_1_SEQUENCE;
|
||||||
|
} else if (digitSequence.equals(seq.CHARS_GROUP_0_SEQUENCE)) {
|
||||||
digitSequence = seq.CHARS_0_SEQUENCE;
|
digitSequence = seq.CHARS_0_SEQUENCE;
|
||||||
} else {
|
} else {
|
||||||
digitSequence = digitSequence.substring(0, digitSequence.length() - 1);
|
digitSequence = digitSequence.substring(0, digitSequence.length() - 1);
|
||||||
|
|
@ -404,7 +403,7 @@ 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.CHARS_GROUP_0_SEQUENCE) || digitSequence.equals(seq.CURRENCY_SEQUENCE);
|
boolean specialOrCurrency = digitSequence.equals(seq.CHARS_GROUP_0_SEQUENCE) || digitSequence.equals(seq.CHARS_GROUP_1_SEQUENCE);
|
||||||
boolean isWhitespaceAndScrolled = digitSequence.equals(seq.CHARS_0_SEQUENCE) && !stem.isEmpty();
|
boolean isWhitespaceAndScrolled = digitSequence.equals(seq.CHARS_0_SEQUENCE) && !stem.isEmpty();
|
||||||
if (nextKey == Sequences.CHARS_0_KEY && (isWhitespaceAndScrolled || specialOrCurrency)) {
|
if (nextKey == Sequences.CHARS_0_KEY && (isWhitespaceAndScrolled || specialOrCurrency)) {
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -14,11 +14,11 @@ public class Sequences {
|
||||||
@NonNull public final String CHARS_1_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 CHARS_GROUP_1_SEQUENCE;
|
||||||
|
|
||||||
@NonNull public final String CURRENCY_SEQUENCE;
|
@NonNull public final String CHARS_0_SEQUENCE;
|
||||||
@NonNull public final String PREFERRED_CHAR_SEQUENCE;
|
@NonNull public final String PREFERRED_CHAR_SEQUENCE;
|
||||||
@NonNull public final String CHARS_GROUP_0_SEQUENCE;
|
@NonNull public final String CHARS_GROUP_0_SEQUENCE;
|
||||||
@NonNull public final String CHARS_0_SEQUENCE;
|
|
||||||
|
|
||||||
public Sequences() {
|
public Sequences() {
|
||||||
this(null, null);
|
this(null, null);
|
||||||
|
|
@ -33,11 +33,11 @@ public class Sequences {
|
||||||
|
|
||||||
EMOJI_SEQUENCE = CHARS_1_SEQUENCE + CHARS_1_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;
|
||||||
|
CHARS_GROUP_1_SEQUENCE = CHARS_1_SEQUENCE + 'G' + CHARS_1_KEY;
|
||||||
|
|
||||||
CHARS_0_SEQUENCE = CHARS_0_PREFIX + CHARS_0_KEY;
|
CHARS_0_SEQUENCE = CHARS_0_PREFIX + CHARS_0_KEY;
|
||||||
PREFERRED_CHAR_SEQUENCE = CHARS_0_SEQUENCE + 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;
|
CHARS_GROUP_0_SEQUENCE = CHARS_0_SEQUENCE + 'G' + CHARS_0_KEY;
|
||||||
CURRENCY_SEQUENCE = CHARS_GROUP_0_SEQUENCE + CHARS_0_KEY;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean startsWithEmojiSequence(String sequence) {
|
public boolean startsWithEmojiSequence(String sequence) {
|
||||||
|
|
@ -57,7 +57,7 @@ public class Sequences {
|
||||||
|| sequence.equals(EMOJI_SEQUENCE)
|
|| sequence.equals(EMOJI_SEQUENCE)
|
||||||
|| sequence.equals(PREFERRED_CHAR_SEQUENCE)
|
|| sequence.equals(PREFERRED_CHAR_SEQUENCE)
|
||||||
|| sequence.equals(CHARS_GROUP_0_SEQUENCE)
|
|| sequence.equals(CHARS_GROUP_0_SEQUENCE)
|
||||||
|| sequence.equals(CURRENCY_SEQUENCE);
|
|| sequence.equals(CHARS_GROUP_1_SEQUENCE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean startsWithAnySpecialCharSequence(String sequence) {
|
public boolean startsWithAnySpecialCharSequence(String sequence) {
|
||||||
|
|
@ -71,6 +71,6 @@ public class Sequences {
|
||||||
|| sequence.startsWith(EMOJI_SEQUENCE)
|
|| sequence.startsWith(EMOJI_SEQUENCE)
|
||||||
|| sequence.startsWith(PREFERRED_CHAR_SEQUENCE)
|
|| sequence.startsWith(PREFERRED_CHAR_SEQUENCE)
|
||||||
|| sequence.startsWith(CHARS_GROUP_0_SEQUENCE)
|
|| sequence.startsWith(CHARS_GROUP_0_SEQUENCE)
|
||||||
|| sequence.startsWith(CURRENCY_SEQUENCE);
|
|| sequence.startsWith(CHARS_GROUP_1_SEQUENCE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,64 @@
|
||||||
|
package io.github.sspanak.tt9.preferences.screens.punctuation;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.util.AttributeSet;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
|
import io.github.sspanak.tt9.preferences.settings.SettingsStore;
|
||||||
|
|
||||||
|
public class PreferenceCharsExtra extends AbstractPreferenceCharList {
|
||||||
|
public static final String[] NAMES = {
|
||||||
|
SettingsStore.CHARS_GROUP_0,
|
||||||
|
SettingsStore.CHARS_AFTER_GROUP_0,
|
||||||
|
SettingsStore.CHARS_GROUP_1,
|
||||||
|
SettingsStore.CHARS_AFTER_GROUP_1
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
private char[] forbiddenChars;
|
||||||
|
|
||||||
|
public PreferenceCharsExtra(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); }
|
||||||
|
public PreferenceCharsExtra(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); }
|
||||||
|
public PreferenceCharsExtra(@NonNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); }
|
||||||
|
public PreferenceCharsExtra(@NonNull Context context) { super(context); }
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
protected String getChars() {
|
||||||
|
return getSettings().getCharsExtra(language, getKey());
|
||||||
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
protected char[] getForbiddenChars() {
|
||||||
|
if (forbiddenChars == null) {
|
||||||
|
char[] mandatoryChars = getSettings().getMandatoryChars0(language);
|
||||||
|
|
||||||
|
forbiddenChars = new char[mandatoryChars.length + SettingsStore.FORBIDDEN_CHARS_0.length];
|
||||||
|
System.arraycopy(mandatoryChars, 0, forbiddenChars, 0, mandatoryChars.length);
|
||||||
|
System.arraycopy(SettingsStore.FORBIDDEN_CHARS_0, 0, forbiddenChars, mandatoryChars.length, SettingsStore.FORBIDDEN_CHARS_0.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
return forbiddenChars;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
protected char[] getMandatoryChars() {
|
||||||
|
return new char[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean validateCurrentChars() {
|
||||||
|
String error = validateForbiddenChars();
|
||||||
|
setError(error);
|
||||||
|
return error.isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void saveCurrentChars() {
|
||||||
|
getSettings().saveCharsExtra(language, getKey(), currentChars);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -3,6 +3,8 @@ package io.github.sspanak.tt9.preferences.screens.punctuation;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import io.github.sspanak.tt9.R;
|
import io.github.sspanak.tt9.R;
|
||||||
import io.github.sspanak.tt9.languages.Language;
|
import io.github.sspanak.tt9.languages.Language;
|
||||||
import io.github.sspanak.tt9.languages.LanguageCollection;
|
import io.github.sspanak.tt9.languages.LanguageCollection;
|
||||||
|
|
@ -14,8 +16,7 @@ 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 PreferenceChars0 charList0;
|
private final ArrayList<AbstractPreferenceCharList> charLists = new ArrayList<>();
|
||||||
private PreferenceChars1 charList1;
|
|
||||||
|
|
||||||
public PunctuationScreen() { init(); }
|
public PunctuationScreen() { init(); }
|
||||||
public PunctuationScreen(PreferencesActivity activity) { init(activity); }
|
public PunctuationScreen(PreferencesActivity activity) { init(activity); }
|
||||||
|
|
@ -44,8 +45,11 @@ public class PunctuationScreen extends BaseScreenFragment {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate() {
|
protected void onCreate() {
|
||||||
charList0 = findPreference(PreferenceChars0.NAME);
|
charLists.add(findPreference(PreferenceChars0.NAME));
|
||||||
charList1 = findPreference(PreferenceChars1.NAME);
|
charLists.add(findPreference(PreferenceChars1.NAME));
|
||||||
|
for (int i = 0; i < PreferenceCharsExtra.NAMES.length; i++) {
|
||||||
|
charLists.add(findPreference(PreferenceCharsExtra.NAMES[i]));
|
||||||
|
}
|
||||||
|
|
||||||
initLanguageList();
|
initLanguageList();
|
||||||
initResetDefaults();
|
initResetDefaults();
|
||||||
|
|
@ -87,11 +91,15 @@ public class PunctuationScreen extends BaseScreenFragment {
|
||||||
|
|
||||||
|
|
||||||
private void onSaveOrdering() {
|
private void onSaveOrdering() {
|
||||||
if (charList0 == null || !charList0.validateCurrentChars() || charList1 == null || !charList1.validateCurrentChars()) {
|
for (AbstractPreferenceCharList charList : charLists) {
|
||||||
UI.toastShortSingle(activity, R.string.punctuation_order_save_error);
|
if (charList == null || !charList.validateCurrentChars()) {
|
||||||
} else {
|
UI.toastShortSingle(activity, R.string.punctuation_order_save_error);
|
||||||
charList0.saveCurrentChars();
|
return;
|
||||||
charList1.saveCurrentChars();
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (AbstractPreferenceCharList charList : charLists) {
|
||||||
|
charList.saveCurrentChars();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -101,30 +109,23 @@ public class PunctuationScreen extends BaseScreenFragment {
|
||||||
|
|
||||||
restoreDefaults.setLanguage(language);
|
restoreDefaults.setLanguage(language);
|
||||||
|
|
||||||
if (charList0 != null) {
|
for (AbstractPreferenceCharList list : charLists) {
|
||||||
charList0.onLanguageChange(language);
|
if (list != null) {
|
||||||
}
|
list.onLanguageChange(language);
|
||||||
|
}
|
||||||
if (charList1 != null) {
|
|
||||||
charList1.onLanguageChange(language);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void loadCharLists() {
|
private void loadCharLists() {
|
||||||
loadCharList(findPreference(PreferenceChars0.NAME));
|
for (AbstractPreferenceCharList list : charLists) {
|
||||||
loadCharList(findPreference(PreferenceChars1.NAME));
|
if (list == null) {
|
||||||
}
|
continue;
|
||||||
|
}
|
||||||
|
list.setOnRender(() -> {
|
||||||
private void loadCharList(AbstractPreferenceCharList list) {
|
list.setOnRender(null);
|
||||||
if (list == null) {
|
onLanguageChanged(languageList.getValue());
|
||||||
return;
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
list.setOnRender(() -> {
|
|
||||||
list.setOnRender(null);
|
|
||||||
onLanguageChanged(languageList.getValue());
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,18 @@ import java.util.ArrayList;
|
||||||
|
|
||||||
import io.github.sspanak.tt9.languages.Language;
|
import io.github.sspanak.tt9.languages.Language;
|
||||||
import io.github.sspanak.tt9.languages.LanguageKind;
|
import io.github.sspanak.tt9.languages.LanguageKind;
|
||||||
|
import io.github.sspanak.tt9.ui.tray.SuggestionsBar;
|
||||||
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 CHARS_1_PREFIX = "pref_punctuation_";
|
private final static String CHARS_1_PREFIX = "pref_punctuation_";
|
||||||
|
public final static String CHARS_GROUP_1 = "punctuation_order_key_1_group";
|
||||||
|
public final static String CHARS_AFTER_GROUP_1 = "punctuation_order_key_1_after_group";
|
||||||
|
|
||||||
private final static String CHARS_0_PREFIX = "pref_special_chars_";
|
private final static String CHARS_0_PREFIX = "pref_special_chars_";
|
||||||
|
public final static String CHARS_GROUP_0 = "punctuation_order_key_0_group";
|
||||||
|
public final static String CHARS_AFTER_GROUP_0 = "punctuation_order_key_0_after_group";
|
||||||
|
|
||||||
private final static char[] MANDATORY_CHARS_1_EU = new char[] {'\'', '"', '-'};
|
private final static char[] MANDATORY_CHARS_1_EU = new char[] {'\'', '"', '-'};
|
||||||
public final static char[] FORBIDDEN_CHARS_0 = new char[] {' ', '\n', '\t'};
|
public final static char[] FORBIDDEN_CHARS_0 = new char[] {' ', '\n', '\t'};
|
||||||
|
|
||||||
|
|
@ -27,14 +34,14 @@ class SettingsPunctuation extends SettingsInput {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void saveChars1(@NonNull Language language, @NonNull String punctuation) {
|
public void saveChars1(@NonNull Language language, @NonNull String chars) {
|
||||||
prefsEditor.putString(CHARS_1_PREFIX + language.getId(), punctuation);
|
prefsEditor.putString(CHARS_1_PREFIX + language.getId(), chars);
|
||||||
prefsEditor.apply();
|
prefsEditor.apply();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void saveChars0(@NonNull Language language, @NonNull String specialChars) {
|
public void saveChars0(@NonNull Language language, @NonNull String chars) {
|
||||||
String safeChars = specialChars
|
String safeChars = chars
|
||||||
.replace("\n", "⏎")
|
.replace("\n", "⏎")
|
||||||
.replace("\t", Characters.TAB);
|
.replace("\t", Characters.TAB);
|
||||||
prefsEditor.putString(CHARS_0_PREFIX + language.getId(), safeChars);
|
prefsEditor.putString(CHARS_0_PREFIX + language.getId(), safeChars);
|
||||||
|
|
@ -42,6 +49,12 @@ class SettingsPunctuation extends SettingsInput {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void saveCharsExtra(@NonNull Language language, @NonNull String listKey, @NonNull String chars) {
|
||||||
|
prefsEditor.putString(listKey + "_" + language.getId(), chars);
|
||||||
|
prefsEditor.apply();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@NonNull public String getChars1(Language language) {
|
@NonNull public String getChars1(Language language) {
|
||||||
return String.join("", getChars1AsList(language));
|
return String.join("", getChars1AsList(language));
|
||||||
}
|
}
|
||||||
|
|
@ -52,6 +65,11 @@ class SettingsPunctuation extends SettingsInput {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@NonNull public String getCharsExtra(Language language, String listKey) {
|
||||||
|
return prefs.getString(listKey + "_" + language.getId(), "");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
public ArrayList<String> getChars1AsList(Language language) {
|
public ArrayList<String> getChars1AsList(Language language) {
|
||||||
if (language == null) {
|
if (language == null) {
|
||||||
|
|
@ -80,13 +98,40 @@ class SettingsPunctuation extends SettingsInput {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public ArrayList<String> getCharsExtraAsList(Language language, String listKey) {
|
||||||
|
return getCharsAsList(getCharsExtra(language, listKey), new ArrayList<>());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
public ArrayList<String> getOrderedKeyChars(Language language, int number) {
|
public ArrayList<String> getOrderedKeyChars(Language language, int number) {
|
||||||
return switch (number) {
|
if (language == null) {
|
||||||
case 0 -> getChars0AsList(language);
|
return new ArrayList<>();
|
||||||
case 1 -> getChars1AsList(language);
|
}
|
||||||
default -> language != null ? language.getKeyCharacters(number) : new ArrayList<>();
|
|
||||||
};
|
ArrayList<String> chars;
|
||||||
|
|
||||||
|
switch (number) {
|
||||||
|
case 0 -> {
|
||||||
|
chars = getChars0AsList(language);
|
||||||
|
if (!getCharsExtra(language, CHARS_GROUP_0).isEmpty()) {
|
||||||
|
chars.add(SuggestionsBar.SHOW_GROUP_0_SUGGESTION);
|
||||||
|
}
|
||||||
|
chars.addAll(getCharsExtraAsList(language, CHARS_AFTER_GROUP_0));
|
||||||
|
}
|
||||||
|
case 1 -> {
|
||||||
|
chars = getChars1AsList(language);
|
||||||
|
if (!getCharsExtra(language, CHARS_GROUP_1).isEmpty()) {
|
||||||
|
chars.add(SuggestionsBar.SHOW_GROUP_1_SUGGESTION);
|
||||||
|
}
|
||||||
|
chars.addAll(getCharsExtraAsList(language, CHARS_AFTER_GROUP_1));
|
||||||
|
}
|
||||||
|
default -> {
|
||||||
|
return language.getKeyCharacters(number);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return chars;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,8 +27,8 @@ import io.github.sspanak.tt9.util.TextTools;
|
||||||
import io.github.sspanak.tt9.util.chars.Characters;
|
import io.github.sspanak.tt9.util.chars.Characters;
|
||||||
|
|
||||||
public class SuggestionsBar {
|
public class SuggestionsBar {
|
||||||
public static final String SHOW_SPECIAL_CHARS_SUGGESTION = "#%…";
|
public static final String SHOW_GROUP_0_SUGGESTION = "(…\u200A)";
|
||||||
public static final String SHOW_CURRENCIES_SUGGESTION = "$€…";
|
public static final String SHOW_GROUP_1_SUGGESTION = "(…\u200B)";
|
||||||
|
|
||||||
private final String SHOW_MORE_SUGGESTION = "(...)";
|
private final String SHOW_MORE_SUGGESTION = "(...)";
|
||||||
private final String STEM_SUFFIX = "… +";
|
private final String STEM_SUFFIX = "… +";
|
||||||
|
|
@ -146,7 +146,7 @@ public class SuggestionsBar {
|
||||||
String suggestion = getRaw(id);
|
String suggestion = getRaw(id);
|
||||||
|
|
||||||
// show more...
|
// show more...
|
||||||
if (suggestion.equals(SHOW_MORE_SUGGESTION) || suggestion.equals(SHOW_CURRENCIES_SUGGESTION) || suggestion.equals(SHOW_SPECIAL_CHARS_SUGGESTION)) {
|
if (suggestion.equals(SHOW_MORE_SUGGESTION) || suggestion.equalsIgnoreCase(SHOW_GROUP_1_SUGGESTION) || suggestion.equalsIgnoreCase(SHOW_GROUP_0_SUGGESTION)) {
|
||||||
return Characters.PLACEHOLDER;
|
return Characters.PLACEHOLDER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -200,8 +200,8 @@
|
||||||
<string name="punctuation_order_mandatory_char_missing">Липсва задължителен символ:%1$s</string>
|
<string name="punctuation_order_mandatory_char_missing">Липсва задължителен символ:%1$s</string>
|
||||||
<string name="punctuation_order_mandatory_chars_missing">Липсват задължителни символи:%1$s</string>
|
<string name="punctuation_order_mandatory_chars_missing">Липсват задължителни символи:%1$s</string>
|
||||||
<string name="punctuation_order_save_error">Неуспешно запазване на реда на знаците.</string>
|
<string name="punctuation_order_save_error">Неуспешно запазване на реда на знаците.</string>
|
||||||
<string name="punctuation_order_sentence">Ред на символите на клавиш 1</string>
|
<string name="punctuation_order_key_1">Ред на символите на клавиш 1</string>
|
||||||
<string name="punctuation_order_special">Ред на символите на клавиш 0</string>
|
<string name="punctuation_order_key_0">Ред на символите на клавиш 0</string>
|
||||||
<string name="restore_default_order">Възстанови реда по подразбиране</string>
|
<string name="restore_default_order">Възстанови реда по подразбиране</string>
|
||||||
<string name="language">Език</string>
|
<string name="language">Език</string>
|
||||||
<string name="punctuation_order_save">Запази подредбата</string>
|
<string name="punctuation_order_save">Запази подредбата</string>
|
||||||
|
|
|
||||||
|
|
@ -188,8 +188,8 @@
|
||||||
<string name="punctuation_order_mandatory_char_missing">Fehlendes erforderliches Zeichen:%1$s</string>
|
<string name="punctuation_order_mandatory_char_missing">Fehlendes erforderliches Zeichen:%1$s</string>
|
||||||
<string name="punctuation_order_mandatory_chars_missing">Fehlende erforderliche Zeichen:%1$s</string>
|
<string name="punctuation_order_mandatory_chars_missing">Fehlende erforderliche Zeichen:%1$s</string>
|
||||||
<string name="punctuation_order_save_error">Zeichenreihenfolge konnte nicht gespeichert werden.</string>
|
<string name="punctuation_order_save_error">Zeichenreihenfolge konnte nicht gespeichert werden.</string>
|
||||||
<string name="punctuation_order_sentence">Zeichenreihenfolge der 1-Taste</string>
|
<string name="punctuation_order_key_1">Zeichenreihenfolge der 1-Taste</string>
|
||||||
<string name="punctuation_order_special">Zeichenreihenfolge der 0-Taste</string>
|
<string name="punctuation_order_key_0">Zeichenreihenfolge der 0-Taste</string>
|
||||||
<string name="restore_default_order">Standardreihenfolge wiederherstellen</string>
|
<string name="restore_default_order">Standardreihenfolge wiederherstellen</string>
|
||||||
<string name="language">Sprache</string>
|
<string name="language">Sprache</string>
|
||||||
<string name="punctuation_order_save">Reihenfolge speichern</string>
|
<string name="punctuation_order_save">Reihenfolge speichern</string>
|
||||||
|
|
|
||||||
|
|
@ -199,8 +199,8 @@
|
||||||
<string name="punctuation_order_mandatory_char_missing">Falta carácter obligatorio:%1$s</string>
|
<string name="punctuation_order_mandatory_char_missing">Falta carácter obligatorio:%1$s</string>
|
||||||
<string name="punctuation_order_mandatory_chars_missing">Faltan caracteres obligatorios:%1$s</string>
|
<string name="punctuation_order_mandatory_chars_missing">Faltan caracteres obligatorios:%1$s</string>
|
||||||
<string name="punctuation_order_save_error">Error al guardar el orden de los caracteres.</string>
|
<string name="punctuation_order_save_error">Error al guardar el orden de los caracteres.</string>
|
||||||
<string name="punctuation_order_sentence">Orden de caracteres de la tecla 1</string>
|
<string name="punctuation_order_key_1">Orden de caracteres de la tecla 1</string>
|
||||||
<string name="punctuation_order_special">Orden de caracteres de la tecla 0</string>
|
<string name="punctuation_order_key_0">Orden de caracteres de la tecla 0</string>
|
||||||
<string name="restore_default_order">Restaurar el orden predeterminado</string>
|
<string name="restore_default_order">Restaurar el orden predeterminado</string>
|
||||||
<string name="language">Idioma</string>
|
<string name="language">Idioma</string>
|
||||||
<string name="punctuation_order_save">Guardar orden</string>
|
<string name="punctuation_order_save">Guardar orden</string>
|
||||||
|
|
|
||||||
|
|
@ -197,8 +197,8 @@
|
||||||
<string name="punctuation_order_mandatory_char_missing">Caractère obligatoire manquant :%1$s</string>
|
<string name="punctuation_order_mandatory_char_missing">Caractère obligatoire manquant :%1$s</string>
|
||||||
<string name="punctuation_order_mandatory_chars_missing">Caractères obligatoires manquants :%1$s</string>
|
<string name="punctuation_order_mandatory_chars_missing">Caractères obligatoires manquants :%1$s</string>
|
||||||
<string name="punctuation_order_save_error">Échec de l’enregistrement de l’ordre des caractères.</string>
|
<string name="punctuation_order_save_error">Échec de l’enregistrement de l’ordre des caractères.</string>
|
||||||
<string name="punctuation_order_sentence">Ordre des caractères de la touche 1</string>
|
<string name="punctuation_order_key_1">Ordre des caractères de la touche 1</string>
|
||||||
<string name="punctuation_order_special">Ordre des caractères de la touche 0</string>
|
<string name="punctuation_order_key_0">Ordre des caractères de la touche 0</string>
|
||||||
<string name="restore_default_order">Restaurer l’ordre par défaut</string>
|
<string name="restore_default_order">Restaurer l’ordre par défaut</string>
|
||||||
<string name="language">Langue</string>
|
<string name="language">Langue</string>
|
||||||
<string name="punctuation_order_save">Enregistrer l’ordre</string>
|
<string name="punctuation_order_save">Enregistrer l’ordre</string>
|
||||||
|
|
|
||||||
|
|
@ -186,8 +186,8 @@
|
||||||
<string name="punctuation_order_mandatory_char_missing">Carattere obbligatorio mancante:%1$s</string>
|
<string name="punctuation_order_mandatory_char_missing">Carattere obbligatorio mancante:%1$s</string>
|
||||||
<string name="punctuation_order_mandatory_chars_missing">Caratteri obbligatori mancanti:%1$s</string>
|
<string name="punctuation_order_mandatory_chars_missing">Caratteri obbligatori mancanti:%1$s</string>
|
||||||
<string name="punctuation_order_save_error">Salvataggio dell’ordine dei caratteri non riuscito.</string>
|
<string name="punctuation_order_save_error">Salvataggio dell’ordine dei caratteri non riuscito.</string>
|
||||||
<string name="punctuation_order_sentence">Ordine dei caratteri del tasto 1</string>
|
<string name="punctuation_order_key_1">Ordine dei caratteri del tasto 1</string>
|
||||||
<string name="punctuation_order_special">Ordine dei caratteri del tasto 0</string>
|
<string name="punctuation_order_key_0">Ordine dei caratteri del tasto 0</string>
|
||||||
<string name="restore_default_order">Ripristina ordine predefinito</string>
|
<string name="restore_default_order">Ripristina ordine predefinito</string>
|
||||||
<string name="language">Lingua</string>
|
<string name="language">Lingua</string>
|
||||||
<string name="punctuation_order_save">Salvare l\'ordine</string>
|
<string name="punctuation_order_save">Salvare l\'ordine</string>
|
||||||
|
|
|
||||||
|
|
@ -200,8 +200,8 @@
|
||||||
<string name="punctuation_order_mandatory_char_missing">תו חובה חסר: %1$s</string>
|
<string name="punctuation_order_mandatory_char_missing">תו חובה חסר: %1$s</string>
|
||||||
<string name="punctuation_order_mandatory_chars_missing">תווי חובה חסרים:%1$s</string>
|
<string name="punctuation_order_mandatory_chars_missing">תווי חובה חסרים:%1$s</string>
|
||||||
<string name="punctuation_order_save_error">שמירת סדר התווים נכשלה.</string>
|
<string name="punctuation_order_save_error">שמירת סדר התווים נכשלה.</string>
|
||||||
<string name="punctuation_order_sentence">סדר התווים של מקש 1</string>
|
<string name="punctuation_order_key_1">סדר התווים של מקש 1</string>
|
||||||
<string name="punctuation_order_special">סדר התווים של מקש 0</string>
|
<string name="punctuation_order_key_0">סדר התווים של מקש 0</string>
|
||||||
<string name="restore_default_order">שחזר את הסדר המוגדר כברירת מחדל</string>
|
<string name="restore_default_order">שחזר את הסדר המוגדר כברירת מחדל</string>
|
||||||
<string name="language">שפה</string>
|
<string name="language">שפה</string>
|
||||||
<string name="punctuation_order_save">שמור את הסדר</string>
|
<string name="punctuation_order_save">שמור את הסדר</string>
|
||||||
|
|
|
||||||
|
|
@ -208,8 +208,8 @@
|
||||||
<string name="punctuation_order_mandatory_char_missing">Trūksta privalomo simbolio:%1$s</string>
|
<string name="punctuation_order_mandatory_char_missing">Trūksta privalomo simbolio:%1$s</string>
|
||||||
<string name="punctuation_order_mandatory_chars_missing">Trūksta privalomų simbolių:%1$s</string>
|
<string name="punctuation_order_mandatory_chars_missing">Trūksta privalomų simbolių:%1$s</string>
|
||||||
<string name="punctuation_order_save_error">Nepavyko išsaugoti simbolių tvarkos.</string>
|
<string name="punctuation_order_save_error">Nepavyko išsaugoti simbolių tvarkos.</string>
|
||||||
<string name="punctuation_order_sentence">Simbolių tvarka ant klavišo 1</string>
|
<string name="punctuation_order_key_1">Simbolių tvarka ant klavišo 1</string>
|
||||||
<string name="punctuation_order_special">Simbolių tvarka ant klavišo 0</string>
|
<string name="punctuation_order_key_0">Simbolių tvarka ant klavišo 0</string>
|
||||||
<string name="restore_default_order">Atkurti numatytąją tvarką</string>
|
<string name="restore_default_order">Atkurti numatytąją tvarką</string>
|
||||||
<string name="language">Kalba</string>
|
<string name="language">Kalba</string>
|
||||||
<string name="punctuation_order_save">Išsaugoti tvarką</string>
|
<string name="punctuation_order_save">Išsaugoti tvarką</string>
|
||||||
|
|
|
||||||
|
|
@ -188,8 +188,8 @@
|
||||||
<string name="punctuation_order_mandatory_char_missing">Ontbrekend verplicht teken:%1$s</string>
|
<string name="punctuation_order_mandatory_char_missing">Ontbrekend verplicht teken:%1$s</string>
|
||||||
<string name="punctuation_order_mandatory_chars_missing">Ontbrekende verplichte tekens:%1$s</string>
|
<string name="punctuation_order_mandatory_chars_missing">Ontbrekende verplichte tekens:%1$s</string>
|
||||||
<string name="punctuation_order_save_error">Opslaan van de tekenvolgorde mislukt.</string>
|
<string name="punctuation_order_save_error">Opslaan van de tekenvolgorde mislukt.</string>
|
||||||
<string name="punctuation_order_sentence">Tekenvolgorde van de 1-toets</string>
|
<string name="punctuation_order_key_1">Tekenvolgorde van de 1-toets</string>
|
||||||
<string name="punctuation_order_special">Tekenvolgorde van de 0-toets</string>
|
<string name="punctuation_order_key_0">Tekenvolgorde van de 0-toets</string>
|
||||||
<string name="restore_default_order">Standaardvolgorde herstellen</string>
|
<string name="restore_default_order">Standaardvolgorde herstellen</string>
|
||||||
<string name="language">Taal</string>
|
<string name="language">Taal</string>
|
||||||
<string name="punctuation_order_save">Volgorde opslaan</string>
|
<string name="punctuation_order_save">Volgorde opslaan</string>
|
||||||
|
|
|
||||||
|
|
@ -201,8 +201,8 @@
|
||||||
<string name="punctuation_order_mandatory_char_missing">Caractere obrigatório ausente:%1$s</string>
|
<string name="punctuation_order_mandatory_char_missing">Caractere obrigatório ausente:%1$s</string>
|
||||||
<string name="punctuation_order_mandatory_chars_missing">Caracteres obrigatórios ausentes:%1$s</string>
|
<string name="punctuation_order_mandatory_chars_missing">Caracteres obrigatórios ausentes:%1$s</string>
|
||||||
<string name="punctuation_order_save_error">Falha ao salvar a ordem dos caracteres.</string>
|
<string name="punctuation_order_save_error">Falha ao salvar a ordem dos caracteres.</string>
|
||||||
<string name="punctuation_order_sentence">Ordem de caracteres da tecla 1</string>
|
<string name="punctuation_order_key_1">Ordem de caracteres da tecla 1</string>
|
||||||
<string name="punctuation_order_special">Ordem de caracteres da tecla 0</string>
|
<string name="punctuation_order_key_0">Ordem de caracteres da tecla 0</string>
|
||||||
<string name="restore_default_order">Restaurar ordem padrão</string>
|
<string name="restore_default_order">Restaurar ordem padrão</string>
|
||||||
<string name="language">Idioma</string>
|
<string name="language">Idioma</string>
|
||||||
<string name="punctuation_order_save">Salvar ordem</string>
|
<string name="punctuation_order_save">Salvar ordem</string>
|
||||||
|
|
|
||||||
|
|
@ -199,8 +199,8 @@
|
||||||
<string name="punctuation_order_mandatory_char_missing">Отсутствует обязательный символ:%1$s</string>
|
<string name="punctuation_order_mandatory_char_missing">Отсутствует обязательный символ:%1$s</string>
|
||||||
<string name="punctuation_order_mandatory_chars_missing">Отсутствуют обязательные символы:%1$s</string>
|
<string name="punctuation_order_mandatory_chars_missing">Отсутствуют обязательные символы:%1$s</string>
|
||||||
<string name="punctuation_order_save_error">е удалось сохранить порядок символов.</string>
|
<string name="punctuation_order_save_error">е удалось сохранить порядок символов.</string>
|
||||||
<string name="punctuation_order_sentence">Порядок символов на клавише 1</string>
|
<string name="punctuation_order_key_1">Порядок символов на клавише 1</string>
|
||||||
<string name="punctuation_order_special">Порядок символов на клавише 0</string>
|
<string name="punctuation_order_key_0">Порядок символов на клавише 0</string>
|
||||||
<string name="restore_default_order">Восстановить порядок по умолчанию</string>
|
<string name="restore_default_order">Восстановить порядок по умолчанию</string>
|
||||||
<string name="language">Язык</string>
|
<string name="language">Язык</string>
|
||||||
<string name="punctuation_order_save">Сохранить порядок</string>
|
<string name="punctuation_order_save">Сохранить порядок</string>
|
||||||
|
|
|
||||||
|
|
@ -201,8 +201,8 @@
|
||||||
<string name="punctuation_order_mandatory_char_missing">Zorunlu karakter eksik:%1$s</string>
|
<string name="punctuation_order_mandatory_char_missing">Zorunlu karakter eksik:%1$s</string>
|
||||||
<string name="punctuation_order_mandatory_chars_missing">Zorunlu karakterler eksik:%1$s</string>
|
<string name="punctuation_order_mandatory_chars_missing">Zorunlu karakterler eksik:%1$s</string>
|
||||||
<string name="punctuation_order_save_error">Karakter sırası kaydedilemedi.</string>
|
<string name="punctuation_order_save_error">Karakter sırası kaydedilemedi.</string>
|
||||||
<string name="punctuation_order_sentence">1 tuşunun karakter sırası</string>
|
<string name="punctuation_order_key_1">1 tuşunun karakter sırası</string>
|
||||||
<string name="punctuation_order_special">0 tuşunun karakter sırası</string>
|
<string name="punctuation_order_key_0">0 tuşunun karakter sırası</string>
|
||||||
<string name="restore_default_order">Varsayılan sırayı geri yükle</string>
|
<string name="restore_default_order">Varsayılan sırayı geri yükle</string>
|
||||||
<string name="language">Dil</string>
|
<string name="language">Dil</string>
|
||||||
<string name="punctuation_order_save">Sıralamayı kaydet</string>
|
<string name="punctuation_order_save">Sıralamayı kaydet</string>
|
||||||
|
|
|
||||||
|
|
@ -210,8 +210,8 @@
|
||||||
<string name="punctuation_order_mandatory_char_missing">Відсутній обов’язковий символ:%1$s</string>
|
<string name="punctuation_order_mandatory_char_missing">Відсутній обов’язковий символ:%1$s</string>
|
||||||
<string name="punctuation_order_mandatory_chars_missing">Відсутні обов’язкові символи:%1$s</string>
|
<string name="punctuation_order_mandatory_chars_missing">Відсутні обов’язкові символи:%1$s</string>
|
||||||
<string name="punctuation_order_save_error">Не вдалося зберегти порядок символів.</string>
|
<string name="punctuation_order_save_error">Не вдалося зберегти порядок символів.</string>
|
||||||
<string name="punctuation_order_sentence">Порядок символів на клавіші 1</string>
|
<string name="punctuation_order_key_1">Порядок символів на клавіші 1</string>
|
||||||
<string name="punctuation_order_special">Порядок символів на клавіші 0</string>
|
<string name="punctuation_order_key_0">Порядок символів на клавіші 0</string>
|
||||||
<string name="restore_default_order">Відновити початковий порядок</string>
|
<string name="restore_default_order">Відновити початковий порядок</string>
|
||||||
<string name="language">Мова</string>
|
<string name="language">Мова</string>
|
||||||
<string name="punctuation_order_save">Зберегти порядок</string>
|
<string name="punctuation_order_save">Зберегти порядок</string>
|
||||||
|
|
|
||||||
|
|
@ -211,8 +211,11 @@
|
||||||
<string name="punctuation_order_forbidden_chars">Forbidden characters:%1$s</string>
|
<string name="punctuation_order_forbidden_chars">Forbidden characters:%1$s</string>
|
||||||
<string name="punctuation_order_save">Save Order</string>
|
<string name="punctuation_order_save">Save Order</string>
|
||||||
<string name="punctuation_order_save_error">Failed saving the character order.</string>
|
<string name="punctuation_order_save_error">Failed saving the character order.</string>
|
||||||
<string name="punctuation_order_sentence">1-key Character Order</string>
|
<string name="punctuation_order_key_1">1-key Character Order</string>
|
||||||
<string name="punctuation_order_special">0-key Character Order</string>
|
<string name="punctuation_order_key_0">0-key Character Order</string>
|
||||||
|
<string name="punctuation_order_initial">Initial characters</string>
|
||||||
|
<string name="punctuation_order_group">Grouped characters (optional)</string>
|
||||||
|
<string name="punctuation_order_after_group">After the group (optional)</string>
|
||||||
|
|
||||||
<string name="setup_keyboard_status">Status</string>
|
<string name="setup_keyboard_status">Status</string>
|
||||||
<string name="setup_default_keyboard">Select Default Keyboard</string>
|
<string name="setup_default_keyboard">Select Default Keyboard</string>
|
||||||
|
|
|
||||||
|
|
@ -5,20 +5,45 @@
|
||||||
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.PreferenceChars1
|
<PreferenceCategory
|
||||||
android:key="punctuation_order_sentence"
|
android:title="@string/punctuation_order_key_1">
|
||||||
android:title="@string/punctuation_order_sentence" />
|
<io.github.sspanak.tt9.preferences.screens.punctuation.PreferenceChars1
|
||||||
|
android:key="punctuation_order_sentence"
|
||||||
|
android:title="@string/punctuation_order_initial" />
|
||||||
|
|
||||||
<io.github.sspanak.tt9.preferences.screens.punctuation.PreferenceChars0
|
<io.github.sspanak.tt9.preferences.screens.punctuation.PreferenceCharsExtra
|
||||||
android:key="punctuation_order_special_chars"
|
android:key="punctuation_order_key_1_group"
|
||||||
android:title="@string/punctuation_order_special"/>
|
android:title="@string/punctuation_order_group"/>
|
||||||
|
|
||||||
<Preference
|
<io.github.sspanak.tt9.preferences.screens.punctuation.PreferenceCharsExtra
|
||||||
android:key="punctuation_order_reset_defaults"
|
android:key="punctuation_order_key_1_after_group"
|
||||||
android:title="@string/restore_default_order" />
|
android:title="@string/punctuation_order_after_group"/>
|
||||||
|
</PreferenceCategory>
|
||||||
|
|
||||||
<Preference
|
|
||||||
android:key="punctuation_order_save"
|
<PreferenceCategory
|
||||||
android:title="@string/punctuation_order_save" />
|
android:title="@string/punctuation_order_key_0">
|
||||||
|
<io.github.sspanak.tt9.preferences.screens.punctuation.PreferenceChars0
|
||||||
|
android:key="punctuation_order_special_chars"
|
||||||
|
android:title="@string/punctuation_order_initial"/>
|
||||||
|
|
||||||
|
<io.github.sspanak.tt9.preferences.screens.punctuation.PreferenceCharsExtra
|
||||||
|
android:key="punctuation_order_key_0_group"
|
||||||
|
android:title="@string/punctuation_order_group"/>
|
||||||
|
|
||||||
|
<io.github.sspanak.tt9.preferences.screens.punctuation.PreferenceCharsExtra
|
||||||
|
android:key="punctuation_order_key_0_after_group"
|
||||||
|
android:title="@string/punctuation_order_after_group"/>
|
||||||
|
</PreferenceCategory>
|
||||||
|
|
||||||
|
<PreferenceCategory>
|
||||||
|
<Preference
|
||||||
|
android:key="punctuation_order_reset_defaults"
|
||||||
|
android:title="@string/restore_default_order" />
|
||||||
|
|
||||||
|
<Preference
|
||||||
|
android:key="punctuation_order_save"
|
||||||
|
android:title="@string/punctuation_order_save" />
|
||||||
|
</PreferenceCategory>
|
||||||
|
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue