From 72a26c920deb004bc3282fb2ed74ce49ae29ad06 Mon Sep 17 00:00:00 2001 From: sspanak Date: Thu, 25 Apr 2024 17:58:49 +0300 Subject: [PATCH] added new visualization hacks for mitigating problems on Sonim phones --- .../github/sspanak/tt9/hacks/DeviceInfo.java | 8 +++-- .../github/sspanak/tt9/ime/TraditionalT9.java | 29 ++++++++++----- .../tt9/preferences/items/ItemSwitch.java | 31 ++++++++++++++++ .../screens/appearance/AppearanceScreen.java | 9 +++++ .../appearance/ItemCandidatesView.java | 32 +++++++++++++++++ .../screens/appearance/ItemClearInsets.java | 32 +++++++++++++++++ .../ItemDictionaryNotifications.java | 28 ++++++--------- .../preferences/settings/SettingsHacks.java | 8 +++++ .../github/sspanak/tt9/ui/main/MainView.java | 36 ++++++++++--------- app/src/main/res/values-bg/strings.xml | 4 +++ app/src/main/res/values-de/strings.xml | 6 +++- app/src/main/res/values-es/strings.xml | 6 +++- app/src/main/res/values-fr/strings.xml | 6 +++- app/src/main/res/values-it/strings.xml | 4 +++ app/src/main/res/values-iw/strings.xml | 4 +++ app/src/main/res/values-lt/strings.xml | 4 +++ app/src/main/res/values-nl/strings.xml | 4 +++ app/src/main/res/values-pt-rBR/strings.xml | 4 +++ app/src/main/res/values-ru/strings.xml | 4 +++ app/src/main/res/values-uk/strings.xml | 4 +++ app/src/main/res/values/strings.xml | 4 +++ .../main/res/xml/prefs_screen_appearance.xml | 12 +++++++ 22 files changed, 231 insertions(+), 48 deletions(-) create mode 100644 app/src/main/java/io/github/sspanak/tt9/preferences/items/ItemSwitch.java create mode 100644 app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemCandidatesView.java create mode 100644 app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemClearInsets.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 e9160262..f3f8c03a 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 @@ -33,8 +33,12 @@ public class DeviceInfo { return Build.MANUFACTURER.equals("Sonimtech"); } - public static boolean isSonimXP3900() { - return isSonim() && Build.MODEL.contains("XP3900"); + public static boolean isSonimGen1(Context context) { + return isSonim() && noTouchScreen(context) && Build.VERSION.SDK_INT < Build.VERSION_CODES.P; + } + + public static boolean isSonimGen2(Context context) { + return isSonim() && noTouchScreen(context) && Build.VERSION.SDK_INT <= Build.VERSION_CODES.R; } @NonNull diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/TraditionalT9.java b/app/src/main/java/io/github/sspanak/tt9/ime/TraditionalT9.java index 78b886e1..fb338532 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/TraditionalT9.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/TraditionalT9.java @@ -45,17 +45,19 @@ public class TraditionalT9 extends MainViewOps { } - @Override - public View onCreateInputView() { - return createMainView(); - } + // Some devices have their own super.onCreateXxxView(), which does some magic allowing our MainView to remain visible. + // This is why we must call the super method, instead of returning null, as in the AOSP code. + @Override public View onCreateInputView() { return settings.getCandidatesView() ? super.onCreateInputView() : createMainView(); } + @Override public View onCreateCandidatesView() { return settings.getCandidatesView() ? createMainView() : super.onCreateCandidatesView(); } @Override public void onComputeInsets(Insets outInsets) { super.onComputeInsets(outInsets); - if (shouldBeVisible() && DeviceInfo.isSonimXP3900()) { - outInsets.contentTopInsets = 0; // otherwise the MainView wouldn't show up + if (shouldBeVisible() && settings.clearInsets()) { + // otherwise the MainView wouldn't show up on Sonim XP3900 + // or it expands the application window past the edge of the screen + outInsets.contentTopInsets = 0; } } @@ -122,7 +124,13 @@ public class TraditionalT9 extends MainViewOps { private void initTray() { - setInputView(mainView.getView()); + if (settings.getCandidatesView()) { + setCandidatesView(mainView.getView()); + setInputView(mainView.getBlankView()); + } else { + setCandidatesView(mainView.getBlankView()); + setInputView(mainView.getView()); + } createSuggestionBar(mainView.getView()); statusBar = new StatusBar(mainView.getView()); } @@ -144,7 +152,9 @@ public class TraditionalT9 extends MainViewOps { setDarkTheme(); mainView.render(); - if (!isInputViewShown()) { + if (settings.getCandidatesView()) { + setCandidatesViewShown(true); + } else if (!isInputViewShown()) { updateInputViewShown(); } } @@ -178,6 +188,7 @@ public class TraditionalT9 extends MainViewOps { setStatusIcon(mInputMode); setStatusText(mInputMode.toString()); + setCandidatesViewShown(false); if (isInputViewShown()) { updateInputViewShown(); } @@ -238,7 +249,7 @@ public class TraditionalT9 extends MainViewOps { } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { - requestShowSelf(DeviceInfo.isSonimXP3900() ? 0 : InputMethodManager.SHOW_IMPLICIT); + requestShowSelf(DeviceInfo.isSonimGen2(getApplicationContext()) ? 0 : InputMethodManager.SHOW_IMPLICIT); } else { showWindow(true); } diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/items/ItemSwitch.java b/app/src/main/java/io/github/sspanak/tt9/preferences/items/ItemSwitch.java new file mode 100644 index 00000000..c4e13676 --- /dev/null +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/items/ItemSwitch.java @@ -0,0 +1,31 @@ +package io.github.sspanak.tt9.preferences.items; + +import androidx.preference.Preference; +import androidx.preference.SwitchPreferenceCompat; + +abstract public class ItemSwitch { + protected final SwitchPreferenceCompat item; + + public ItemSwitch(SwitchPreferenceCompat item) { + this.item = item; + } + + public ItemSwitch enableClickHandler() { + if (item != null) { + item.setOnPreferenceChangeListener(this::onClick); + } + + return this; + } + + protected boolean onClick(Preference p, Object newValue) { + return true; + } + + public ItemSwitch populate() { + item.setChecked(getDefaultValue()); + return this; + } + + abstract protected boolean getDefaultValue(); +} 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 bd044eef..ca9ca4dd 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 @@ -32,6 +32,15 @@ public class AppearanceScreen extends BaseScreenFragment { .preview() .enableClickHandler(); + (new ItemCandidatesView(findPreference(ItemCandidatesView.NAME), activity.getSettings())) + .populate() + .enableClickHandler(); + + (new ItemClearInsets(findPreference(ItemClearInsets.NAME), activity.getSettings())) + .populate() + .enableClickHandler(); + + resetFontSize(true); } } diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemCandidatesView.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemCandidatesView.java new file mode 100644 index 00000000..b9b26f77 --- /dev/null +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemCandidatesView.java @@ -0,0 +1,32 @@ +package io.github.sspanak.tt9.preferences.screens.appearance; + +import androidx.preference.SwitchPreferenceCompat; + +import io.github.sspanak.tt9.R; +import io.github.sspanak.tt9.preferences.items.ItemSwitch; +import io.github.sspanak.tt9.preferences.settings.SettingsStore; + +public class ItemCandidatesView extends ItemSwitch { + public static final String NAME = "pref_candidates_view"; + private final SettingsStore settings; + + public ItemCandidatesView(SwitchPreferenceCompat item, SettingsStore settings) { + super(item); + this.settings = settings; + } + + @Override + protected boolean getDefaultValue() { + return settings.getCandidatesView(); + } + + @Override + public ItemSwitch populate() { + if (item != null) { + String appName = item.getContext().getString(R.string.app_name_short); + item.setSummary(item.getContext().getString(R.string.pref_hack_candidate_view_summary, appName)); + } + + return super.populate(); + } +} diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemClearInsets.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemClearInsets.java new file mode 100644 index 00000000..3ada4797 --- /dev/null +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemClearInsets.java @@ -0,0 +1,32 @@ +package io.github.sspanak.tt9.preferences.screens.appearance; + +import androidx.preference.SwitchPreferenceCompat; + +import io.github.sspanak.tt9.R; +import io.github.sspanak.tt9.preferences.items.ItemSwitch; +import io.github.sspanak.tt9.preferences.settings.SettingsStore; + +public class ItemClearInsets extends ItemSwitch { + public static final String NAME = "pref_clear_insets"; + private final SettingsStore settings; + + public ItemClearInsets(SwitchPreferenceCompat item, SettingsStore settings) { + super(item); + this.settings = settings; + } + + @Override + protected boolean getDefaultValue() { + return settings.clearInsets(); + } + + @Override + public ItemSwitch populate() { + if (item != null) { + String appName = item.getContext().getString(R.string.app_name_short); + item.setSummary(item.getContext().getString(R.string.pref_hack_always_on_top_summary, appName)); + } + + return super.populate(); + } +} diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/languages/ItemDictionaryNotifications.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/languages/ItemDictionaryNotifications.java index 9d150723..9bc1929a 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/languages/ItemDictionaryNotifications.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/languages/ItemDictionaryNotifications.java @@ -4,42 +4,34 @@ import androidx.preference.Preference; import androidx.preference.SwitchPreferenceCompat; import io.github.sspanak.tt9.preferences.PreferencesActivity; +import io.github.sspanak.tt9.preferences.items.ItemSwitch; import io.github.sspanak.tt9.util.Permissions; -public class ItemDictionaryNotifications { +public class ItemDictionaryNotifications extends ItemSwitch { public static final String NAME = "dictionary_notifications"; - private final SwitchPreferenceCompat item; private final Permissions permissions; - public ItemDictionaryNotifications(SwitchPreferenceCompat preference, PreferencesActivity activity) { + super(preference); this.item = preference; this.permissions = new Permissions(activity); } - + @Override public ItemDictionaryNotifications populate() { - if (item == null) { - return this; - } - - boolean noPermission = permissions.noPostNotifications(); - item.setVisible(noPermission); - ((SwitchPreferenceCompat) item).setChecked(!noPermission); - - return this; - } - - - public ItemDictionaryNotifications enableClickHandler() { + super.populate(); if (item != null) { - item.setOnPreferenceChangeListener(this::onClick); + item.setVisible(!item.isChecked()); } return this; } + @Override + protected boolean getDefaultValue() { + return !permissions.noPostNotifications(); + } protected boolean onClick(Preference p, Object value) { if (value == Boolean.TRUE || permissions.noPostNotifications()) { diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsHacks.java b/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsHacks.java index 3926be51..aa616965 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsHacks.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsHacks.java @@ -32,6 +32,14 @@ class SettingsHacks extends BaseSettings { return prefs.getBoolean("pref_alternative_suggestion_scrolling", defaultOn) ? 200 : 0; } + public boolean getCandidatesView() { + return prefs.getBoolean("pref_candidates_view", DeviceInfo.isSonimGen1(context)); + } + + public boolean clearInsets() { + return prefs.getBoolean("pref_clear_insets", DeviceInfo.isSonimGen1(context) || DeviceInfo.isSonimGen2(context)); + } + public boolean getFbMessengerHack() { return prefs.getBoolean("pref_hack_fb_messenger", false); } diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/MainView.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/MainView.java index 4fd0b925..f0273d66 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/main/MainView.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/MainView.java @@ -16,25 +16,25 @@ public class MainView { forceCreateView(); } -public boolean createView() { - SettingsStore settings = tt9.getSettings(); + public boolean createView() { + SettingsStore settings = tt9.getSettings(); - if (settings.isMainLayoutNumpad() && !(main instanceof MainLayoutNumpad)) { - main = new MainLayoutNumpad(tt9); - } else if (settings.isMainLayoutSmall() && (main == null || !main.getClass().equals(MainLayoutSmall.class))) { - main = new MainLayoutSmall(tt9); - } else if (settings.isMainLayoutTray() && (main == null || !main.getClass().equals(MainLayoutTray.class))) { - main = new MainLayoutTray(tt9); - } else if (settings.isMainLayoutStealth() && !(main instanceof MainLayoutStealth)) { - main = new MainLayoutStealth(tt9); - } else { - return false; + if (settings.isMainLayoutNumpad() && !(main instanceof MainLayoutNumpad)) { + main = new MainLayoutNumpad(tt9); + } else if (settings.isMainLayoutSmall() && (main == null || !main.getClass().equals(MainLayoutSmall.class))) { + main = new MainLayoutSmall(tt9); + } else if (settings.isMainLayoutTray() && (main == null || !main.getClass().equals(MainLayoutTray.class))) { + main = new MainLayoutTray(tt9); + } else if (settings.isMainLayoutStealth() && !(main instanceof MainLayoutStealth)) { + main = new MainLayoutStealth(tt9); + } else { + return false; + } + + main.render(); + return true; } - main.render(); - return true; -} - public void forceCreateView() { main = null; @@ -44,6 +44,10 @@ public boolean createView() { } } + public View getBlankView() { + return new MainLayoutStealth(tt9).getView(); + } + public View getView() { return main.getView(); } diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index ee8e2434..dc29a5a4 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -42,6 +42,10 @@ Облик Бутони за бърз достъп Изпращай с „ОК“ във Facebook Messenger + Винаги видим + Не позволява на другите приложения да покриват %1$s или да го изместват извън екрана. + Алтернативен метод за изобразяване + Включете, ако %1$s става невидим в някои приложения или изобщо не се активира. След промяната на тази опция е необходимо да рестартирате. Изпращай съобщения с „ОК“ в Google Chat Назад Зелена слушалка diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 723d3ce1..b650c738 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -28,7 +28,7 @@ Mäßig Langsam Alternative Wort-Scroll-Methode - Aktivieren, wenn Sie manchmal nicht alle Vorschläge sehen können oder Probleme beim Scrollen haben (Android 9 oder älter). + Aktivieren Sie, wenn Sie manchmal nicht alle Vorschläge sehen können oder Probleme beim Scrollen haben (Android 9 oder älter). Automatische Großbuchstaben Automatisch Sätze mit einem Großbuchstaben beginnen. Automatische Großbuchstaben auf jeder Zeile @@ -94,6 +94,10 @@ Wenn Ihnen %1$s gefällt, könnten Sie die Entwicklung auf %2$s unterstützen. Mit \"OK\" in Facebook Messenger senden Zeichen bei doppeltem Drücken der Taste „0“ + Immer im Vordergrund + Andere Anwendungen nicht erlauben, %1$s zu überdecken oder vom Bildschirm zu schieben. + Alternative Anzeigemethode + Aktivieren Sie, wenn %1$s in einigen Apps unsichtbar wird oder überhaupt nicht aktiviert wird. Nach dem Ändern dieser Option ist ein Neustart erforderlich. Nachrichten mit \"OK\" in Google Chat senden Schutz vor versehentlichem Tastenwiederholen Aus diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index ef127b17..a97cbf67 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -59,7 +59,7 @@ Moderado Lento Método alternativo de desplazamiento de sugerencias - Habilitar si a veces no puedes ver todas las sugerencias o tienes problemas para desplazarte por ellas (Android 9 o anterior). + Habilítelo si a veces no puedes ver todas las sugerencias o tienes problemas para desplazarte por ellas (Android 9 o anterior). 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 @@ -114,6 +114,10 @@ Donar Si te gusta %1$s, podrías apoyar su desarrollo en: %2$s. Enviar con «OK» en Facebook Messenger + Siempre encima + No permitir que otras aplicaciones cubran %1$s o lo empujen fuera de la pantalla. + Método de visualización alternativo + Habilítelo si %1$s se vuelve invisible en algunas aplicaciones o no se activa en absoluto. Se requiere reiniciar después de cambiar esta opción. Enviar mensajes con «OK» en Google Chat Protección contra la repetición accidental de teclas Apagado diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 303c9e8b..0223d787 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -42,6 +42,10 @@ Echec du chargement. Mot inadmissible «%1$s» à la ligne %2$d de langue «%3$s». Le dictionaire est supprimé avec succès. Envoyer avec «OK» dans Facebook Messenger + Toujours au premier plan + Ne pas permettre aux autres applications de couvrir %1$s ou de le pousser hors de l\'écran. + Méthode d\'affichage alternative + Activez si %1$s devient invisible dans certaines applications ou ne s\'active pas du tout. Un redémarrage est nécessaire après la modification de cette option. Envoyer des messages avec «OK» dans Google Chat Chargement du dictionnaire Chargement est annulé. @@ -53,7 +57,7 @@ Modérée Lente Méthode alternative de défilement des mots - Activer si parfois vous ne pouvez pas voir toutes les suggestions ou vous avez des difficultés à les défiler (Android 9 ou plus ancien). + Activez si parfois vous ne pouvez pas voir toutes les suggestions ou vous avez des difficultés à les défiler (Android 9 ou plus ancien). Espace automatique Majuscules automatiques Ajouter automatiquement un espace après signes de ponctuation et mots. diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 842e193c..e94261a3 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -96,6 +96,10 @@ Se ti piace %1$s, potresti supportarne lo sviluppo su: %2$s. Inviare con \"OK\" su Facebook Messenger Simbolo quando si preme due volte il tasto \"0\" + Sempre in primo piano + Non consentire ad altre applicazioni di coprire %1$s o di spingerlo fuori dallo schermo. + Metodo di visualizzazione alternativo + Abilita se %1$s diventa invisibile in alcune app o non si attiva affatto. È necessario riavviare dopo aver modificato questa opzione. Inviare messaggi con \"OK\" su Google Chat Protezione contro la ripetizione accidentale dei tasti Spento diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index d1db128b..42e26e15 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -111,6 +111,10 @@ לִתְרוֹם אם אתה אוהב את %1$s, תוכל לתמוך בפיתוח שלו בכתובת: %2$s שלח עם \"OK\" ב-Facebook Messenger. + נראה תמיד + אל תאפשר ליישומים אחרים לכסות %1$s או לדחות אותו מהמסך. + שיטת תצוגה אלטרנטיבית + הפעל אם %1$s נהפך לבלתי נראה בכמה אפליקציות או אם לא מפעיל בכלל. נדרש איתחול לאחר שינוי האפשרות הזו. שלח הודעות עם \"OK\" ב-Google Chat הגנה מפני חזרת מפתח בשוגג כבוי diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 7c88a5d4..ca02ada3 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -105,6 +105,10 @@ Tarpas Pridėtos žodžiai Trinti pridėtus žodžius + Visada viršuje + Neleisti kitiems programoms uždengti %1$s arba atstumti jį nuo ekrano. + Alternatyvus rodymo metodas + Įjungti, jei %1$s tampa nematomas kai kuriuose programose arba išvis neįsijungia. Po šios parinkties pakeitimo reikalingas iš naujo paleidimas. Siųsti žinutes su „OK“ „Google Chat“ programoje Apsauga nuo atsitiktinio rakto pasikartojimo Išjungta diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index c28d9215..fe1ebab5 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -92,6 +92,10 @@ Als je %1$s leuk vindt, zou je de ontwikkeling kunnen ondersteunen op: %2$s. Verstuur met \"OK\" in Facebook Messenger Teken bij dubbelklikken op toets \"0\" + Altijd bovenaan + Andere applicaties niet toestaan om %1$s te bedekken of van het scherm te duwen. + Alternatieve weergavemethode + Inschakelen als %1$s onzichtbaar wordt in sommige apps of helemaal niet wordt geactiveerd. Een herstart is vereist na het wijzigen van deze optie. Stuur berichten met \"OK\" in Google Chat Bescherming tegen het per ongeluk herhalen van toetsen Uit diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index f913ca55..0bb46f4a 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -113,6 +113,10 @@ Doar Se você gosta de %1$s, você poderia apoiar o seu desenvolvimento em: %2$s. Enviar com \"OK\" no Facebook Messenger + Sempre na frente + Não permitir que outras aplicações cubram %1$s ou o empurrem para fora do ecrã. + Método de exibição alternativo + Ative se o %1$s se tornar invisível em alguns aplicativos ou não ativar de forma alguma. É necessário reiniciar após alterar esta opção. Enviar mensagens com \"OK\" no Google Chat Proteção contra repetição acidental de teclas Desligado diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index bd85b8ba..7ee5b7d7 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -114,6 +114,10 @@ Загрузить Поддержать Если вам нравится %1$s, вы можете поддержать его разработку по: %2$s. + Поверх других приложений + Не разрешать другим приложениям перекрывать %1$s или выталкивать его с экрана. + Альтернативный метод отображения + Включите, если %1$s становится невидимым в некоторых приложениях или вообще не активируется. Перезагрузка требуется после изменения этой опции. Отправка сообщения с «ОК» в Google Chat Защита от случайного повторения нажатий Выключена diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 12a23d3e..79f2273f 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -49,6 +49,10 @@ Ні Автоматично Символ при подвійному натискання клавіші 0 + Поверх інших програм + Не дозволяти іншим програмам перекривати %1$s або змушувати його зникати з екрану. + Альтернативний метод відображення + Увімкніть, якщо %1$s стає невидимим у деяких додатках або взагалі не активується. Перезавантаження потрібно після зміни цієї опції. Відправляти повідомлення по натиску \"OK\" в Google Chat Відправляти повідомлення по натиску \"OK\" в Messenger Захист від випадкового повторення натискань diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b86ab563..22d43ed6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -54,6 +54,10 @@ No Auto Character for Double 0-key Press + Always on Top + Prevent other apps from covering %1$s or pushing it off the screen. + Alternative Display Method + Enable if %1$s becomes invisible in some apps or does not activate at all. Changing this setting requires a reboot. Send messages with \"OK\" in Google Chat Send with \"OK\" in Facebook Messenger Accidental Key Repeat Protection diff --git a/app/src/main/res/xml/prefs_screen_appearance.xml b/app/src/main/res/xml/prefs_screen_appearance.xml index 2025958d..19e0b985 100644 --- a/app/src/main/res/xml/prefs_screen_appearance.xml +++ b/app/src/main/res/xml/prefs_screen_appearance.xml @@ -19,4 +19,16 @@ app:key="pref_font_size" app:title="@string/pref_font_size" /> + + + + + + + +