diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/items/ItemDropDown.java b/app/src/main/java/io/github/sspanak/tt9/preferences/items/ItemDropDown.java index c6856702..5fec2602 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/items/ItemDropDown.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/items/ItemDropDown.java @@ -10,24 +10,31 @@ import io.github.sspanak.tt9.util.Logger; public class ItemDropDown { private final DropDownPreference item; - private LinkedHashMap values; + private LinkedHashMap values; public ItemDropDown(DropDownPreference item) { this.item = item; } - protected void populate(LinkedHashMap values) { + protected void populateIntegers(LinkedHashMap values) { + LinkedHashMap stringifiedValues = new LinkedHashMap<>(); + if (values != null) { + for (Integer key : values.keySet()) { + stringifiedValues.put(String.valueOf(key), values.get(key)); + } + } + + populate(stringifiedValues); + } + + protected void populate(LinkedHashMap values) { if (item == null) { Logger.w("ItemDropDown.populate", "Cannot populate a NULL item. Ignoring."); return; } this.values = values != null ? values : new LinkedHashMap<>(); - - ArrayList keys = new ArrayList<>(); - for (int key : this.values.keySet()) { - keys.add(String.valueOf(key)); - } + ArrayList keys = new ArrayList<>(this.values.keySet()); item.setEntryValues(keys.toArray(new CharSequence[0])); item.setEntries(this.values.values().toArray(new CharSequence[0])); @@ -56,14 +63,11 @@ public class ItemDropDown { } protected boolean onClick(Preference preference, Object newKey) { - try { - String previewValue = values.get(Integer.parseInt(newKey.toString())); - ((DropDownPreference) preference).setValue(newKey.toString()); - setPreview(previewValue); - return true; - } catch (NumberFormatException e) { - return false; - } + String previewValue = values.get(newKey.toString()); + ((DropDownPreference) preference).setValue(newKey.toString()); + setPreview(previewValue); + + return true; } private void setPreview(String value) { @@ -74,7 +78,7 @@ public class ItemDropDown { public ItemDropDown preview() { try { - setPreview(values.get(Integer.parseInt(item.getValue()))); + setPreview(values.get(item.getValue())); } catch (Exception e) { setPreview(""); } diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemSelectLayoutType.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemSelectLayoutType.java index c45da45d..52c40930 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemSelectLayoutType.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemSelectLayoutType.java @@ -28,7 +28,7 @@ public class ItemSelectLayoutType extends ItemDropDown { items.put(SettingsUI.LAYOUT_SMALL, context.getString(R.string.pref_layout_small)); items.put(SettingsUI.LAYOUT_NUMPAD, context.getString(R.string.pref_layout_numpad)); - super.populate(items); + super.populateIntegers(items); return this; } diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemSelectTheme.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemSelectTheme.java index 0eeb8496..c7d3d87f 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemSelectTheme.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemSelectTheme.java @@ -27,7 +27,7 @@ class ItemSelectTheme extends ItemDropDown { themes.put(AppCompatDelegate.MODE_NIGHT_NO, context.getString(R.string.pref_dark_theme_no)); themes.put(AppCompatDelegate.MODE_NIGHT_YES, context.getString(R.string.pref_dark_theme_yes)); - super.populate(themes); + super.populateIntegers(themes); return this; } diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/debug/ItemInputHandlingMode.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/debug/ItemInputHandlingMode.java index 216a7e5e..436419e5 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/debug/ItemInputHandlingMode.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/debug/ItemInputHandlingMode.java @@ -27,7 +27,7 @@ public class ItemInputHandlingMode extends ItemDropDown { values.put(RETURN_FALSE, "Return False"); values.put(CALL_SUPER, "Call Super"); - super.populate(values); + super.populateIntegers(values); super.setValue(String.valueOf(settings.getInputHandlingMode())); return this; diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/debug/ItemLogLevel.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/debug/ItemLogLevel.java index 854095e2..4b28e94b 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/debug/ItemLogLevel.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/debug/ItemLogLevel.java @@ -7,8 +7,8 @@ import androidx.preference.Preference; import java.util.LinkedHashMap; -import io.github.sspanak.tt9.util.Logger; import io.github.sspanak.tt9.preferences.items.ItemDropDown; +import io.github.sspanak.tt9.util.Logger; class ItemLogLevel extends ItemDropDown { public static final String NAME = "pref_log_level"; @@ -18,12 +18,12 @@ class ItemLogLevel extends ItemDropDown { } public ItemLogLevel populate() { - LinkedHashMap values = new LinkedHashMap<>(); - values.put(Log.VERBOSE, "Verbose"); - values.put(Log.DEBUG, "Debug"); - values.put(Log.INFO, "Info"); - values.put(Log.WARN, "Warning"); - values.put(Log.ERROR, "Error (default)"); + LinkedHashMap values = new LinkedHashMap<>(); + values.put(String.valueOf(Log.VERBOSE), "Verbose"); + values.put(String.valueOf(Log.DEBUG), "Debug"); + values.put(String.valueOf(Log.INFO), "Info"); + values.put(String.valueOf(Log.WARN), "Warning"); + values.put(String.valueOf(Log.ERROR), "Error (default)"); super.populate(values); super.setValue(String.valueOf(Logger.LEVEL)); diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/keypad/ItemSelectABCAutoAccceptTime.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/keypad/ItemSelectABCAutoAccceptTime.java new file mode 100644 index 00000000..7a83dcb4 --- /dev/null +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/keypad/ItemSelectABCAutoAccceptTime.java @@ -0,0 +1,34 @@ +package io.github.sspanak.tt9.preferences.screens.keypad; + +import android.content.Context; + +import androidx.preference.DropDownPreference; + +import java.util.LinkedHashMap; + +import io.github.sspanak.tt9.R; +import io.github.sspanak.tt9.preferences.items.ItemDropDown; + + +public class ItemSelectABCAutoAccceptTime extends ItemDropDown { + public static final String NAME = "pref_abc_auto_accept_time"; + private final Context context; + + public ItemSelectABCAutoAccceptTime(DropDownPreference item, Context context) { + super(item); + this.context = context; + } + + public ItemSelectABCAutoAccceptTime populate() { + LinkedHashMap dropDownOptions = new LinkedHashMap<>(); + dropDownOptions.put("-1", context.getString(R.string.pref_abc_auto_accept_off)); + dropDownOptions.put("350", context.getString(R.string.pref_abc_auto_accept_fastest)); + dropDownOptions.put("500", context.getString(R.string.pref_abc_auto_accept_fast)); + dropDownOptions.put("800", context.getString(R.string.pref_abc_auto_accept_normal)); + dropDownOptions.put("1200", context.getString(R.string.pref_abc_auto_accept_slow)); + + super.populate(dropDownOptions); + + return this; + } +} diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/keypad/ItemSelectZeroKeyCharacter.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/keypad/ItemSelectZeroKeyCharacter.java index 06ef1314..fab06dcd 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/keypad/ItemSelectZeroKeyCharacter.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/keypad/ItemSelectZeroKeyCharacter.java @@ -1,67 +1,32 @@ package io.github.sspanak.tt9.preferences.screens.keypad; import android.content.Context; -import android.content.res.Resources; import androidx.preference.DropDownPreference; import java.util.LinkedHashMap; -import io.github.sspanak.tt9.util.Logger; import io.github.sspanak.tt9.R; +import io.github.sspanak.tt9.preferences.items.ItemDropDown; -class ItemSelectZeroKeyCharacter { +class ItemSelectZeroKeyCharacter extends ItemDropDown { public static final String NAME = "pref_double_zero_char"; - private final DropDownPreference item; - private final LinkedHashMap KEYS = new LinkedHashMap<>(); + private final Context context; ItemSelectZeroKeyCharacter(DropDownPreference dropDown, Context context) { - this.item = dropDown; - - Resources resources = context.getResources(); - - KEYS.put(".", resources.getString(R.string.char_dot)); - KEYS.put(",", resources.getString(R.string.char_comma)); - KEYS.put("\\n", resources.getString(R.string.char_newline)); // SharedPreferences return a corrupted string when using the real "\n"... :( - KEYS.put(" ", resources.getString(R.string.char_space)); + super(dropDown); + this.context = context; } - public ItemSelectZeroKeyCharacter populate() { - if (item == null) { - Logger.w("ItemSelectZeroKeyChar.populate", "Cannot populate a NULL item. Ignoring."); - return this; - } - - item.setEntries(KEYS.values().toArray(new CharSequence[0])); - item.setEntryValues(KEYS.keySet().toArray(new CharSequence[0])); - previewSelection(item.getValue()); + LinkedHashMap items = new LinkedHashMap<>(); + items.put(".", context.getString(R.string.char_dot)); + items.put(",", context.getString(R.string.char_comma)); + items.put("\\n", context.getString(R.string.char_newline)); // SharedPreferences return a corrupted string when using the real "\n"... :( + items.put(" ", context.getString(R.string.char_space)); + super.populate(items); return this; } - - - public void activate() { - if (item == null) { - Logger.w("ItemSelectZeroKeyChar.activate", "Cannot set a click listener a NULL item. Ignoring."); - return; - } - - item.setOnPreferenceChangeListener((preference, newChar) -> { - ((DropDownPreference) preference).setValue(newChar.toString()); - previewSelection(newChar.toString()); - return true; - }); - - } - - - private void previewSelection(String newChar) { - if (item == null) { - return; - } - - item.setSummary(KEYS.get(newChar)); - } } diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/keypad/KeyPadScreen.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/keypad/KeyPadScreen.java index 9853049b..d6eccfc1 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/keypad/KeyPadScreen.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/keypad/KeyPadScreen.java @@ -15,6 +15,14 @@ public class KeyPadScreen extends BaseScreenFragment { @Override protected void onCreate() { - (new ItemSelectZeroKeyCharacter(findPreference(ItemSelectZeroKeyCharacter.NAME), activity)).populate().activate(); + (new ItemSelectZeroKeyCharacter(findPreference(ItemSelectZeroKeyCharacter.NAME), activity)) + .populate() + .enableClickHandler() + .preview(); + + (new ItemSelectABCAutoAccceptTime(findPreference(ItemSelectABCAutoAccceptTime.NAME), activity)) + .populate() + .enableClickHandler() + .preview(); } } diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/setup/ItemKeyPadDebounceTime.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/setup/ItemKeyPadDebounceTime.java index 4b6e7618..1b674cc6 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/setup/ItemKeyPadDebounceTime.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/setup/ItemKeyPadDebounceTime.java @@ -20,11 +20,11 @@ class ItemKeyPadDebounceTime extends ItemDropDown { } public ItemDropDown populate() { - LinkedHashMap dropDownOptions = new LinkedHashMap<>(); - dropDownOptions.put(0, context.getString(R.string.pref_hack_key_pad_debounce_off)); + LinkedHashMap dropDownOptions = new LinkedHashMap<>(); + dropDownOptions.put("0", context.getString(R.string.pref_hack_key_pad_debounce_off)); - int[] values = new int[] { 20, 30, 50, 75, 100, 150, 250, 350 }; - for (int value : values) { + String[] values = new String[] { "20", "30", "50", "75", "100", "150", "250", "350" }; + for (String value : values) { dropDownOptions.put(value, value + " ms"); } super.populate(dropDownOptions); diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsTyping.java b/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsTyping.java index d085f4dd..375ab360 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsTyping.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsTyping.java @@ -5,7 +5,16 @@ import android.content.Context; class SettingsTyping extends SettingsInput { SettingsTyping(Context context) { super(context); } - public int getAbcAutoAcceptTimeout() { return prefs.getBoolean("abc_auto_accept", true) ? 800 + getKeyPadDebounceTime() : -1; } + public int getAbcAutoAcceptTimeout() { + int time; + try { + time = Integer.parseInt(prefs.getString("pref_abc_auto_accept_time", "800")); + } catch (NumberFormatException e) { + time = 800; + } + + return time > 0 ? time + getKeyPadDebounceTime() : time; + } public boolean getAutoSpace() { return prefs.getBoolean("auto_space", true); } public boolean getAutoTextCase() { return prefs.getBoolean("auto_text_case", true); } public String getDoubleZeroChar() { diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index 59767738..03deeacf 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -80,7 +80,11 @@ Зареждане на речник Зареждането е отменено. Автоматичен избор на буква - Автоматично избирай текущата буква след кратко изчакване. + Изключен + Много бърз + Бърз + Умерен + Бавен Алтернативен метод за превъртане на думи Включете, ако понякога не виждате целия списък с думи или не може да стигнете до всички (Андроид 9 или по-стари) Автоматичен интервал diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 95004aca..84d806b1 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -21,6 +21,12 @@ Nur Wortliste Hilfe Dunkles Thema + Automatische Buchstabenauswahl + Aus + Sehr schnell + Schnell + Mäßig + Langsam Sprachen Icon für den Schreibmodus @@ -32,6 +38,7 @@ Bitte warten Sie, bis das Wörterbuch geladen ist. Ausgewählte laden Wird nicht geladen. Wörterbuch für \"%1$s\" nicht gefunden. + ABC-Modus Hinzugefügte Wörter Hinzugefügte Wörter löschen Kompatibilität diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index e47ceb1c..cc86167e 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -50,7 +50,11 @@ Mayúsculas automáticas Escribir la primera letra de cada frase en mayúscula. Selección automática de letra - Escribir automáticamente la letra seleccionada después de una breve pausa. + Apagada + Muy rápido + Rápido + Moderado + Lento Espacio automático Insertar un espacio automático después de palabras y signos de puntuación. Carácter cuando se presiona \"0\" dos veces diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 2b9973c8..7534100c 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -44,7 +44,11 @@ Chargement est annulé. Saisie intuitive Sélection de lettre automatique - Ajouter automatiquement la lettre sélectionnée après un court délai. + Désactivée + Très rapide + Rapide + Modérée + Lente Méthode alternative de défilement des mots Espace automatique Majuscules automatiques diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 24820ec0..480cba3e 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -22,6 +22,12 @@ Solo elenco delle parole Aiuto Tema scuro + Selezione automatica delle lettere + Spenta + Molto veloce + Veloce + Moderata + Lenta Lingue Icona modalità di digitazione @@ -32,6 +38,7 @@ Attendi che il dizionario si carichi, per favore. Carica le selezionate Impossibile caricare. Dizionario per “%1$s” non trovato. + Modalità ABC Parole aggiunte Elimina parole aggiunte Compatibilità diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index 088679b0..81773238 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -16,6 +16,7 @@ הוסף מילה אודות + מצב אבג מילים שהוספו מחק מילים שהוספו הגדרות תאימות @@ -24,6 +25,12 @@ בחר מקשי קיצור מקלדת + בחירת אותיות אוטומטית + כבויה + מאוד מהיר + מהיר + בינוני + איטי רווח אוטומטי הוסף רווח אוטומטית לאחר סימני פיסוק או מילים. שימוש אוטומטי באותיות רישיות diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index cbdffb38..a1cb5868 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -27,7 +27,11 @@ Pradiniai nustatymai Automatinis raidės pasirinkimas - Automatiškai įterpti pasirinktą raidę po trumpos delsos. + Išjungtas + Labai greitas + Greitas + Vidutinis + Lėtas Alternatyvus slinkimo būdas per pasiūlytus žodžius Įjunkite, jei kartais nematote viso žodžių sąrašo arba kyla problemų juos pasirenkant („Android“ 9 ar senesnės versijos). Automatinis tarpas diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index d867be9c..fecf0957 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -20,6 +20,12 @@ Alleen suggestielijst Helpen Donker thema + Automatische letterselectie + Uit + Zeer snel + Snel + Gematigd + Langzaam Talen Typemodus-icoon Geef de huidige typmodus aan met een icoon. @@ -33,6 +39,7 @@ Verwijder alle Verwijder de niet-geselecteerde Woordenboek succesvol gewist. + ABC-modus Toegevoegde woorden Verwijder toegevoegde woorden Compatibiliteit diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index bda31b9b..4530b995 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -16,6 +16,7 @@ Adicionar Palavra Sobre + Modo ABC Palavras adicionadas Excluir palavras adicionadas Compatibilidade @@ -25,6 +26,12 @@ Teclado Configuração inicial + Seleção automática de letras + Desligada + Muito rápido + Rápido + Moderado + Lento Espaçamento Automático Insere um espaçamento após ponto final. Maiúsculas Automáticas diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 7de20c0d..b4dd5894 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -44,7 +44,11 @@ Внешний вид Горячие клавиши Автоматический выбор буквы - Автоматически ввести выбранную букву после короткого ожидания. + Выключено + Очень быстро + Быстро + Умеренное + Медленное Альтернативный метод прокрутки слов Включите, если иногда вы не видите все слова или у вас возникают проблемы с их прокруткой (Android 9 или старше). Авто пробел diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 30b308a1..e866e05c 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -29,7 +29,11 @@ Початкові налаштування Автоматичний вибір літери - Автоматично вводить вибрану літеру після короткої затримки. + Вимкнено + Дуже швидко + Швидко + Середній + Повільний Альтернативний метод прокрутки пропозицій Увімкніть, якщо ви іноді не бачите всіх пропозицій або не можете їх прокрутити (Android 9 або старіші). Автоматичний пробіл diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 070932c4..d7acf6a1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -34,8 +34,12 @@ Initial Setup Usage Stats - Automatic Letter Select - Automatically type the selected letter after a short delay. + Automatic Letter Selection + Off + Very Quick + Quick + Moderate + Slow Alternative Suggestion Scrolling Method Enable if sometimes you can not see all suggestions or have trouble scrolling them (Android 9 or older). Automatic Space diff --git a/app/src/main/res/xml/prefs_screen_keypad.xml b/app/src/main/res/xml/prefs_screen_keypad.xml index 59ac7806..a7ceaf6f 100644 --- a/app/src/main/res/xml/prefs_screen_keypad.xml +++ b/app/src/main/res/xml/prefs_screen_keypad.xml @@ -51,11 +51,10 @@ app:layout="@layout/pref_category" app:singleLineTitle="true"> -