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.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);

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,5 +1,5 @@
<?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
app:key="pref_slow_queries_reset_stats"