1
0
Fork 0

fixed the navigation from dictionary loading notification to open the Dictionaries screen

This commit is contained in:
sspanak 2024-02-27 17:14:02 +02:00 committed by Dimo Karaivanov
parent 1ef576e941
commit bd3fcc1566
13 changed files with 41 additions and 22 deletions

View file

@ -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.ime.helpers.SystemSettings;
import io.github.sspanak.tt9.preferences.helpers.Hotkeys; import io.github.sspanak.tt9.preferences.helpers.Hotkeys;
import io.github.sspanak.tt9.preferences.screens.AppearanceScreen; 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.DebugScreen;
import io.github.sspanak.tt9.preferences.screens.DictionariesScreen; import io.github.sspanak.tt9.preferences.screens.DictionariesScreen;
import io.github.sspanak.tt9.preferences.screens.HotkeysScreen; import io.github.sspanak.tt9.preferences.screens.HotkeysScreen;
@ -61,7 +62,7 @@ public class PreferencesActivity extends AppCompatActivity implements Preference
@Override @Override
public boolean onPreferenceStartFragment(@NonNull PreferenceFragmentCompat caller, @NonNull Preference pref) { public boolean onPreferenceStartFragment(@NonNull PreferenceFragmentCompat caller, @NonNull Preference pref) {
Fragment fragment = getScreen((getScreenName(pref))); BaseScreenFragment fragment = getScreen((getScreenName(pref)));
fragment.setArguments(pref.getExtras()); fragment.setArguments(pref.getExtras());
displayScreen(fragment, true); displayScreen(fragment, true);
return true; return true;
@ -79,9 +80,9 @@ public class PreferencesActivity extends AppCompatActivity implements Preference
String screenName = intent != null ? intent.getStringExtra("screen") : null; String screenName = intent != null ? intent.getStringExtra("screen") : null;
screenName = screenName != null ? screenName : ""; 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); 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 * Finds a screen fragment by name. If there is no fragment with such name, the main screen
* fragment will be returned. * fragment will be returned.
*/ */
private Fragment getScreen(@Nullable String name) { private BaseScreenFragment getScreen(@Nullable String name) {
if (name == null) { if (name == null) {
return new MainSettingsScreen(this); return new MainSettingsScreen(this);
} }
switch (name) { switch (name) {
case "Appearance": case AppearanceScreen.NAME:
return new AppearanceScreen(this); return new AppearanceScreen(this);
case "Debug": case DebugScreen.NAME:
return new DebugScreen(this); return new DebugScreen(this);
case "Dictionaries": case DictionariesScreen.NAME:
return new DictionariesScreen(this); return new DictionariesScreen(this);
case "Hotkeys": case HotkeysScreen.NAME:
return new HotkeysScreen(this); return new HotkeysScreen(this);
case "KeyPad": case KeyPadScreen.NAME:
return new KeyPadScreen(this); return new KeyPadScreen(this);
case "Setup": case SetupScreen.NAME:
return new SetupScreen(this); return new SetupScreen(this);
case "SlowQueries": case UsageStatsScreen.NAME:
return new UsageStatsScreen(this); return new UsageStatsScreen(this);
default: default:
return new MainSettingsScreen(this); return new MainSettingsScreen(this);
@ -132,7 +133,7 @@ public class PreferencesActivity extends AppCompatActivity implements Preference
* displayScreen * displayScreen
* Replaces the currently displayed screen fragment with a new one. * 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(); FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.preferences_container, screen); transaction.replace(R.id.preferences_container, screen);

View file

@ -5,9 +5,11 @@ import io.github.sspanak.tt9.preferences.PreferencesActivity;
import io.github.sspanak.tt9.preferences.items.ItemSelectTheme; import io.github.sspanak.tt9.preferences.items.ItemSelectTheme;
public class AppearanceScreen extends BaseScreenFragment { public class AppearanceScreen extends BaseScreenFragment {
final public static String NAME = "Appearance";
public AppearanceScreen() { init(); } public AppearanceScreen() { init(); }
public AppearanceScreen(PreferencesActivity activity) { init(activity); } 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 getTitle() { return R.string.pref_category_appearance; }
@Override protected int getXml() { return R.xml.prefs_screen_appearance; } @Override protected int getXml() { return R.xml.prefs_screen_appearance; }

View file

@ -9,7 +9,7 @@ import androidx.preference.PreferenceFragmentCompat;
import io.github.sspanak.tt9.Logger; import io.github.sspanak.tt9.Logger;
import io.github.sspanak.tt9.preferences.PreferencesActivity; import io.github.sspanak.tt9.preferences.PreferencesActivity;
abstract class BaseScreenFragment extends PreferenceFragmentCompat { abstract public class BaseScreenFragment extends PreferenceFragmentCompat {
protected PreferencesActivity activity; protected PreferencesActivity activity;
@ -69,6 +69,7 @@ abstract class BaseScreenFragment extends PreferenceFragmentCompat {
} }
abstract public String getName();
abstract protected int getTitle(); abstract protected int getTitle();
abstract protected int getXml(); abstract protected int getXml();
abstract protected void onCreate(); abstract protected void onCreate();

View file

@ -19,13 +19,15 @@ import io.github.sspanak.tt9.preferences.items.ItemLogLevel;
import io.github.sspanak.tt9.ui.UI; import io.github.sspanak.tt9.ui.UI;
public class DebugScreen extends BaseScreenFragment { public class DebugScreen extends BaseScreenFragment {
private final static String LOG_TAG = "DebugScreen"; final public static String NAME = "Debug";
private final static String SYSTEM_LOGS_SWITCH = "pref_enable_system_logs"; final private static String LOG_TAG = NAME + "Screen";
private final static String LOGS_CONTAINER = "debug_logs_container"; 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() { init(); }
public DebugScreen(PreferencesActivity activity) { init(activity); } 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 getTitle() { return R.string.pref_category_debug_options; }
@Override protected int getXml() { return R.xml.prefs_screen_debug; } @Override protected int getXml() { return R.xml.prefs_screen_debug; }

View file

@ -10,11 +10,14 @@ import io.github.sspanak.tt9.preferences.items.ItemTruncateAll;
import io.github.sspanak.tt9.preferences.items.ItemTruncateUnselected; import io.github.sspanak.tt9.preferences.items.ItemTruncateUnselected;
public class DictionariesScreen extends BaseScreenFragment { public class DictionariesScreen extends BaseScreenFragment {
final public static String NAME = "Dictionaries";
private ItemLoadDictionary loadItem; private ItemLoadDictionary loadItem;
public DictionariesScreen() { init(); } public DictionariesScreen() { init(); }
public DictionariesScreen(PreferencesActivity activity) { init(activity); } 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 getTitle() { return R.string.pref_choose_languages; }
@Override protected int getXml() { return R.xml.prefs_screen_dictionaries; } @Override protected int getXml() { return R.xml.prefs_screen_dictionaries; }

View file

@ -10,9 +10,11 @@ import io.github.sspanak.tt9.preferences.PreferencesActivity;
import io.github.sspanak.tt9.preferences.items.SectionKeymap; import io.github.sspanak.tt9.preferences.items.SectionKeymap;
public class HotkeysScreen extends BaseScreenFragment { public class HotkeysScreen extends BaseScreenFragment {
final public static String NAME = "Hotkeys";
public HotkeysScreen() { init(); } public HotkeysScreen() { init(); }
public HotkeysScreen(PreferencesActivity activity) { init(activity); } 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 getTitle() { return R.string.pref_category_function_keys; }
@Override protected int getXml() { return R.xml.prefs_screen_hotkeys; } @Override protected int getXml() { return R.xml.prefs_screen_hotkeys; }

View file

@ -5,9 +5,11 @@ import io.github.sspanak.tt9.preferences.PreferencesActivity;
import io.github.sspanak.tt9.preferences.items.ItemSelectZeroKeyCharacter; import io.github.sspanak.tt9.preferences.items.ItemSelectZeroKeyCharacter;
public class KeyPadScreen extends BaseScreenFragment { public class KeyPadScreen extends BaseScreenFragment {
final public static String NAME = "KeyPad";
public KeyPadScreen() { init(); } public KeyPadScreen() { init(); }
public KeyPadScreen(PreferencesActivity activity) { init(activity); } 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 getTitle() { return R.string.pref_category_keypad; }
@Override protected int getXml() { return R.xml.prefs_screen_keypad; } @Override protected int getXml() { return R.xml.prefs_screen_keypad; }

View file

@ -16,11 +16,13 @@ import io.github.sspanak.tt9.ime.helpers.SystemSettings;
import io.github.sspanak.tt9.preferences.PreferencesActivity; import io.github.sspanak.tt9.preferences.PreferencesActivity;
public class MainSettingsScreen extends BaseScreenFragment { public class MainSettingsScreen extends BaseScreenFragment {
final public static String NAME = "Main";
private final Pattern releaseVersionRegex = Pattern.compile("^\\d+\\.\\d+$"); private final Pattern releaseVersionRegex = Pattern.compile("^\\d+\\.\\d+$");
public MainSettingsScreen() { init(); } public MainSettingsScreen() { init(); }
public MainSettingsScreen(PreferencesActivity activity) { init(activity); } public MainSettingsScreen(PreferencesActivity activity) { init(activity); }
@Override public String getName() { return NAME; }
@Override protected int getTitle() { return R.string.app_settings;} @Override protected int getTitle() { return R.string.app_settings;}
@Override protected int getXml() { return R.xml.prefs; } @Override protected int getXml() { return R.xml.prefs; }

View file

@ -10,9 +10,11 @@ import io.github.sspanak.tt9.preferences.items.ItemSelectGlobalKeyboard;
import io.github.sspanak.tt9.preferences.items.ItemSetDefaultGlobalKeyboard; import io.github.sspanak.tt9.preferences.items.ItemSetDefaultGlobalKeyboard;
public class SetupScreen extends BaseScreenFragment { public class SetupScreen extends BaseScreenFragment {
final public static String NAME = "Setup";
public SetupScreen() { init(); } public SetupScreen() { init(); }
public SetupScreen(PreferencesActivity activity) { init(activity); } 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 getTitle() { return R.string.pref_category_setup;}
@Override protected int getXml() { return R.xml.prefs_screen_setup; } @Override protected int getXml() { return R.xml.prefs_screen_setup; }

View file

@ -13,13 +13,15 @@ import io.github.sspanak.tt9.preferences.PreferencesActivity;
import io.github.sspanak.tt9.ui.UI; import io.github.sspanak.tt9.ui.UI;
public class UsageStatsScreen extends BaseScreenFragment { public class UsageStatsScreen extends BaseScreenFragment {
private final static String RESET_BUTTON = "pref_slow_queries_reset_stats"; final public static String NAME = "UsageStats";
private final static String SUMMARY_CONTAINER = "summary_container"; final private static String RESET_BUTTON = "pref_slow_queries_reset_stats";
private final static String QUERY_LIST_CONTAINER = "query_list_container"; final private static String SUMMARY_CONTAINER = "summary_container";
final private static String QUERY_LIST_CONTAINER = "query_list_container";
public UsageStatsScreen() { init(); } public UsageStatsScreen() { init(); }
public UsageStatsScreen(PreferencesActivity activity) { init(activity); } 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 getTitle() { return R.string.pref_category_usage_stats; }
@Override protected int getXml() { return R.xml.prefs_screen_usage_stats; } @Override protected int getXml() { return R.xml.prefs_screen_usage_stats; }

View file

@ -69,7 +69,7 @@ public class DictionaryLoadingBar {
private PendingIntent createNavigationIntent(Context context) { private PendingIntent createNavigationIntent(Context context) {
Intent intent = new Intent(context, PreferencesActivity.class); 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); 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); return PendingIntent.getActivity(context, 0, intent,PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
} }

View file

@ -2,7 +2,7 @@
<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto" app:orderingFromXml="true"> <PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto" app:orderingFromXml="true">
<SwitchPreferenceCompat <SwitchPreferenceCompat
app:fragment="io.github.sspanak.tt9.preferences.SlowQueriesScreen" app:fragment="io.github.sspanak.tt9.preferences.UsageStatsScreen"
app:key="pref_slow_queries" app:key="pref_slow_queries"
app:layout="@layout/pref_text" app:layout="@layout/pref_text"
app:title="@string/pref_category_usage_stats" /> app:title="@string/pref_category_usage_stats" />

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto" app:orderingFromXml="true"> <PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto" app:orderingFromXml="true">
<SwitchPreferenceCompat <SwitchPreferenceCompat
app:key="pref_slow_queries_reset_stats" app:key="pref_slow_queries_reset_stats"