HeliBoard/app/src/main/java/helium314/keyboard/latin/settings/DebugSettingsFragment.java

112 lines
4.2 KiB
Java
Raw Normal View History

2019-12-31 18:19:35 +01:00
/*
* Copyright (C) 2014 The Android Open Source Project
* modified
* SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only
2019-12-31 18:19:35 +01:00
*/
package helium314.keyboard.latin.settings;
2019-12-31 18:19:35 +01:00
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
2023-09-10 12:04:05 +02:00
import androidx.annotation.NonNull;
import androidx.preference.Preference;
import androidx.preference.PreferenceGroup;
import androidx.preference.TwoStatePreference;
2019-12-31 18:19:35 +01:00
import helium314.keyboard.keyboard.KeyboardSwitcher;
import helium314.keyboard.latin.BuildConfig;
import helium314.keyboard.latin.DictionaryDumpBroadcastReceiver;
import helium314.keyboard.latin.DictionaryFacilitator;
import helium314.keyboard.latin.R;
2019-12-31 18:19:35 +01:00
/**
* "Debug mode" settings sub screen.
* <p>
2019-12-31 18:19:35 +01:00
* This settings sub screen handles a several preference options for debugging.
*/
public final class DebugSettingsFragment extends SubScreenFragment
implements Preference.OnPreferenceClickListener {
private static final String PREF_KEY_DUMP_DICTS = "dump_dictionaries";
private static final String PREF_KEY_DUMP_DICT_PREFIX = "dump_dictionaries";
2019-12-31 18:19:35 +01:00
private boolean mServiceNeedsRestart = false;
private TwoStatePreference mDebugMode;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
addPreferencesFromResource(R.xml.prefs_screen_debug);
final PreferenceGroup dictDumpPreferenceGroup = findPreference(PREF_KEY_DUMP_DICTS);
for (final String dictName : DictionaryFacilitator.DYNAMIC_DICTIONARY_TYPES) {
2019-12-31 18:19:35 +01:00
final Preference pref = new DictDumpPreference(getActivity(), dictName);
pref.setOnPreferenceClickListener(this);
dictDumpPreferenceGroup.addPreference(pref);
}
if (BuildConfig.DEBUG)
removePreference(DebugSettings.PREF_SHOW_DEBUG_SETTINGS);
2019-12-31 18:19:35 +01:00
mServiceNeedsRestart = false;
mDebugMode = findPreference(DebugSettings.PREF_DEBUG_MODE);
2023-12-10 15:52:10 +01:00
findPreference(DebugSettings.PREF_SHOW_SUGGESTION_INFOS).setVisible(mDebugMode.isChecked());
2019-12-31 18:19:35 +01:00
updateDebugMode();
}
private static class DictDumpPreference extends Preference {
public final String mDictName;
public DictDumpPreference(final Context context, final String dictName) {
super(context);
setKey(PREF_KEY_DUMP_DICT_PREFIX + dictName);
setTitle("Dump " + dictName + " dictionary");
mDictName = dictName;
}
}
@Override
2023-09-10 12:04:05 +02:00
public boolean onPreferenceClick(@NonNull final Preference pref) {
if (pref instanceof final DictDumpPreference dictDumpPref) {
2019-12-31 18:19:35 +01:00
final String dictName = dictDumpPref.mDictName;
final Intent intent = new Intent(
DictionaryDumpBroadcastReceiver.DICTIONARY_DUMP_INTENT_ACTION);
intent.putExtra(DictionaryDumpBroadcastReceiver.DICTIONARY_NAME_KEY, dictName);
2023-09-10 12:04:05 +02:00
pref.getContext().sendBroadcast(intent);
2019-12-31 18:19:35 +01:00
return true;
}
return true;
}
@Override
public void onStop() {
super.onStop();
if (mServiceNeedsRestart) {
Runtime.getRuntime().exit(0);
2019-12-31 18:19:35 +01:00
}
}
@Override
public void onSharedPreferenceChanged(final SharedPreferences prefs, final String key) {
if (DebugSettings.PREF_DEBUG_MODE.equals(key) && mDebugMode != null) {
2023-12-10 15:52:10 +01:00
final boolean enabled = prefs.getBoolean(DebugSettings.PREF_DEBUG_MODE, false);
mDebugMode.setChecked(enabled);
findPreference(DebugSettings.PREF_SHOW_SUGGESTION_INFOS).setVisible(enabled);
2019-12-31 18:19:35 +01:00
mServiceNeedsRestart = true;
2023-09-10 12:04:05 +02:00
} else if (key.equals(DebugSettings.PREF_FORCE_NON_DISTINCT_MULTITOUCH)) {
2019-12-31 18:19:35 +01:00
mServiceNeedsRestart = true;
} else if (key.equals(DebugSettings.PREF_SHOW_SUGGESTION_INFOS)) {
KeyboardSwitcher.getInstance().forceUpdateKeyboardTheme(requireContext());
} else if (key.equals(DebugSettings.PREF_SHOW_DEBUG_SETTINGS) && mDebugMode.isChecked()) {
mDebugMode.setChecked(false);
2019-12-31 18:19:35 +01:00
}
}
private void updateDebugMode() {
2024-01-01 22:04:29 +01:00
final String version = getString(R.string.version_text, BuildConfig.VERSION_NAME);
mDebugMode.setSummary(version);
2019-12-31 18:19:35 +01:00
}
}