1
0
Fork 0

added new visualization hacks for mitigating problems on Sonim phones

This commit is contained in:
sspanak 2024-04-25 17:58:49 +03:00 committed by Dimo Karaivanov
parent 0c32a2f113
commit 72a26c920d
22 changed files with 231 additions and 48 deletions

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -42,6 +42,10 @@
<string name="pref_category_appearance">Облик</string>
<string name="pref_category_function_keys">Бутони за бърз достъп</string>
<string name="pref_hack_fb_messenger">Изпращай с „ОК“ във Facebook Messenger</string>
<string name="pref_hack_always_on_top">Винаги видим</string>
<string name="pref_hack_always_on_top_summary">Не позволява на другите приложения да покриват %1$s или да го изместват извън екрана.</string>
<string name="pref_hack_candidate_view">Алтернативен метод за изобразяване</string>
<string name="pref_hack_candidate_view_summary">Включете, ако %1$s става невидим в някои приложения или изобщо не се активира. След промяната на тази опция е необходимо да рестартирате.</string>
<string name="pref_hack_google_chat">Изпращай съобщения с „ОК“ в Google Chat</string>
<string name="key_back">Назад</string>
<string name="key_call">Зелена слушалка</string>

View file

@ -28,7 +28,7 @@
<string name="pref_abc_auto_accept_normal">Mäßig</string>
<string name="pref_abc_auto_accept_slow">Langsam</string>
<string name="pref_alternative_suggestion_scrolling">Alternative Wort-Scroll-Methode</string>
<string name="pref_alternative_suggestion_scrolling_summary">Aktivieren, wenn Sie manchmal nicht alle Vorschläge sehen können oder Probleme beim Scrollen haben (Android 9 oder älter).</string>
<string name="pref_alternative_suggestion_scrolling_summary">Aktivieren Sie, wenn Sie manchmal nicht alle Vorschläge sehen können oder Probleme beim Scrollen haben (Android 9 oder älter).</string>
<string name="pref_auto_text_case">Automatische Großbuchstaben</string>
<string name="pref_auto_text_case_summary">Automatisch Sätze mit einem Großbuchstaben beginnen.</string>
<string name="pref_auto_capitals_after_newline">Automatische Großbuchstaben auf jeder Zeile</string>
@ -94,6 +94,10 @@
<string name="donate_summary">Wenn Ihnen %1$s gefällt, könnten Sie die Entwicklung auf %2$s unterstützen.</string>
<string name="pref_hack_fb_messenger">Mit \"OK\" in Facebook Messenger senden</string>
<string name="pref_double_zero_char">Zeichen bei doppeltem Drücken der Taste „0“</string>
<string name="pref_hack_always_on_top">Immer im Vordergrund</string>
<string name="pref_hack_always_on_top_summary">Andere Anwendungen nicht erlauben, %1$s zu überdecken oder vom Bildschirm zu schieben.</string>
<string name="pref_hack_candidate_view">Alternative Anzeigemethode</string>
<string name="pref_hack_candidate_view_summary">Aktivieren Sie, wenn %1$s in einigen Apps unsichtbar wird oder überhaupt nicht aktiviert wird. Nach dem Ändern dieser Option ist ein Neustart erforderlich.</string>
<string name="pref_hack_google_chat">Nachrichten mit \"OK\" in Google Chat senden</string>
<string name="pref_hack_key_pad_debounce_time">Schutz vor versehentlichem Tastenwiederholen</string>
<string name="pref_hack_key_pad_debounce_off">Aus</string>

View file

