mirror of
https://github.com/Helium314/HeliBoard.git
synced 2025-05-25 11:22:20 +00:00
111 lines
4.2 KiB
Java
111 lines
4.2 KiB
Java
/*
|
|
* Copyright (C) 2014 The Android Open Source Project
|
|
* modified
|
|
* SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only
|
|
*/
|
|
|
|
package helium314.keyboard.latin.settings;
|
|
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.content.SharedPreferences;
|
|
import android.os.Bundle;
|
|
|
|
import androidx.annotation.NonNull;
|
|
import androidx.preference.Preference;
|
|
import androidx.preference.PreferenceGroup;
|
|
import androidx.preference.TwoStatePreference;
|
|
|
|
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;
|
|
|
|
/**
|
|
* "Debug mode" settings sub screen.
|
|
* <p>
|
|
* 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";
|
|
|
|
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) {
|
|
final Preference pref = new DictDumpPreference(getActivity(), dictName);
|
|
pref.setOnPreferenceClickListener(this);
|
|
dictDumpPreferenceGroup.addPreference(pref);
|
|
}
|
|
if (BuildConfig.DEBUG)
|
|
removePreference(DebugSettings.PREF_SHOW_DEBUG_SETTINGS);
|
|
|
|
mServiceNeedsRestart = false;
|
|
mDebugMode = findPreference(DebugSettings.PREF_DEBUG_MODE);
|
|
findPreference(DebugSettings.PREF_SHOW_SUGGESTION_INFOS).setVisible(mDebugMode.isChecked());
|
|
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
|
|
public boolean onPreferenceClick(@NonNull final Preference pref) {
|
|
if (pref instanceof final DictDumpPreference dictDumpPref) {
|
|
final String dictName = dictDumpPref.mDictName;
|
|
final Intent intent = new Intent(
|
|
DictionaryDumpBroadcastReceiver.DICTIONARY_DUMP_INTENT_ACTION);
|
|
intent.putExtra(DictionaryDumpBroadcastReceiver.DICTIONARY_NAME_KEY, dictName);
|
|
pref.getContext().sendBroadcast(intent);
|
|
return true;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public void onStop() {
|
|
super.onStop();
|
|
if (mServiceNeedsRestart) {
|
|
Runtime.getRuntime().exit(0);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onSharedPreferenceChanged(final SharedPreferences prefs, final String key) {
|
|
if (DebugSettings.PREF_DEBUG_MODE.equals(key) && mDebugMode != null) {
|
|
final boolean enabled = prefs.getBoolean(DebugSettings.PREF_DEBUG_MODE, false);
|
|
mDebugMode.setChecked(enabled);
|
|
findPreference(DebugSettings.PREF_SHOW_SUGGESTION_INFOS).setVisible(enabled);
|
|
mServiceNeedsRestart = true;
|
|
} else if (key.equals(DebugSettings.PREF_FORCE_NON_DISTINCT_MULTITOUCH)) {
|
|
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);
|
|
}
|
|
}
|
|
|
|
private void updateDebugMode() {
|
|
final String version = getString(R.string.version_text, BuildConfig.VERSION_NAME);
|
|
mDebugMode.setSummary(version);
|
|
}
|
|
|
|
}
|