1
0
Fork 0

numpad alignment setting

This commit is contained in:
sspanak 2024-06-28 12:29:02 +03:00 committed by Dimo Karaivanov
parent d7043060d0
commit 44a0ca0f4c
19 changed files with 168 additions and 29 deletions

View file

@ -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) {

View file

@ -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<Integer, String> 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);
}
}
}

View file

@ -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);
}

View file

@ -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()) {

View file

@ -2,6 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/numpad_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal">

View file

@ -16,7 +16,7 @@
<string name="add_word_title">Добавяне на дума</string>
<string name="commands_select_command">Изберете команда</string>
<string name="pref_category_about">За приложението</string>
<string name="pref_layout_numpad">Цифрова клавиатура (БЕТА)</string>
<string name="pref_layout_numpad">Цифрова клавиатура</string>
<string name="pref_layout_small">Функционални клавиши</string>
<string name="pref_layout_stealth">Невидим режим</string>
<string name="pref_layout_tray">Само списък с думи</string>
@ -144,4 +144,8 @@
<string name="voice_input_stopping">Изключване на микрофона…</string>
<string name="pref_haptic_feedback_summary">Вибрация при натискане на виртуален клавиш</string>
<string name="pref_haptic_feedback">Вибрация</string>
<string name="pref_numpad_alignment">Подравняване в пейзажен режим</string>
<string name="virtual_numpad_alignment_center">В средата</string>
<string name="virtual_numpad_alignment_left">Вляво</string>
<string name="virtual_numpad_alignment_right">Вдясно</string>
</resources>

View file

@ -17,7 +17,7 @@
<string name="commands_select_command">Einen Befehl auswählen</string>
<string name="pref_category_about">Über die Anwendung</string>
<string name="pref_layout_numpad">Ziffernblock (BETA)</string>
<string name="pref_layout_numpad">Ziffernblock</string>
<string name="pref_layout_small">Funktionstasten</string>
<string name="pref_layout_stealth">Unsichtbarer Modus</string>
<string name="pref_layout_tray">Nur Wortliste</string>
@ -137,4 +137,8 @@
<string name="voice_input_error_not_available">Spracheingabe ist nicht verfügbar</string>
<string name="voice_input_stopping">Mikrofon ausschalten…</string>
<string name="pref_haptic_feedback">Vibration</string>
<string name="pref_numpad_alignment">Ausrichtung im Querformatmodus</string>
<string name="virtual_numpad_alignment_center">In der Mitte</string>
<string name="virtual_numpad_alignment_left">Links</string>
<string name="virtual_numpad_alignment_right">Rechts</string>
</resources>

View file

@ -6,7 +6,7 @@
<string name="add_word_confirm">¿Agregar la palabra \"%1$s\" a %2$s?</string>
<string name="add_word_no_selection">Mueve el cursor dentro de una palabra para añadirla.</string>
<string name="add_word_blank">Palabra en blanco no agregada.</string>
<string name="pref_layout_numpad">Teclado numérico (BETA)</string>
<string name="pref_layout_numpad">Teclado numérico</string>
<string name="pref_layout_small">Teclas de función</string>
<string name="pref_layout_stealth">Modo invisible</string>
<string name="pref_layout_tray">Solo lista de palabras</string>
@ -144,4 +144,8 @@
<string name="voice_input_error_not_available">La entrada de voz no está disponible</string>
<string name="voice_input_stopping">Apagando el micrófono…</string>
<string name="pref_haptic_feedback">Vibración</string>
<string name="pref_numpad_alignment">Alineación en modo paisaje</string>
<string name="virtual_numpad_alignment_center">En el centro</string>
<string name="virtual_numpad_alignment_left">A la izquierda</string>
<string name="virtual_numpad_alignment_right">A la derecha</string>
</resources>

View file

@ -16,7 +16,7 @@
<string name="add_word_title">Ajouter un mot</string>
<string name="commands_select_command">Sélectionner une commande</string>
<string name="pref_category_about">À propos de l\'application</string>
<string name="pref_layout_numpad">Pavé numérique (BETA)</string>
<string name="pref_layout_numpad">Pavé numérique</string>
<string name="pref_layout_small">Touches de fonction</string>
<string name="pref_layout_stealth">Invisible</string>
<string name="pref_layout_tray">Seulement liste de mots</string>
@ -142,4 +142,8 @@
<string name="voice_input_error_not_available">La saisie vocale n\'est pas disponible</string>
<string name="voice_input_stopping">Désactivation du microphone…</string>
<string name="pref_haptic_feedback">Vibration</string>
<string name="pref_numpad_alignment">Alignement en mode paysage</string>
<string name="virtual_numpad_alignment_center">Au milieu</string>
<string name="virtual_numpad_alignment_left">À gauche</string>
<string name="virtual_numpad_alignment_right">À droite</string>
</resources>

View file

@ -19,7 +19,7 @@
<string name="commands_select_command">Selezionare un comando</string>
<string name="pref_category_about">Sull\'applicazione</string>
<string name="pref_layout_numpad">Tastierino numerico (BETA)</string>
<string name="pref_layout_numpad">Tastierino numerico</string>
<string name="pref_layout_small">Tasti di funzione</string>
<string name="pref_layout_stealth">Invisibile</string>
<string name="pref_layout_tray">Solo elenco delle parole</string>
@ -137,5 +137,9 @@
<string name="voice_input_error_not_available">L\'input vocale non è disponibile</string>
<string name="voice_input_stopping">Spegnimento del microfono…</string>
<string name="pref_haptic_feedback">Vibrazione</string>
<string name="pref_numpad_alignment">Allineamento in modalità orizzontale</string>
<string name="virtual_numpad_alignment_center">Al centro</string>
<string name="virtual_numpad_alignment_left">A sinistra</string>
<string name="virtual_numpad_alignment_right">A destra</string>
</resources>

View file

@ -45,7 +45,7 @@
<string name="pref_choose_languages">שפות</string>
<string name="pref_dark_theme">ערכת נושא שחורה</string>
<string name="pref_double_zero_char">תו ללחיצה מרובה על מקש 0</string>
<string name="pref_layout_numpad">לוח מספרים (BETA)</string>
<string name="pref_layout_numpad">לוח מספרים</string>
<string name="pref_layout_small">מקשי פונקציה</string>
<string name="pref_layout_stealth">מצב בלתי נראה</string>
<string name="pref_layout_tray">רשימת מילים בלבד</string>
@ -147,4 +147,8 @@
<string name="voice_input_error_not_available">קלט קולי אינו זמין</string>
<string name="voice_input_stopping">מכבה את המיקרופון…</string>
<string name="pref_haptic_feedback">רטט</string>
<string name="pref_numpad_alignment">יישור במצב נוף</string>
<string name="virtual_numpad_alignment_center">באמצע</string>
<string name="virtual_numpad_alignment_left">שמאלה</string>
<string name="virtual_numpad_alignment_right">ימינה</string>
</resources>

View file

@ -50,7 +50,7 @@
<string name="pref_dark_theme_auto">Automatiškai</string>
<string name="pref_double_zero_char">Įterpiamas simbolis, kai du kartus paspaudžiamas \"0\" mygtukas</string>
<string name="pref_hack_fb_messenger">Siųskite pranešimus „Messenger“ programėlėje naudodami „OK“</string>
<string name="pref_layout_numpad">Skaičių klaviatūra (BETA)</string>
<string name="pref_layout_numpad">Skaičių klaviatūra</string>
<string name="pref_layout_small">Funkcijos klavišai</string>
<string name="pref_layout_stealth">Nematomas režimas</string>
<string name="pref_layout_tray">Tik žodžių sąrašas</string>
@ -153,4 +153,8 @@
<string name="voice_input_error_not_available">Balso įvestis nėra prieinama</string>
<string name="voice_input_stopping">Išjungiamas mikrofonas…</string>
<string name="pref_haptic_feedback">Vibracija</string>
<string name="pref_numpad_alignment">Lygiavimas gulsčiuoju režimu</string>
<string name="virtual_numpad_alignment_center">Centre</string>
<string name="virtual_numpad_alignment_left">Kairėje</string>
<string name="virtual_numpad_alignment_right">Dešinėje</string>
</resources>

View file

@ -16,7 +16,7 @@
<string name="add_word_title">Woord toevoegen</string>
<string name="commands_select_command">Een commando selecteren</string>
<string name="pref_category_about">Over de applicatie</string>
<string name="pref_layout_numpad">Numeriek toetsenbord (BETA)</string>
<string name="pref_layout_numpad">Numeriek toetsenbord</string>
<string name="pref_layout_small">Functieknoppen</string>
<string name="pref_layout_stealth">Onzichtbare modus</string>
<string name="pref_layout_tray">Alleen suggestielijst</string>
@ -135,4 +135,8 @@
<string name="voice_input_error_not_available">Spraakopvoer is niet beschikbaar</string>
<string name="voice_input_stopping">Microfoon uitschakelen…</string>
<string name="pref_haptic_feedback">Trilling</string>
<string name="pref_numpad_alignment">Uitlijning in landschapsmodus</string>
<string name="virtual_numpad_alignment_center">In het midden</string>
<string name="virtual_numpad_alignment_left">Links</string>
<string name="virtual_numpad_alignment_right">Rechts</string>
</resources>

View file

@ -46,7 +46,7 @@
<string name="pref_choose_languages">Idiomas</string>
<string name="pref_dark_theme">Modo Escuro</string>
<string name="pref_double_zero_char">Caractere para toque duplo na tecla 0</string>
<string name="pref_layout_numpad">Teclado numérico (BETA)</string>
<string name="pref_layout_numpad">Teclado numérico</string>
<string name="pref_layout_small">Teclas de função</string>
<string name="pref_layout_stealth">Modo invisível</string>
<string name="pref_layout_tray">Apenas lista de palavras</string>
@ -147,4 +147,8 @@
<string name="voice_input_error_not_available">A entrada de voz não está disponível</string>
<string name="voice_input_stopping">Desligando o microfone…</string>
<string name="pref_haptic_feedback">Vibração</string>
<string name="pref_numpad_alignment">Alinhamento no modo paisagem</string>
<string name="virtual_numpad_alignment_center">No meio</string>
<string name="virtual_numpad_alignment_left">À esquerda</string>
<string name="virtual_numpad_alignment_right">À direita</string>
</resources>

View file

@ -16,7 +16,7 @@
<string name="add_word_title">Добавить слово</string>
<string name="commands_select_command">Выбрать команду</string>
<string name="pref_category_about">О приложении</string>
<string name="pref_layout_numpad">Цифровая клавиатура (БЕТА)</string>
<string name="pref_layout_numpad">Цифровая клавиатура</string>
<string name="pref_layout_small">Функциональные клавиши</string>
<string name="pref_layout_stealth">Невидимый режим</string>
<string name="pref_layout_tray">Только список слов</string>
@ -144,4 +144,8 @@
<string name="voice_input_error_not_available">Голосовой ввод недоступен</string>
<string name="voice_input_stopping">Отключение микрофона…</string>
<string name="pref_haptic_feedback">Вибрация</string>
<string name="pref_numpad_alignment">Выравнивание в ландшафтном режиме</string>
<string name="virtual_numpad_alignment_center">Посередине</string>
<string name="virtual_numpad_alignment_left">Налево</string>
<string name="virtual_numpad_alignment_right">Направо</string>
</resources>

View file

@ -17,7 +17,7 @@
<string name="commands_select_command">Bir komut seç</string>
<string name="pref_category_about">Hakkında</string>
<string name="pref_layout_numpad">Sanal Tuş Takımı (BETA)</string>
<string name="pref_layout_numpad">Sanal Tuş Takımı</string>
<string name="pref_layout_small">İşlevsel Tuşlar</string>
<string name="pref_layout_stealth">Görünmez</string>
<string name="pref_layout_tray">Sadece Tahminler</string>
@ -147,4 +147,8 @@
<string name="voice_input_error_not_available">Sesli giriş kullanılamıyor</string>
<string name="voice_input_stopping">Mikrofon kapatılıyor…</string>
<string name="pref_haptic_feedback">Titreşim</string>
<string name="pref_numpad_alignment">Yatay modda hizalama</string>
<string name="virtual_numpad_alignment_center">Ortada</string>
<string name="virtual_numpad_alignment_left">Sola</string>
<string name="virtual_numpad_alignment_right">Sağa</string>
</resources>

View file

@ -57,7 +57,7 @@
<string name="pref_hack_fb_messenger">Відправляти повідомлення по натиску \"OK\" в Messenger</string>
<string name="pref_hack_key_pad_debounce_time">Захист від випадкового повторення натискань</string>
<string name="pref_hack_key_pad_debounce_off">Вимкнено</string>
<string name="pref_layout_numpad">Цифрова клавіатура (БЕТА)</string>
<string name="pref_layout_numpad">Цифрова клавіатура</string>
<string name="pref_layout_small">Функціональні клавіші</string>
<string name="pref_layout_stealth">Невидимий режим</string>
<string name="pref_layout_tray">Лише список слів</string>
@ -155,4 +155,8 @@
<string name="voice_input_error_not_available">Голосовий ввід недоступний</string>
<string name="voice_input_stopping">Вимикання мікрофона…</string>
<string name="pref_haptic_feedback">Вібрація</string>
<string name="pref_numpad_alignment">Вирівнювання в ландшафтному режимі</string>
<string name="virtual_numpad_alignment_center">Посередині</string>
<string name="virtual_numpad_alignment_left">Ліворуч</string>
<string name="virtual_numpad_alignment_right">Праворуч</string>
</resources>

View file

@ -68,10 +68,11 @@
<string name="pref_haptic_feedback_summary">Vibrate when a virtual key is pressed.</string>
<string name="pref_help">Help</string>
<string name="pref_layout">On-screen Layout</string>
<string name="pref_layout_numpad">Virtual numpad (BETA)</string>
<string name="pref_layout_numpad">Virtual numpad</string>
<string name="pref_layout_small">Function keys</string>
<string name="pref_layout_stealth">Invisible</string>
<string name="pref_layout_tray">Suggestion list only</string>
<string name="pref_numpad_alignment">Alignment in Landscape Mode</string>
<string name="pref_numpad_key_height">On-screen Key Size</string>
<string name="pref_font_size">Settings Font Size</string>
<string name="pref_font_size_default">Default</string>
@ -169,6 +170,10 @@
<string name="char_newline">New Line</string>
<string name="char_space">Space</string>
<string name="virtual_numpad_alignment_center">Middle</string>
<string name="virtual_numpad_alignment_left">Left</string>
<string name="virtual_numpad_alignment_right">Right</string>
<string name="virtual_key_change_keyboard" translatable="false">Kbd</string>
<string name="virtual_key_command_palette" translatable="false">Cmd</string>
<string name="virtual_key_del" translatable="false">Del</string>

View file

@ -6,27 +6,28 @@
app:key="pref_theme"
app:title="@string/pref_dark_theme" />
<DropDownPreference
app:key="pref_font_size"
app:title="@string/pref_font_size" />
<DropDownPreference
app:key="pref_layout_type"
app:title="@string/pref_layout" />
<SwitchPreferenceCompat
app:key="pref_haptic_feedback"
app:title="@string/pref_haptic_feedback"
app:summary="@string/pref_haptic_feedback_summary"/>
<PreferenceCategory app:title="@string/pref_layout_numpad">
<SwitchPreferenceCompat
app:key="pref_haptic_feedback"
app:title="@string/pref_haptic_feedback"
app:summary="@string/pref_haptic_feedback_summary"/>
<DropDownPreference
app:key="pref_numpad_key_height"
app:title="@string/pref_numpad_key_height" />
<DropDownPreference
app:key="pref_numpad_key_height"
app:title="@string/pref_numpad_key_height" />
<SwitchPreferenceCompat
app:key="pref_status_icon"
app:title="@string/pref_status_icon"
app:summary="@string/pref_status_icon_summary" />
<DropDownPreference
app:key="pref_font_size"
app:title="@string/pref_font_size" />
<DropDownPreference
app:key="pref_numpad_alignment"
app:title="@string/pref_numpad_alignment" />
</PreferenceCategory>
<PreferenceCategory app:title="@string/pref_category_hacks">
@ -39,6 +40,11 @@
app:key="pref_clear_insets"
app:title="@string/pref_hack_always_on_top" />
<SwitchPreferenceCompat
app:key="pref_status_icon"
app:title="@string/pref_status_icon"
app:summary="@string/pref_status_icon_summary" />
</PreferenceCategory>
</PreferenceScreen>