@ -59,7 +59,7 @@
<string name="pref_abc_auto_accept_normal">Moderado</string>
<string name="pref_abc_auto_accept_slow">Lento</string>
<string name="pref_alternative_suggestion_scrolling">Método alternativo de desplazamiento de sugerencias</string>
<string name="pref_alternative_suggestion_scrolling_summary">Habilitar si a veces no puedes ver todas las sugerencias o tienes problemas para desplazarte por ellas (Android 9 o anterior).</string>
<string name="pref_alternative_suggestion_scrolling_summary">Habilítelo si a veces no puedes ver todas las sugerencias o tienes problemas para desplazarte por ellas (Android 9 o anterior).</string>
<string name="pref_auto_space">Espacio automático</string>
<string name="pref_auto_space_summary">Insertar un espacio automático después de palabras y signos de puntuación.</string>
<string name="pref_double_zero_char">Carácter cuando se presiona \"0\" dos veces</string>
@ -114,6 +114,10 @@
<string name="donate_title">Donar</string>
<string name="donate_summary">Si te gusta %1$s, podrías apoyar su desarrollo en: %2$s.</string>
<string name="pref_hack_fb_messenger">Enviar con «OK» en Facebook Messenger</string>
<string name="pref_hack_always_on_top">Siempre encima</string>
<string name="pref_hack_always_on_top_summary">No permitir que otras aplicaciones cubran %1$s o lo empujen fuera de la pantalla.</string>
<string name="pref_hack_candidate_view">Método de visualización alternativo</string>
<string name="pref_hack_candidate_view_summary">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.</string>
<string name="pref_hack_google_chat">Enviar mensajes con «OK» en Google Chat</string>
<string name="pref_hack_key_pad_debounce_time">Protección contra la repetición accidental de teclas</string>
<string name="pref_hack_key_pad_debounce_off">Apagado</string>

View file

@ -42,6 +42,10 @@
<string name="dictionary_load_bad_char">Echec du chargement. Mot inadmissible «%1$s» à la ligne %2$d de langue «%3$s».</string>
<string name="dictionary_truncated">Le dictionaire est supprimé avec succès.</string>
<string name="pref_hack_fb_messenger">Envoyer avec «OK» dans Facebook Messenger</string>
<string name="pref_hack_always_on_top">Toujours au premier plan</string>
<string name="pref_hack_always_on_top_summary">Ne pas permettre aux autres applications de couvrir %1$s ou de le pousser hors de l\'écran.</string>
<string name="pref_hack_candidate_view">Méthode d\'affichage alternative</string>
<string name="pref_hack_candidate_view_summary">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.</string>
<string name="pref_hack_google_chat">Envoyer des messages avec «OK» dans Google Chat</string>
<string name="dictionary_loading_indeterminate">Chargement du dictionnaire</string>
<string name="dictionary_load_cancelled">Chargement est annulé.</string>
@ -53,7 +57,7 @@
<string name="pref_abc_auto_accept_normal">Modérée</string>
<string name="pref_abc_auto_accept_slow">Lente</string>
<string name="pref_alternative_suggestion_scrolling">Méthode alternative de défilement des mots</string>
<string name="pref_alternative_suggestion_scrolling_summary">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).</string>
<string name="pref_alternative_suggestion_scrolling_summary">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).</string>
<string name="pref_auto_space">Espace automatique</string>
<string name="pref_auto_text_case">Majuscules automatiques</string>
<string name="pref_auto_space_summary">Ajouter automatiquement un espace après signes de ponctuation et mots.</string>

View file

@ -96,6 +96,10 @@
<string name="donate_summary">Se ti piace %1$s, potresti supportarne lo sviluppo su: %2$s.</string>
<string name="pref_hack_fb_messenger">Inviare con \"OK\" su Facebook Messenger</string>
<string name="pref_double_zero_char">Simbolo quando si preme due volte il tasto \"0\"</string>
<string name="pref_hack_always_on_top">Sempre in primo piano</string>
<string name="pref_hack_always_on_top_summary">Non consentire ad altre applicazioni di coprire %1$s o di spingerlo fuori dallo schermo.</string>
<string name="pref_hack_candidate_view">Metodo di visualizzazione alternativo</string>
<string name="pref_hack_candidate_view_summary">Abilita se %1$s diventa invisibile in alcune app o non si attiva affatto. È necessario riavviare dopo aver modificato questa opzione.</string>
<string name="pref_hack_google_chat">Inviare messaggi con \"OK\" su Google Chat</string>
<string name="pref_hack_key_pad_debounce_time">Protezione contro la ripetizione accidentale dei tasti</string>
<string name="pref_hack_key_pad_debounce_off">Spento</string>

