From 936c7d3479db4e3f53c5e4d42da072845af23f12 Mon Sep 17 00:00:00 2001 From: sspanak Date: Fri, 11 Aug 2023 18:04:20 +0300 Subject: [PATCH] added an alternative suggestion scrolling method to fix invisible suggestions on some older devices --- res/values-bg/strings.xml | 3 +++ res/values-de/strings.xml | 1 + res/values-es/strings.xml | 1 + res/values-fr/strings.xml | 2 ++ res/values-it/strings.xml | 1 + res/values-iw/strings.xml | 1 + res/values-nl/strings.xml | 1 + res/values-pt-rBR/strings.xml | 1 + res/values-ru/strings.xml | 3 +++ res/values-uk/strings.xml | 3 +++ res/values/strings.xml | 3 +++ res/xml/prefs_screen_setup.xml | 13 +++++++++++++ .../sspanak/tt9/preferences/SettingsStore.java | 4 ++++ .../github/sspanak/tt9/ui/tray/SuggestionsBar.java | 12 +++++++++++- 14 files changed, 48 insertions(+), 1 deletion(-) diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index 97c20212..c6843844 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -23,6 +23,7 @@ Неуспешно зареждане. Липсва речник за „%1$s“. Речникът е изтрит успешно. Режим АБВ + Съвместимост Облик Бутони за бърз достъп Бутони на екрана @@ -49,6 +50,8 @@ Зареждането е отменено. Автоматичен избор на буква Автоматично избирай текущата буква след кратко изчакване. + Алтернативен метод за превъртане на думи + Включете, ако понякога не виждате целия списък с думи или не може да стигнете до всички (Андроид 9 или по-стари) Автоматичен интервал Добавяй автоматично интервал след препинателни знаци и думи. Автоматични главни букви diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index dad0558a..f3b09fe4 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -17,6 +17,7 @@ Lade Wörterbuch (%1$s)… Wörterbuch laden Wird nicht geladen. Wörterbuch für \"%1$s\" nicht gefunden. + Kompatibilität Lade Wörterbuch Tastenfeld Leerzeichen diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 4dc41656..54f03527 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -11,6 +11,7 @@ La palabra \"%1$s\" ya esta en el diccionario. Agregar palabra Modo ABC + Compatibilidad Apariencia Teclas de acceso rápido Texto predictivo diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index 3331c04f..418d06d1 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -22,6 +22,7 @@ Echec du chargement. Dictionnaire «%1$s» introuvable. Raccourcis clavier Saisie ABC + Compatibilité Apparance Echec du chargement. Mot inadmissible «%1$s» à la ligne %2$d de langue «%3$s». Le dictionaire est supprimé avec succès. @@ -31,6 +32,7 @@ Saisie intuitive Sélection de lettre automatique Ajouter automatiquement la lettre sélectionnée après un court délai. + Méthode alternative de défilement des mots Espace automatique Majuscules automatiques Ajouter automatiquement un espace après signes de ponctuation et mots. diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index 47350d46..3d7153f2 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -20,6 +20,7 @@ Caricamento del dizionario (%1$s)… Carica il dizionario Impossibile caricare. Dizionario per “%1$s” non trovato. + Compatibilità Scorciatoie da tastiera Caricamento del dizionario Caricamento annullato. diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index 6305f374..992ceb9d 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -12,6 +12,7 @@ הקלד מילה… אודות + הגדרות תאימות מראה מצב חיזוי בחר מקשי קיצור diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index aadda67d..2a4e7dd9 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -16,6 +16,7 @@ Woordenboek laden Laden mislukt. Woordenboek voor %1$s niet gevonden. Woordenboek succesvol gewist. + Compatibiliteit Woordenboek laden Toetsenbord Spatie diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml index d406c597..76e3ee1b 100644 --- a/res/values-pt-rBR/strings.xml +++ b/res/values-pt-rBR/strings.xml @@ -12,6 +12,7 @@ Escreva uma palavra… Sobre + Compatibilidade Aparência Modo Predictivo Atalhos diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 47d76e9e..b7907878 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -28,10 +28,13 @@ Пробел Новая строка Режим AБВ + Cовместимость Внешний вид Горячие клавиши Автоматический выбор буквы Автоматически ввести выбранную букву после короткого ожидания. + Альтернативный метод прокрутки слов + Включите, если иногда вы не видите все слова или у вас возникают проблемы с их прокруткой (Android 9 или старше). Авто пробел Автоматически добавлять пробел после слов и знаков препинания. Авто заглавные буквы diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index e45b7ad7..36299ab7 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -26,11 +26,14 @@ Пробіл Новий рядок Режим AБВ + Сумісность Вигляд Режим підсказки Гарячі клавіші Автоматичний вибір букви Автоматично ввести вибрану букву після короткої затримки. + Альтернативний метод прокручування слів + Увімкніть, якщо іноді ви не бачите всі слова або у вас виникають проблеми з їх прокручуванням (Android 9 або старіша). Авто пробіл Автоматично додавати пробіл після слів і розділових знаків. Авто заголовні букви diff --git a/res/values/strings.xml b/res/values/strings.xml index 69c49835..e078ef59 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -20,6 +20,7 @@ About ABC Mode + Compatibility Appearance Debug Options Recent Log Messages @@ -30,6 +31,8 @@ Automatic Letter Select Automatically type the selected letter after a short delay. + Alternative Suggestion Scrolling Method + Enable if sometimes you can not see all suggestions or have trouble scrolling them (Android 9 or older). Automatic Space Automatically add a space after punctuation or words. Automatic Capitalization diff --git a/res/xml/prefs_screen_setup.xml b/res/xml/prefs_screen_setup.xml index 4929a155..eb4a222b 100644 --- a/res/xml/prefs_screen_setup.xml +++ b/res/xml/prefs_screen_setup.xml @@ -11,4 +11,17 @@ app:key="global_default_keyboard" app:layout="@layout/pref_text" app:title="@string/setup_default_keyboard" /> + + + + + + diff --git a/src/io/github/sspanak/tt9/preferences/SettingsStore.java b/src/io/github/sspanak/tt9/preferences/SettingsStore.java index 55bff22c..91458f50 100644 --- a/src/io/github/sspanak/tt9/preferences/SettingsStore.java +++ b/src/io/github/sspanak/tt9/preferences/SettingsStore.java @@ -265,6 +265,10 @@ public class SettingsStore { /************* internal settings *************/ + public int getSuggestionScrollingDelay() { + return prefs.getBoolean("pref_alternative_suggestion_scrolling", false) ? 200 : 0; + } + public int getDictionaryImportProgressUpdateInterval() { return 250; /* ms */ } public int getDictionaryImportWordChunkSize() { return 1000; /* words */ } diff --git a/src/io/github/sspanak/tt9/ui/tray/SuggestionsBar.java b/src/io/github/sspanak/tt9/ui/tray/SuggestionsBar.java index 2575bc93..34b7a8df 100644 --- a/src/io/github/sspanak/tt9/ui/tray/SuggestionsBar.java +++ b/src/io/github/sspanak/tt9/ui/tray/SuggestionsBar.java @@ -4,6 +4,7 @@ import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Color; import android.graphics.drawable.Drawable; +import android.os.Handler; import android.view.View; import androidx.core.content.ContextCompat; @@ -27,12 +28,17 @@ public class SuggestionsBar { private final TraditionalT9 tt9; private SuggestionsAdapter mSuggestionsAdapter; + private final Handler alternativeScrollingHandler = new Handler(); + private final int suggestionScrollingDelay; + public SuggestionsBar(TraditionalT9 tt9, View mainView) { super(); this.tt9 = tt9; + suggestionScrollingDelay = tt9.getSettings().getSuggestionScrollingDelay(); + mView = mainView.findViewById(R.id.suggestions_bar); mView.setLayoutManager(new LinearLayoutManager(mainView.getContext(), RecyclerView.HORIZONTAL,false)); @@ -148,7 +154,11 @@ public class SuggestionsBar { mSuggestionsAdapter.notifyItemChanged(oldIndex); mSuggestionsAdapter.notifyItemChanged(selectedIndex); - mView.scrollToPosition(selectedIndex); + if (suggestionScrollingDelay > 0) { + alternativeScrollingHandler.postDelayed(() -> mView.scrollToPosition(selectedIndex), suggestionScrollingDelay); + } else { + mView.scrollToPosition(selectedIndex); + } }