From cee31250d4070d366bbaaf6809d6073d7a25b958 Mon Sep 17 00:00:00 2001 From: sspanak Date: Fri, 20 Dec 2024 11:54:52 +0200 Subject: [PATCH 1/2] numpad width setting --- .../github/sspanak/tt9/hacks/DeviceInfo.java | 4 ++ .../screens/appearance/AppearanceScreen.java | 8 +++- .../screens/appearance/ItemNumpadWidth.java | 47 +++++++++++++++++++ .../tt9/preferences/settings/SettingsUI.java | 8 ++++ .../sspanak/tt9/ui/main/MainLayoutNumpad.java | 19 ++++++++ app/src/main/res/layout/main_numpad.xml | 1 + app/src/main/res/values/strings.xml | 1 + .../main/res/xml/prefs_screen_appearance.xml | 4 ++ 8 files changed, 90 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemNumpadWidth.java diff --git a/app/src/main/java/io/github/sspanak/tt9/hacks/DeviceInfo.java b/app/src/main/java/io/github/sspanak/tt9/hacks/DeviceInfo.java index 505e5daf7..a78a9ed0a 100644 --- a/app/src/main/java/io/github/sspanak/tt9/hacks/DeviceInfo.java +++ b/app/src/main/java/io/github/sspanak/tt9/hacks/DeviceInfo.java @@ -14,6 +14,10 @@ public static boolean isLandscapeOrientation(Context context) { return context.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE; } + public static int getScreenWidth(Context context) { + return context.getResources().getDisplayMetrics().widthPixels; + } + public static int getScreenHeight(Context context) { return context.getResources().getDisplayMetrics().heightPixels; } diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/AppearanceScreen.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/AppearanceScreen.java index 58953d3d6..9b2d81b48 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/AppearanceScreen.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/AppearanceScreen.java @@ -27,6 +27,7 @@ private void createMainSection() { ItemNumpadAlignment numpadAlignment = new ItemNumpadAlignment(findPreference(ItemNumpadAlignment.NAME), activity.getSettings()); ItemNumpadKeyHeight numpadKeyHeight = new ItemNumpadKeyHeight(findPreference(ItemNumpadKeyHeight.NAME), activity.getSettings()); + ItemNumpadWidth numpadWidth = new ItemNumpadWidth(findPreference(ItemNumpadWidth.NAME), activity.getSettings()); ItemDropDown[] items = { new ItemSelectTheme(findPreference(ItemSelectTheme.NAME), activity), @@ -36,10 +37,13 @@ private void createMainSection() { (layout) -> { numpadKeyHeight.onLayoutChange(layout); numpadAlignment.onLayoutChange(layout); - }), + numpadWidth.onLayoutChange(layout); + } + ), new ItemSelectSettingsFontSize(findPreference(ItemSelectSettingsFontSize.NAME), this), numpadKeyHeight, - numpadAlignment + numpadAlignment, + numpadWidth }; for (ItemDropDown item : items) { diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemNumpadWidth.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemNumpadWidth.java new file mode 100644 index 000000000..a648498ea --- /dev/null +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemNumpadWidth.java @@ -0,0 +1,47 @@ +package io.github.sspanak.tt9.preferences.screens.appearance; + +import androidx.preference.DropDownPreference; + +import java.util.LinkedHashMap; + +import io.github.sspanak.tt9.preferences.items.ItemDropDown; +import io.github.sspanak.tt9.preferences.settings.SettingsStore; + +public class ItemNumpadWidth extends ItemDropDown { + public static final String NAME = "pref_numpad_width"; + + private final SettingsStore settings; + + public ItemNumpadWidth(DropDownPreference item, SettingsStore settings) { + super(item); + this.settings = settings; + } + + @Override + public ItemDropDown populate() { + LinkedHashMap options = new LinkedHashMap<>(); + options.put(70, "70 %"); + options.put(75, "75 %"); + options.put(80, "80 %"); + options.put(85, "85 %"); + options.put(90, "90 %"); + options.put(95, "95 %"); + options.put(100, "100 %"); + super.populateIntegers(options); + + float currentValue = 100f * settings.getNumpadWidth() / settings.getNumpadMaxWidth(); + currentValue = Math.round(currentValue / 5f) * 5f; + currentValue = Math.max(Math.min(currentValue, 100f), 50f); + + super.setValue((int) currentValue + ""); + onLayoutChange(settings.getMainViewLayout()); + + return this; + } + + void onLayoutChange(int mainViewLayout) { + if (item != null) { + item.setEnabled(mainViewLayout == SettingsStore.LAYOUT_NUMPAD); + } + } +} diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsUI.java b/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsUI.java index 1784a1bdc..e5f512c70 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsUI.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsUI.java @@ -79,6 +79,14 @@ public int getNumpadKeyHeight() { return getStringifiedInt("pref_numpad_key_height", getNumpadKeyDefaultHeight()); } + public int getNumpadMaxWidth() { + return Math.min(context.getResources().getDimensionPixelSize(R.dimen.numpad_max_width), DeviceInfo.getScreenWidth(context)); + } + + public int getNumpadWidth() { + return getStringifiedInt("pref_numpad_width", 100) * getNumpadMaxWidth() / 100; + } + public int getSettingsFontSize() { int defaultSize = DeviceInfo.isQinF21() || DeviceInfo.isLgX100S() ? FONT_SIZE_LARGE : FONT_SIZE_DEFAULT; return getStringifiedInt("pref_font_size", defaultSize); diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/MainLayoutNumpad.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/MainLayoutNumpad.java index a220f4a9e..c2d7cd436 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/main/MainLayoutNumpad.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/MainLayoutNumpad.java @@ -215,11 +215,30 @@ int getHeight(boolean forceRecalculate) { } + private void setWidth(int width) { + if (view == null || width <= 0) { + return; + } + + View widthConstraintWrapper = view.findViewById(R.id.numpad_width_constraint_wrapper); + if (widthConstraintWrapper == null) { + return; + } + + ViewGroup.LayoutParams layout = widthConstraintWrapper.getLayoutParams(); + if (layout != null) { + layout.width = width; + widthConstraintWrapper.setLayoutParams(layout); + } + } + + @Override void render() { getView(); alignView(); setKeyHeight(getKeyHeightCompat()); + setWidth(tt9.getSettings().getNumpadWidth()); enableClickHandlers(); for (SoftKey key : getKeys()) { key.render(); diff --git a/app/src/main/res/layout/main_numpad.xml b/app/src/main/res/layout/main_numpad.xml index 9c877785d..07aa23974 100644 --- a/app/src/main/res/layout/main_numpad.xml +++ b/app/src/main/res/layout/main_numpad.xml @@ -8,6 +8,7 @@ android:gravity="center_horizontal"> Suggestion list only Alignment in Landscape Mode On-screen Key Size + Width Learn Word Pairs Remember commonly used phrases to improve the suggestions accuracy. (Causes minimal lag on devices with < 2GB RAM) Status Icon diff --git a/app/src/main/res/xml/prefs_screen_appearance.xml b/app/src/main/res/xml/prefs_screen_appearance.xml index ea4a69123..255e6366f 100644 --- a/app/src/main/res/xml/prefs_screen_appearance.xml +++ b/app/src/main/res/xml/prefs_screen_appearance.xml @@ -19,6 +19,10 @@ app:key="pref_numpad_key_height" app:title="@string/pref_numpad_key_height" /> + + From e580bc4f33dc532be67d7b9fe8246e590f2086fd Mon Sep 17 00:00:00 2001 From: sspanak Date: Fri, 20 Dec 2024 12:13:54 +0200 Subject: [PATCH 2/2] translations --- app/src/main/res/values-bg/strings.xml | 5 +++-- app/src/main/res/values-de/strings.xml | 5 +++-- app/src/main/res/values-es/strings.xml | 5 +++-- app/src/main/res/values-fr/strings.xml | 5 +++-- app/src/main/res/values-it/strings.xml | 5 +++-- app/src/main/res/values-iw/strings.xml | 5 +++-- app/src/main/res/values-lt/strings.xml | 5 +++-- app/src/main/res/values-nl/strings.xml | 5 +++-- app/src/main/res/values-pt-rBR/strings.xml | 5 +++-- app/src/main/res/values-ru/strings.xml | 5 +++-- app/src/main/res/values-tr/strings.xml | 5 +++-- app/src/main/res/values-uk/strings.xml | 5 +++-- app/src/main/res/values/strings.xml | 4 ++-- 13 files changed, 38 insertions(+), 26 deletions(-) diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index 59d1133e6..d6d0a6a71 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -26,6 +26,7 @@ Връщай списъка с предложения при натискане на Backspace на края на дума. (Не работи в някои приложения.) Езици Изтрий всички + Ширина Запомняне на двойки думи Запомняй често ползвани фрази, за по-точно подсказване на думи. (Причинява минимално забавяне на устройства с < 2GB RAM) Икона за състояние @@ -140,7 +141,7 @@ Експортиране на CSV… Експортиране на CSV (%1$s)… Екранна подредба - Размер на екранните клавиши + Височина Размер на шрифта в настройките По подразбиране Червен бутон @@ -159,7 +160,7 @@ Изключване на микрофона… Вибрация при натискане на виртуален клавиш. Вибрация - Подравняване в пейзажен режим + Подравняване В средата Вляво Вдясно diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 9ec5b925b..e46c0fe66 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -40,6 +40,7 @@ Wortnachbearbeitung Die Vorschlagsliste zurückbringen, indem Sie am Ende eines Wortes die Rücktaste drücken. (Nicht in allen Apps unterstützt) Sprachen + Breite Wortpaare lernen Häufig verwendete Phrasen merken, um die Genauigkeit der Vorschläge zu verbessern. (Verursacht minimale Verzögerung auf Geräten mit < 2GB RAM) Statusicon @@ -128,7 +129,7 @@ Layout auf dem Bildschirm Wörterbuchbenachrichtigungen Benachrichtigen über Wörterbuchaktualisierungen und den Ladevorgang. - Größe der Bildschirmtasten + Höhe Schriftgröße der Einstellungen Standard Befehlsliste anzeigen @@ -147,7 +148,7 @@ Spracheingabe ist nicht verfügbar Mikrofon ausschalten… Vibration - Ausrichtung im Querformatmodus + Ausrichtung In der Mitte Links Rechts diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 9ca548f97..ccf78cd6a 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -50,6 +50,7 @@ Borrar todos Borrar no seleccionados Diccionario eliminado con éxito. + Anchura Aprender pares de palabras Recordar frases de uso común para mejorar las sugerencias de palabras. (Causa retraso mínimo en dispositivos con < 2 GB de RAM) Icono de estado @@ -140,7 +141,7 @@ Exportando CSV… Exportando CSV (%1$s)… Distribución del teclado en pantalla - Tamaño de las teclas en pantalla + Altura Tamaño de fuente de configuración Predeterminado Botón rojo @@ -158,7 +159,7 @@ La entrada de voz no está disponible Apagando el micrófono… Vibración - Alineación en modo paisaje + Alineación En el centro A la izquierda A la derecha diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 77f1d79df..e219df939 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -27,6 +27,7 @@ Ramener la liste de suggestions en appuyant sur Retour arrière à la fin d\'un mot. (Non pris en charge dans certaines applications) Langues Supprimer tous + Largeur Mémoriser les paires de mots Apprendre des phrases couramment utilisées pour améliorer les suggestions. (Cause un léger ralentissement sur les appareils avec < 2GB de RAM) Icône d\'état @@ -138,7 +139,7 @@ Exportation CSV en cours… Exportation CSV en cours (%1$s)… Disposition à l\'écran - Taille des touches à l\'écran + Hauteur Taille de la police des paramètres Par défaut Bouton rouge @@ -156,7 +157,7 @@ La saisie vocale n\'est pas disponible Désactivation du microphone… Vibration - Alignement en mode paysage + Alignement Au milieu À gauche À droite diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index e5ce27e80..0bdda30ba 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -43,6 +43,7 @@ Riportare l\'elenco dei suggerimenti premendo Backspace alla fine di una parola. (Non supportato in alcune app) Lingue + Larghezza Memorizzare coppie di parole Ricordare frasi comunemente usate per migliorare i suggerimenti di parole. (Provoca un leggero ritardo su dispositivi con < 2GB di RAM) Icona di stato @@ -129,7 +130,7 @@ Layout sullo schermo Notifiche del dizionario Ricevere notifiche sugli aggiornamenti del dizionario e sul progresso del caricamento. - Dimensione dei tasti sullo schermo + Altezza Dimensione del carattere delle impostazioni Predefinita Mostra elenco comandi @@ -148,7 +149,7 @@ L\'input vocale non è disponibile Spegnimento del microfono… Vibrazione - Allineamento in modalità orizzontale + Allineamento Al centro A sinistra A destra diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index a6c4c894d..b8f72f30d 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -53,6 +53,7 @@ לרטוט בעת לחיצה על מקש וירטואלי. עזרה + רוחב ללמוד צמדי מילים לזכור ביטויים נפוצים כדי לשפר את דיוק ההצעות. (גורם לפיגור מינימלי במכשירים עם פחות מ-2GB RAM) סמל מצב @@ -141,7 +142,7 @@ תצורת המקלדת על המסך התראות מילון לקבל התראות על עדכוני המילון ועל התקדמות הטעינה. - גודל המקשים על המסך + גובה גודל הגופן בהגדרות ברירת מחדל הצג רשימת פקודות @@ -160,7 +161,7 @@ קלט קולי אינו זמין מכבה את המיקרופון… רטט - יישור במצב נוף + יישור באמצע שמאלה ימינה diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index f9931d230..22e59e2a2 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -58,6 +58,7 @@ Atvirkštinė klavišų tvarka Įjunkite šį nustatymą jei pirmoje eilutėje turite 7–8–9, o ne 1–2–3. + Plotis Išmokti žodžių poras Įsiminti dažnai naudojamas frazes, kad pagerintumėte žodžių pasiūlymus. (Sukelia minimalų vėlavimą įrenginiuose, kuriuose yra < 2 GB RAM) Būsenos piktograma @@ -149,7 +150,7 @@ Paaukoti Jei jums patinka %1$s, galite pavaišinti mane alumi čia: %2$s. Klaviatūros išdėstymas ekrane - Ekrano klavišų dydis + Aukštis Nustatymų šrifto dydis Numatytasis Raudonas mygtukas @@ -167,7 +168,7 @@ Balso įvestis nėra prieinama Išjungiamas mikrofonas… Vibracija - Lygiavimas gulsčiuoju režimu + Lygiavimas Centre Kairėje Dešinėje diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 8c1cf8e4b..03e23bbd7 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -39,6 +39,7 @@ Woordherbewerking Breng de suggestielijst terug door Backspace te drukken aan het einde van een woord. (Niet ondersteund in sommige apps) Talen + Breedte Woordenparen leren Veelgebruikte zinnen onthouden om de nauwkeurigheid van suggesties te verbeteren. (Veroorzaakt minimale vertraging op apparaten met < 2GB RAM) Statusicoon @@ -127,7 +128,7 @@ Indeling op het scherm Woordenboekmeldingen Ontvang meldingen over woordenboekupdates en de voortgang van het laden. - Grootte van de schermtoetsen + Hoogte Instellingen lettergrootte Standaard Toon opdrachtenlijst @@ -146,7 +147,7 @@ Spraakopvoer is niet beschikbaar Microfoon uitschakelen… Trilling - Uitlijning in landschapsmodus + Uitlijning In het midden Links Rechts diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index ded88cbee..7a1328ac5 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -54,6 +54,7 @@ Vibrar ao pressionar uma tecla virtual. Ajuda + Largura Aprender pares de palavras Lembrar de frases comumente usadas para melhorar as sugestões de palavras. (Causa atraso mínimo em dispositivos com < 2 GB de RAM) Ícone de status @@ -141,7 +142,7 @@ Layout na tela Notificações do dicionário Receber notificações sobre atualizações do dicionário e sobre o progresso do carregamento. - Tamanho das teclas na tela + Altura Tamanho da fonte das configurações Padrão Lista de comandos @@ -160,7 +161,7 @@ A entrada de voz não está disponível Desligando o microfone… Vibração - Alinhamento no modo paisagem + Alinhamento No meio À esquerda À direita diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index b6de5dfbe..a039e164b 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -27,6 +27,7 @@ Вернуть список предложений, нажав клавишу Backspace в конце слова. (Не поддерживается в некоторых приложениях) Языки Удалить все + Ширина Запоминать пары слов Запоминать часто используемые фразы для улучшения предложений слов. (Вызывает минимальную задержку на устройствах с < 2 ГБ RAM) Иконка состояния @@ -140,7 +141,7 @@ Экспорт CSV… Экспорт CSV (%1$s)… Экранная раскладка - Размер экранных клавиш + Высота Размер шрифта в настройках По умолчанию Красная кнопка @@ -158,7 +159,7 @@ Голосовой ввод недоступен Отключение микрофона… Вибрация - Выравнивание в ландшафтном режиме + Выравнивание Посередине Налево Направо diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 6fdfbed0a..77300165f 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -41,6 +41,7 @@ Kelimenin sonunda Geri tuşuna basarak öneri listesini geri getirmek. (Bazı uygulamalarda desteklenmez) Diller + Genişlik Kelime çiftlerini öğren Öneri doğruluğunu artırmak için sık kullanılan ifadeleri hatırla. (2 GB RAM\'den az cihazlarda minimum gecikmeye neden olur) Durum @@ -127,7 +128,7 @@ Ekran Düzeni Sözlük Bildirimleri Sözlük güncelleme ve yüklemeleri hakkında bildirimde bulunun. - Ekran tuşlarının boyutu + Yükseklik Yazı tipi boyutunu ayarla Standart @@ -161,7 +162,7 @@ Sesli giriş kullanılamıyor Mikrofon kapatılıyor… Titreşim - Yatay modda hizalama + Hizalama Ortada Sola Sağa diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 822a360da..34ab1719c 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -64,6 +64,7 @@ Зворотній порядок клавіш Використовуйте це налаштування, якщо у вас в першому ряді 7–8–9 замість 1–2–3. + Ширина Запам’ятовувати пари слів Запам\'ятовувати часто вживані фрази для покращення пропозицій слів. (Спричиняє мінімальну затримку на пристроях з < 2 ГБ RAM) Іконка статусу @@ -151,7 +152,7 @@ Експорт CSV… Експорт CSV (%1$s)… Екранна розкладка - Розмір екранних клавіш + Висота Розмір шрифту у налаштуваннях За замовчуванням Червона кнопка @@ -169,7 +170,7 @@ Голосовий ввід недоступний Вимикання мікрофона… Вібрація - Вирівнювання в ландшафтному режимі + Вирівнювання Посередині Ліворуч Праворуч diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index eef445bfe..18d94b019 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -79,8 +79,8 @@ Function keys Invisible Suggestion list only - Alignment in Landscape Mode - On-screen Key Size + Alignment + Height Width Learn Word Pairs Remember commonly used phrases to improve the suggestions accuracy. (Causes minimal lag on devices with < 2GB RAM)