View file

@ -111,6 +111,10 @@
<string name="donate_title">לִתְרוֹם</string>
<string name="donate_summary">אם אתה אוהב את %1$s, תוכל לתמוך בפיתוח שלו בכתובת: %2$s</string>
<string name="pref_hack_fb_messenger">שלח עם \"OK\" ב-Facebook Messenger.</string>
<string name="pref_hack_always_on_top">נראה תמיד</string>
<string name="pref_hack_always_on_top_summary">אל תאפשר ליישומים אחרים לכסות %1$s או לדחות אותו מהמסך.</string>
<string name="pref_hack_candidate_view">שיטת תצוגה אלטרנטיבית</string>
<string name="pref_hack_candidate_view_summary">הפעל אם %1$s נהפך לבלתי נראה בכמה אפליקציות או אם לא מפעיל בכלל. נדרש איתחול לאחר שינוי האפשרות הזו.</string>
<string name="pref_hack_google_chat">שלח הודעות עם \"OK\" ב-Google Chat</string>
<string name="pref_hack_key_pad_debounce_time">הגנה מפני חזרת מפתח בשוגג</string>
<string name="pref_hack_key_pad_debounce_off">כבוי</string>

View file

@ -105,6 +105,10 @@
<string name="char_space">Tarpas</string>
<string name="pref_category_custom_words">Pridėtos žodžiai</string>
<string name="pref_category_delete_words">Trinti pridėtus žodžius</string>
<string name="pref_hack_always_on_top">Visada viršuje</string>
<string name="pref_hack_always_on_top_summary">Neleisti kitiems programoms uždengti %1$s arba atstumti jį nuo ekrano.</string>
<string name="pref_hack_candidate_view">Alternatyvus rodymo metodas</string>
<string name="pref_hack_candidate_view_summary">Įjungti, jei %1$s tampa nematomas kai kuriuose programose arba išvis neįsijungia. Po šios parinkties pakeitimo reikalingas iš naujo paleidimas.</string>
<string name="pref_hack_google_chat">Siųsti žinutes su „OK“ „Google Chat“ programoje</string>
<string name="pref_hack_key_pad_debounce_time">Apsauga nuo atsitiktinio rakto pasikartojimo</string>
<string name="pref_hack_key_pad_debounce_off">Išjungta</string>

View file

@ -92,6 +92,10 @@
<string name="donate_summary">Als je %1$s leuk vindt, zou je de ontwikkeling kunnen ondersteunen op: %2$s.</string>
<string name="pref_hack_fb_messenger">Verstuur met \"OK\" in Facebook Messenger</string>
<string name="pref_double_zero_char">Teken bij dubbelklikken op toets \"0\"</string>
<string name="pref_hack_always_on_top">Altijd bovenaan</string>
<string name="pref_hack_always_on_top_summary">Andere applicaties niet toestaan om %1$s te bedekken of van het scherm te duwen.</string>
<string name="pref_hack_candidate_view">Alternatieve weergavemethode</string>
<string name="pref_hack_candidate_view_summary">Inschakelen als %1$s onzichtbaar wordt in sommige apps of helemaal niet wordt geactiveerd. Een herstart is vereist na het wijzigen van deze optie.</string>
<string name="pref_hack_google_chat">Stuur berichten met \"OK\" in Google Chat</string>
<string name="pref_hack_key_pad_debounce_time">Bescherming tegen het per ongeluk herhalen van toetsen</string>
<string name="pref_hack_key_pad_debounce_off">Uit</string>

View file

