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 d5099e88..3d3ed0e0 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 @@ -26,7 +26,10 @@ public class AppearanceScreen extends BaseScreenFragment { (new ItemStatusIcon(findPreference(ItemStatusIcon.NAME), activity.getSettings())).populate(); ItemHapticFeedback hapticFeedback = (new ItemHapticFeedback(findPreference(ItemHapticFeedback.NAME), activity.getSettings())).populate(); + ItemNumpadAlignment numpadAlignment = new ItemNumpadAlignment(findPreference(ItemNumpadAlignment.NAME), activity.getSettings()); ItemNumpadKeyHeight numpadKeyHeight = new ItemNumpadKeyHeight(findPreference(ItemNumpadKeyHeight.NAME), activity.getSettings()); + + ItemDropDown[] items = { new ItemSelectTheme(findPreference(ItemSelectTheme.NAME), activity), new ItemSelectLayoutType( @@ -35,9 +38,11 @@ public class AppearanceScreen extends BaseScreenFragment { (layout) -> { hapticFeedback.onLayoutChange(layout); numpadKeyHeight.onLayoutChange(layout); + numpadAlignment.onLayoutChange(layout); }), new ItemSelectSettingsFontSize(findPreference(ItemSelectSettingsFontSize.NAME), this), - numpadKeyHeight + numpadKeyHeight, + numpadAlignment }; for (ItemDropDown item : items) { diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemNumpadAlignment.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemNumpadAlignment.java new file mode 100644 index 00000000..eaa51f44 --- /dev/null +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemNumpadAlignment.java @@ -0,0 +1,55 @@ +package io.github.sspanak.tt9.preferences.screens.appearance; + +import android.content.Context; +import android.os.Build; +import android.view.Gravity; + +import androidx.preference.DropDownPreference; + +import java.util.LinkedHashMap; + +import io.github.sspanak.tt9.R; +import io.github.sspanak.tt9.preferences.items.ItemDropDown; +import io.github.sspanak.tt9.preferences.settings.SettingsStore; + +public class ItemNumpadAlignment extends ItemDropDown { + public static final String NAME = "pref_numpad_alignment"; + + private final SettingsStore settings; + + ItemNumpadAlignment(DropDownPreference item, SettingsStore settings) { + super(item); + this.settings = settings; + } + + @Override + public ItemDropDown populate() { + if (item == null) { + return this; + } + + Context context = item.getContext(); + + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { + item.setVisible(false); + return this; + } + + LinkedHashMap options = new LinkedHashMap<>(); + options.put(Gravity.START, context.getString(R.string.virtual_numpad_alignment_left)); + options.put(Gravity.CENTER_HORIZONTAL, context.getString(R.string.virtual_numpad_alignment_center)); + options.put(Gravity.END, context.getString(R.string.virtual_numpad_alignment_right)); + + super.populateIntegers(options); + super.setValue(settings.getNumpadKeyAlignment() + ""); + 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 fb84b2b3..daa0b7d2 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 @@ -2,6 +2,7 @@ package io.github.sspanak.tt9.preferences.settings; import android.content.Context; import android.content.res.Configuration; +import android.view.Gravity; import androidx.appcompat.app.AppCompatDelegate; @@ -38,6 +39,10 @@ public class SettingsUI extends SettingsTyping { return prefs.getBoolean("pref_haptic_feedback", true); } + public int getNumpadKeyAlignment() { + return getStringifiedInt("pref_numpad_alignment", Gravity.CENTER_HORIZONTAL); + } + public int getNumpadKeyDefaultHeight() { return context.getResources().getDimensionPixelSize(R.dimen.numpad_key_height); } 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 276cd69e..e2e6df46 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 @@ -1,8 +1,11 @@ package io.github.sspanak.tt9.ui.main; import android.content.res.Resources; +import android.os.Build; +import android.view.Gravity; import android.view.View; import android.view.ViewGroup; +import android.widget.LinearLayout; import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; @@ -24,6 +27,16 @@ class MainLayoutNumpad extends BaseMainLayout { super(tt9, R.layout.main_numpad); } + private void alignView() { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M || view == null) { + return; + } + + LinearLayout container = view.findViewById(R.id.numpad_container); + if (container != null) { + container.setGravity(tt9.getSettings().getNumpadKeyAlignment()); + } + } private int getBackgroundColor(@NonNull View contextView, boolean dark) { return ContextCompat.getColor( @@ -123,6 +136,7 @@ class MainLayoutNumpad extends BaseMainLayout { @Override void render() { getView(); + alignView(); setKeyHeight(getKeyHeightCompat()); enableClickHandlers(); for (SoftKey key : getKeys()) { diff --git a/app/src/main/res/layout/main_numpad.xml b/app/src/main/res/layout/main_numpad.xml index 8505b295..5c8309be 100644 --- a/app/src/main/res/layout/main_numpad.xml +++ b/app/src/main/res/layout/main_numpad.xml @@ -2,6 +2,7 @@ diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index b3e6e7d6..ddf9134e 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -16,7 +16,7 @@ Добавяне на дума Изберете команда За приложението - Цифрова клавиатура (БЕТА) + Цифрова клавиатура Функционални клавиши Невидим режим Само списък с думи @@ -144,4 +144,8 @@ Изключване на микрофона… Вибрация при натискане на виртуален клавиш Вибрация + Подравняване в пейзажен режим + В средата + Вляво + Вдясно diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index a4caa379..60758461 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -17,7 +17,7 @@ Einen Befehl auswählen Über die Anwendung - Ziffernblock (BETA) + Ziffernblock Funktionstasten Unsichtbarer Modus Nur Wortliste @@ -137,4 +137,8 @@ Spracheingabe ist nicht verfügbar Mikrofon ausschalten… Vibration + Ausrichtung im Querformatmodus + 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 303f89b9..a1b92736 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -6,7 +6,7 @@ ¿Agregar la palabra \"%1$s\" a %2$s? Mueve el cursor dentro de una palabra para añadirla. Palabra en blanco no agregada. - Teclado numérico (BETA) + Teclado numérico Teclas de función Modo invisible Solo lista de palabras @@ -144,4 +144,8 @@ La entrada de voz no está disponible Apagando el micrófono… Vibración + Alineación en modo paisaje + 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 934ce557..cf0f900d 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -16,7 +16,7 @@ Ajouter un mot Sélectionner une commande À propos de l\'application - Pavé numérique (BETA) + Pavé numérique Touches de fonction Invisible Seulement liste de mots @@ -142,4 +142,8 @@ La saisie vocale n\'est pas disponible Désactivation du microphone… Vibration + Alignement en mode paysage + 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 6e649f2f..749ec4e7 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -19,7 +19,7 @@ Selezionare un comando Sull\'applicazione - Tastierino numerico (BETA) + Tastierino numerico Tasti di funzione Invisibile Solo elenco delle parole @@ -137,5 +137,9 @@ L\'input vocale non è disponibile Spegnimento del microfono… Vibrazione + Allineamento in modalità orizzontale + 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 5c105ae3..c7b53568 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -45,7 +45,7 @@ שפות ערכת נושא שחורה תו ללחיצה מרובה על מקש 0 - לוח מספרים (BETA) + לוח מספרים מקשי פונקציה מצב בלתי נראה רשימת מילים בלבד @@ -147,4 +147,8 @@ קלט קולי אינו זמין מכבה את המיקרופון… רטט + יישור במצב נוף + באמצע + שמאלה + ימינה diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 071e649f..d282964d 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -50,7 +50,7 @@ Automatiškai Įterpiamas simbolis, kai du kartus paspaudžiamas \"0\" mygtukas Siųskite pranešimus „Messenger“ programėlėje naudodami „OK“ - Skaičių klaviatūra (BETA) + Skaičių klaviatūra Funkcijos klavišai Nematomas režimas Tik žodžių sąrašas @@ -153,4 +153,8 @@ Balso įvestis nėra prieinama Išjungiamas mikrofonas… Vibracija + Lygiavimas gulsčiuoju režimu + 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 31b7bd8c..3f521377 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -16,7 +16,7 @@ Woord toevoegen Een commando selecteren Over de applicatie - Numeriek toetsenbord (BETA) + Numeriek toetsenbord Functieknoppen Onzichtbare modus Alleen suggestielijst @@ -135,4 +135,8 @@ Spraakopvoer is niet beschikbaar Microfoon uitschakelen… Trilling + Uitlijning in landschapsmodus + 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 1880eb14..929ef1f2 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -46,7 +46,7 @@ Idiomas Modo Escuro Caractere para toque duplo na tecla 0 - Teclado numérico (BETA) + Teclado numérico Teclas de função Modo invisível Apenas lista de palavras @@ -147,4 +147,8 @@ A entrada de voz não está disponível Desligando o microfone… Vibração + Alinhamento no modo paisagem + 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 4ffdc28a..e6c63361 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -16,7 +16,7 @@ Добавить слово Выбрать команду О приложении - Цифровая клавиатура (БЕТА) + Цифровая клавиатура Функциональные клавиши Невидимый режим Только список слов @@ -144,4 +144,8 @@ Голосовой ввод недоступен Отключение микрофона… Вибрация + Выравнивание в ландшафтном режиме + Посередине + Налево + Направо diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 9d05e76c..aa501f26 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -17,7 +17,7 @@ Bir komut seç Hakkında - Sanal Tuş Takımı (BETA) + Sanal Tuş Takımı İşlevsel Tuşlar Görünmez Sadece Tahminler @@ -147,4 +147,8 @@ Sesli giriş kullanılamıyor Mikrofon kapatılıyor… Titreşim + Yatay modda 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 96ff2429..b153ce8e 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -57,7 +57,7 @@ Відправляти повідомлення по натиску \"OK\" в Messenger Захист від випадкового повторення натискань Вимкнено - Цифрова клавіатура (БЕТА) + Цифрова клавіатура Функціональні клавіші Невидимий режим Лише список слів @@ -155,4 +155,8 @@ Голосовий ввід недоступний Вимикання мікрофона… Вібрація + Вирівнювання в ландшафтному режимі + Посередині + Ліворуч + Праворуч diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 29f1ea5e..b53ffbcf 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -68,10 +68,11 @@ Vibrate when a virtual key is pressed. Help On-screen Layout - Virtual numpad (BETA) + Virtual numpad Function keys Invisible Suggestion list only + Alignment in Landscape Mode On-screen Key Size Settings Font Size Default @@ -169,6 +170,10 @@ New Line Space + Middle + Left + Right + Kbd Cmd Del diff --git a/app/src/main/res/xml/prefs_screen_appearance.xml b/app/src/main/res/xml/prefs_screen_appearance.xml index 8fe6863e..74ce316b 100644 --- a/app/src/main/res/xml/prefs_screen_appearance.xml +++ b/app/src/main/res/xml/prefs_screen_appearance.xml @@ -6,27 +6,28 @@ app:key="pref_theme" app:title="@string/pref_dark_theme" /> + + - + + - + - - - + + @@ -39,6 +40,11 @@ app:key="pref_clear_insets" app:title="@string/pref_hack_always_on_top" /> + +