From bd3fcc156679d81c2230a09643d2528228c1d46e Mon Sep 17 00:00:00 2001 From: sspanak Date: Tue, 27 Feb 2024 17:14:02 +0200 Subject: [PATCH] fixed the navigation from dictionary loading notification to open the Dictionaries screen --- .../tt9/preferences/PreferencesActivity.java | 25 ++++++++++--------- .../preferences/screens/AppearanceScreen.java | 2 ++ .../screens/BaseScreenFragment.java | 3 ++- .../tt9/preferences/screens/DebugScreen.java | 8 +++--- .../screens/DictionariesScreen.java | 3 +++ .../preferences/screens/HotkeysScreen.java | 2 ++ .../tt9/preferences/screens/KeyPadScreen.java | 2 ++ .../screens/MainSettingsScreen.java | 2 ++ .../tt9/preferences/screens/SetupScreen.java | 2 ++ .../preferences/screens/UsageStatsScreen.java | 8 +++--- .../sspanak/tt9/ui/DictionaryLoadingBar.java | 2 +- app/src/main/res/xml/prefs_screen_debug.xml | 2 +- .../main/res/xml/prefs_screen_usage_stats.xml | 2 +- 13 files changed, 41 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/PreferencesActivity.java b/app/src/main/java/io/github/sspanak/tt9/preferences/PreferencesActivity.java index 464602d0..d35110a1 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/PreferencesActivity.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/PreferencesActivity.java @@ -23,6 +23,7 @@ import io.github.sspanak.tt9.ime.helpers.InputModeValidator; import io.github.sspanak.tt9.ime.helpers.SystemSettings; import io.github.sspanak.tt9.preferences.helpers.Hotkeys; import io.github.sspanak.tt9.preferences.screens.AppearanceScreen; +import io.github.sspanak.tt9.preferences.screens.BaseScreenFragment; import io.github.sspanak.tt9.preferences.screens.DebugScreen; import io.github.sspanak.tt9.preferences.screens.DictionariesScreen; import io.github.sspanak.tt9.preferences.screens.HotkeysScreen; @@ -61,7 +62,7 @@ public class PreferencesActivity extends AppCompatActivity implements Preference @Override public boolean onPreferenceStartFragment(@NonNull PreferenceFragmentCompat caller, @NonNull Preference pref) { - Fragment fragment = getScreen((getScreenName(pref))); + BaseScreenFragment fragment = getScreen((getScreenName(pref))); fragment.setArguments(pref.getExtras()); displayScreen(fragment, true); return true; @@ -79,9 +80,9 @@ public class PreferencesActivity extends AppCompatActivity implements Preference String screenName = intent != null ? intent.getStringExtra("screen") : null; screenName = screenName != null ? screenName : ""; - Fragment screen = getScreen(screenName.replace("Screen", "")); + BaseScreenFragment screen = getScreen(screenName); - if (screen.getClass().getSimpleName().equals(screenName)) { + if (screen.getName().equals(screenName)) { displayScreen(screen, false); } } @@ -102,25 +103,25 @@ public class PreferencesActivity extends AppCompatActivity implements Preference * Finds a screen fragment by name. If there is no fragment with such name, the main screen * fragment will be returned. */ - private Fragment getScreen(@Nullable String name) { + private BaseScreenFragment getScreen(@Nullable String name) { if (name == null) { return new MainSettingsScreen(this); } switch (name) { - case "Appearance": + case AppearanceScreen.NAME: return new AppearanceScreen(this); - case "Debug": + case DebugScreen.NAME: return new DebugScreen(this); - case "Dictionaries": + case DictionariesScreen.NAME: return new DictionariesScreen(this); - case "Hotkeys": + case HotkeysScreen.NAME: return new HotkeysScreen(this); - case "KeyPad": + case KeyPadScreen.NAME: return new KeyPadScreen(this); - case "Setup": + case SetupScreen.NAME: return new SetupScreen(this); - case "SlowQueries": + case UsageStatsScreen.NAME: return new UsageStatsScreen(this); default: return new MainSettingsScreen(this); @@ -132,7 +133,7 @@ public class PreferencesActivity extends AppCompatActivity implements Preference * displayScreen * Replaces the currently displayed screen fragment with a new one. */ - private void displayScreen(Fragment screen, boolean addToBackStack) { + private void displayScreen(BaseScreenFragment screen, boolean addToBackStack) { FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.preferences_container, screen); diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/AppearanceScreen.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/AppearanceScreen.java index abe5c998..baee3a8a 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/AppearanceScreen.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/AppearanceScreen.java @@ -5,9 +5,11 @@ import io.github.sspanak.tt9.preferences.PreferencesActivity; import io.github.sspanak.tt9.preferences.items.ItemSelectTheme; public class AppearanceScreen extends BaseScreenFragment { + final public static String NAME = "Appearance"; public AppearanceScreen() { init(); } public AppearanceScreen(PreferencesActivity activity) { init(activity); } + @Override public String getName() { return NAME; } @Override protected int getTitle() { return R.string.pref_category_appearance; } @Override protected int getXml() { return R.xml.prefs_screen_appearance; } diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/BaseScreenFragment.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/BaseScreenFragment.java index a8620f8c..ca2f5e18 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/BaseScreenFragment.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/BaseScreenFragment.java @@ -9,7 +9,7 @@ import androidx.preference.PreferenceFragmentCompat; import io.github.sspanak.tt9.Logger; import io.github.sspanak.tt9.preferences.PreferencesActivity; -abstract class BaseScreenFragment extends PreferenceFragmentCompat { +abstract public class BaseScreenFragment extends PreferenceFragmentCompat { protected PreferencesActivity activity; @@ -69,6 +69,7 @@ abstract class BaseScreenFragment extends PreferenceFragmentCompat { } + abstract public String getName(); abstract protected int getTitle(); abstract protected int getXml(); abstract protected void onCreate(); diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/DebugScreen.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/DebugScreen.java index be0b1667..ab82d52d 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/DebugScreen.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/DebugScreen.java @@ -19,13 +19,15 @@ import io.github.sspanak.tt9.preferences.items.ItemLogLevel; import io.github.sspanak.tt9.ui.UI; public class DebugScreen extends BaseScreenFragment { - private final static String LOG_TAG = "DebugScreen"; - private final static String SYSTEM_LOGS_SWITCH = "pref_enable_system_logs"; - private final static String LOGS_CONTAINER = "debug_logs_container"; + final public static String NAME = "Debug"; + final private static String LOG_TAG = NAME + "Screen"; + final private static String SYSTEM_LOGS_SWITCH = "pref_enable_system_logs"; + final private static String LOGS_CONTAINER = "debug_logs_container"; public DebugScreen() { init(); } public DebugScreen(PreferencesActivity activity) { init(activity); } + @Override public String getName() { return NAME; } @Override protected int getTitle() { return R.string.pref_category_debug_options; } @Override protected int getXml() { return R.xml.prefs_screen_debug; } diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/DictionariesScreen.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/DictionariesScreen.java index 6b42660a..a3ca729c 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/DictionariesScreen.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/DictionariesScreen.java @@ -10,11 +10,14 @@ import io.github.sspanak.tt9.preferences.items.ItemTruncateAll; import io.github.sspanak.tt9.preferences.items.ItemTruncateUnselected; public class DictionariesScreen extends BaseScreenFragment { + final public static String NAME = "Dictionaries"; + private ItemLoadDictionary loadItem; public DictionariesScreen() { init(); } public DictionariesScreen(PreferencesActivity activity) { init(activity); } + @Override public String getName() { return NAME; } @Override protected int getTitle() { return R.string.pref_choose_languages; } @Override protected int getXml() { return R.xml.prefs_screen_dictionaries; } diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/HotkeysScreen.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/HotkeysScreen.java index deb1d210..4d091c5c 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/HotkeysScreen.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/HotkeysScreen.java @@ -10,9 +10,11 @@ import io.github.sspanak.tt9.preferences.PreferencesActivity; import io.github.sspanak.tt9.preferences.items.SectionKeymap; public class HotkeysScreen extends BaseScreenFragment { + final public static String NAME = "Hotkeys"; public HotkeysScreen() { init(); } public HotkeysScreen(PreferencesActivity activity) { init(activity); } + @Override public String getName() { return NAME; } @Override protected int getTitle() { return R.string.pref_category_function_keys; } @Override protected int getXml() { return R.xml.prefs_screen_hotkeys; } diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/KeyPadScreen.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/KeyPadScreen.java index d714b897..b5564507 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/KeyPadScreen.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/KeyPadScreen.java @@ -5,9 +5,11 @@ import io.github.sspanak.tt9.preferences.PreferencesActivity; import io.github.sspanak.tt9.preferences.items.ItemSelectZeroKeyCharacter; public class KeyPadScreen extends BaseScreenFragment { + final public static String NAME = "KeyPad"; public KeyPadScreen() { init(); } public KeyPadScreen(PreferencesActivity activity) { init(activity); } + @Override public String getName() { return NAME; } @Override protected int getTitle() { return R.string.pref_category_keypad; } @Override protected int getXml() { return R.xml.prefs_screen_keypad; } diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/MainSettingsScreen.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/MainSettingsScreen.java index 124e598e..253b38bf 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/MainSettingsScreen.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/MainSettingsScreen.java @@ -16,11 +16,13 @@ import io.github.sspanak.tt9.ime.helpers.SystemSettings; import io.github.sspanak.tt9.preferences.PreferencesActivity; public class MainSettingsScreen extends BaseScreenFragment { + final public static String NAME = "Main"; private final Pattern releaseVersionRegex = Pattern.compile("^\\d+\\.\\d+$"); public MainSettingsScreen() { init(); } public MainSettingsScreen(PreferencesActivity activity) { init(activity); } + @Override public String getName() { return NAME; } @Override protected int getTitle() { return R.string.app_settings;} @Override protected int getXml() { return R.xml.prefs; } diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/SetupScreen.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/SetupScreen.java index b2e28b27..32a22b1e 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/SetupScreen.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/SetupScreen.java @@ -10,9 +10,11 @@ import io.github.sspanak.tt9.preferences.items.ItemSelectGlobalKeyboard; import io.github.sspanak.tt9.preferences.items.ItemSetDefaultGlobalKeyboard; public class SetupScreen extends BaseScreenFragment { + final public static String NAME = "Setup"; public SetupScreen() { init(); } public SetupScreen(PreferencesActivity activity) { init(activity); } + @Override public String getName() { return NAME; } @Override protected int getTitle() { return R.string.pref_category_setup;} @Override protected int getXml() { return R.xml.prefs_screen_setup; } diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/UsageStatsScreen.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/UsageStatsScreen.java index abd17a21..1a3f1f9c 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/UsageStatsScreen.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/UsageStatsScreen.java @@ -13,13 +13,15 @@ import io.github.sspanak.tt9.preferences.PreferencesActivity; import io.github.sspanak.tt9.ui.UI; public class UsageStatsScreen extends BaseScreenFragment { - private final static String RESET_BUTTON = "pref_slow_queries_reset_stats"; - private final static String SUMMARY_CONTAINER = "summary_container"; - private final static String QUERY_LIST_CONTAINER = "query_list_container"; + final public static String NAME = "UsageStats"; + final private static String RESET_BUTTON = "pref_slow_queries_reset_stats"; + final private static String SUMMARY_CONTAINER = "summary_container"; + final private static String QUERY_LIST_CONTAINER = "query_list_container"; public UsageStatsScreen() { init(); } public UsageStatsScreen(PreferencesActivity activity) { init(activity); } + @Override public String getName() { return NAME; } @Override protected int getTitle() { return R.string.pref_category_usage_stats; } @Override protected int getXml() { return R.xml.prefs_screen_usage_stats; } diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/DictionaryLoadingBar.java b/app/src/main/java/io/github/sspanak/tt9/ui/DictionaryLoadingBar.java index 5c5d1c06..d43b78b1 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/DictionaryLoadingBar.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/DictionaryLoadingBar.java @@ -69,7 +69,7 @@ public class DictionaryLoadingBar { private PendingIntent createNavigationIntent(Context context) { Intent intent = new Intent(context, PreferencesActivity.class); - intent.putExtra("screen", DictionariesScreen.class.getSimpleName()); + intent.putExtra("screen", DictionariesScreen.NAME); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); return PendingIntent.getActivity(context, 0, intent,PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE); } diff --git a/app/src/main/res/xml/prefs_screen_debug.xml b/app/src/main/res/xml/prefs_screen_debug.xml index 1883f6df..6640b148 100644 --- a/app/src/main/res/xml/prefs_screen_debug.xml +++ b/app/src/main/res/xml/prefs_screen_debug.xml @@ -2,7 +2,7 @@ diff --git a/app/src/main/res/xml/prefs_screen_usage_stats.xml b/app/src/main/res/xml/prefs_screen_usage_stats.xml index 0a34d33d..0de08c4c 100644 --- a/app/src/main/res/xml/prefs_screen_usage_stats.xml +++ b/app/src/main/res/xml/prefs_screen_usage_stats.xml @@ -1,5 +1,5 @@ - +