From 31ca39bfb0408b906f06175d5629cf766bfe8a59 Mon Sep 17 00:00:00 2001 From: sspanak Date: Thu, 18 Apr 2024 17:36:42 +0300 Subject: [PATCH] alternative suggestion scrolling is now enabled by default on older non-touchscreen phones --- .../ItemAlternativeSuggestionScrolling.java | 31 +++++++++++++++++++ .../screens/setup/SetupScreen.java | 7 ++--- .../preferences/settings/SettingsHacks.java | 5 ++- .../github/sspanak/tt9/util/DeviceInfo.java | 5 +++ app/src/main/res/xml/prefs_screen_setup.xml | 1 - 5 files changed, 43 insertions(+), 6 deletions(-) create mode 100644 app/src/main/java/io/github/sspanak/tt9/preferences/screens/setup/ItemAlternativeSuggestionScrolling.java diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/setup/ItemAlternativeSuggestionScrolling.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/setup/ItemAlternativeSuggestionScrolling.java new file mode 100644 index 00000000..725d62bb --- /dev/null +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/setup/ItemAlternativeSuggestionScrolling.java @@ -0,0 +1,31 @@ +package io.github.sspanak.tt9.preferences.screens.setup; + +import androidx.preference.SwitchPreferenceCompat; + +import io.github.sspanak.tt9.preferences.settings.SettingsStore; + +public class ItemAlternativeSuggestionScrolling { + public static final String NAME = "pref_alternative_suggestion_scrolling"; + + private final SwitchPreferenceCompat item; + private final SettingsStore settings; + + public ItemAlternativeSuggestionScrolling(SwitchPreferenceCompat item, SettingsStore settings) { + this.item = item; + this.settings = settings; + } + + public ItemAlternativeSuggestionScrolling populate() { + if (item != null) { + item.setChecked(settings.getSuggestionScrollingDelay() > 0); + } + + return this; + } + + public void setEnabled(boolean yes) { + if (item != null) { + item.setEnabled(yes); + } + } +} diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/setup/SetupScreen.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/setup/SetupScreen.java index af39dbf9..32e0fc8b 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/setup/SetupScreen.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/setup/SetupScreen.java @@ -47,10 +47,9 @@ public class SetupScreen extends BaseScreenFragment { } private void createHacksSection(boolean isTT9On) { - Preference altScrolling = findPreference("pref_alternative_suggestion_scrolling"); - if (altScrolling != null) { - altScrolling.setEnabled(isTT9On); - } + (new ItemAlternativeSuggestionScrolling(findPreference(ItemAlternativeSuggestionScrolling.NAME), activity.getSettings())) + .populate() + .setEnabled(isTT9On); Preference hackGoogleChat = findPreference("pref_hack_google_chat"); if (hackGoogleChat != null) { 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 b13c8a4d..eae962d2 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 @@ -1,8 +1,10 @@ package io.github.sspanak.tt9.preferences.settings; import android.content.Context; +import android.os.Build; import io.github.sspanak.tt9.preferences.screens.debug.ItemInputHandlingMode; +import io.github.sspanak.tt9.util.DeviceInfo; import io.github.sspanak.tt9.util.Logger; class SettingsHacks extends BaseSettings { @@ -26,7 +28,8 @@ class SettingsHacks extends BaseSettings { /************* hack settings *************/ public int getSuggestionScrollingDelay() { - return prefs.getBoolean("pref_alternative_suggestion_scrolling", false) ? 200 : 0; + boolean defaultOn = DeviceInfo.noTouchScreen(context) && Build.VERSION.SDK_INT < Build.VERSION_CODES.Q; + return prefs.getBoolean("pref_alternative_suggestion_scrolling", defaultOn) ? 200 : 0; } public boolean getFbMessengerHack() { diff --git a/app/src/main/java/io/github/sspanak/tt9/util/DeviceInfo.java b/app/src/main/java/io/github/sspanak/tt9/util/DeviceInfo.java index 5653b9c3..76e6e638 100644 --- a/app/src/main/java/io/github/sspanak/tt9/util/DeviceInfo.java +++ b/app/src/main/java/io/github/sspanak/tt9/util/DeviceInfo.java @@ -1,10 +1,15 @@ package io.github.sspanak.tt9.util; +import android.content.Context; import android.os.Build; import androidx.annotation.NonNull; public class DeviceInfo { + public static boolean noTouchScreen(Context context) { + return !context.getPackageManager().hasSystemFeature("android.hardware.touchscreen"); + } + public static boolean isQinF21() { return Build.MANUFACTURER.equals("DuoQin") && Build.MODEL.contains("F21"); } diff --git a/app/src/main/res/xml/prefs_screen_setup.xml b/app/src/main/res/xml/prefs_screen_setup.xml index e0eb2a46..632739b1 100644 --- a/app/src/main/res/xml/prefs_screen_setup.xml +++ b/app/src/main/res/xml/prefs_screen_setup.xml @@ -18,7 +18,6 @@ app:singleLineTitle="true">