@ -113,6 +113,10 @@
<string name="donate_title">Doar</string>
<string name="donate_summary">Se você gosta de %1$s, você poderia apoiar o seu desenvolvimento em: %2$s.</string>
<string name="pref_hack_fb_messenger">Enviar com \"OK\" no Facebook Messenger</string>
<string name="pref_hack_always_on_top">Sempre na frente</string>
<string name="pref_hack_always_on_top_summary">Não permitir que outras aplicações cubram %1$s ou o empurrem para fora do ecrã.</string>
<string name="pref_hack_candidate_view">Método de exibição alternativo</string>
<string name="pref_hack_candidate_view_summary">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.</string>
<string name="pref_hack_google_chat">Enviar mensagens com \"OK\" no Google Chat</string>
<string name="pref_hack_key_pad_debounce_time">Proteção contra repetição acidental de teclas</string>
<string name="pref_hack_key_pad_debounce_off">Desligado</string>

View file

@ -114,6 +114,10 @@
<string name="dictionary_update_update">Загрузить</string>
<string name="donate_title">Поддержать</string>
<string name="donate_summary">Если вам нравится %1$s, вы можете поддержать его разработку по: %2$s.</string>
<string name="pref_hack_always_on_top">Поверх других приложений</string>
<string name="pref_hack_always_on_top_summary">Не разрешать другим приложениям перекрывать %1$s или выталкивать его с экрана.</string>
<string name="pref_hack_candidate_view">Альтернативный метод отображения</string>
<string name="pref_hack_candidate_view_summary">Включите, если %1$s становится невидимым в некоторых приложениях или вообще не активируется. Перезагрузка требуется после изменения этой опции.</string>
<string name="pref_hack_google_chat">Отправка сообщения с «ОК» в Google Chat</string>
<string name="pref_hack_key_pad_debounce_time">Защита от случайного повторения нажатий</string>
<string name="pref_hack_key_pad_debounce_off">Выключена</string>

View file

@ -49,6 +49,10 @@
<string name="pref_dark_theme_no">Ні</string>
<string name="pref_dark_theme_auto">Автоматично</string>
<string name="pref_double_zero_char">Символ при подвійному натискання клавіші 0</string>
<string name="pref_hack_always_on_top">Поверх інших програм</string>
<string name="pref_hack_always_on_top_summary">Не дозволяти іншим програмам перекривати %1$s або змушувати його зникати з екрану.</string>
<string name="pref_hack_candidate_view">Альтернативний метод відображення</string>
<string name="pref_hack_candidate_view_summary">Увімкніть, якщо %1$s стає невидимим у деяких додатках або взагалі не активується. Перезавантаження потрібно після зміни цієї опції.</string>
<string name="pref_hack_google_chat">Відправляти повідомлення по натиску \"OK\" в Google Chat</string>
<string name="pref_hack_fb_messenger">Відправляти повідомлення по натиску \"OK\" в Messenger</string>
<string name="pref_hack_key_pad_debounce_time">Захист від випадкового повторення натискань</string>

View file

@ -54,6 +54,10 @@
<string name="pref_dark_theme_no">No</string>
<string name="pref_dark_theme_auto">Auto</string>
<string name="pref_double_zero_char">Character for Double 0-key Press</string>
<string name="pref_hack_always_on_top">Always on Top</string>
<string name="pref_hack_always_on_top_summary">Prevent other apps from covering %1$s or pushing it off the screen.</string>
<string name="pref_hack_candidate_view">Alternative Display Method</string>
<string name="pref_hack_candidate_view_summary">Enable if %1$s becomes invisible in some apps or does not activate at all. Changing this setting requires a reboot.</string>
<string name="pref_hack_google_chat">Send messages with \"OK\" in Google Chat</string>
<string name="pref_hack_fb_messenger">Send with \"OK\" in Facebook Messenger</string>
<string name="pref_hack_key_pad_debounce_time">Accidental Key Repeat Protection</string>

View file

@ -19,4 +19,16 @@
app:key="pref_font_size"
app:title="@string/pref_font_size" />
<PreferenceCategory app:title="@string/pref_category_hacks">
<SwitchPreferenceCompat
app:key="pref_candidates_view"
app:title="@string/pref_hack_candidate_view" />
<SwitchPreferenceCompat
app:key="pref_clear_insets"
app:title="@string/pref_hack_always_on_top" />
</PreferenceCategory>
</PreferenceScreen>