mirror of
https://github.com/termux/termux-app
synced 2024-06-14 05:16:37 +00:00
156 lines
5.1 KiB
Java
156 lines
5.1 KiB
Java
package com.termux.app.fragments.settings.termux;
|
|
|
|
import android.content.Context;
|
|
import android.os.Bundle;
|
|
|
|
import androidx.annotation.Keep;
|
|
import androidx.annotation.NonNull;
|
|
import androidx.annotation.Nullable;
|
|
import androidx.preference.ListPreference;
|
|
import androidx.preference.PreferenceCategory;
|
|
import androidx.preference.PreferenceDataStore;
|
|
import androidx.preference.PreferenceFragmentCompat;
|
|
import androidx.preference.PreferenceManager;
|
|
|
|
import com.termux.R;
|
|
import com.termux.shared.termux.settings.preferences.TermuxAppSharedPreferences;
|
|
import com.termux.shared.logger.Logger;
|
|
|
|
@Keep
|
|
public class DebuggingPreferencesFragment extends PreferenceFragmentCompat {
|
|
|
|
@Override
|
|
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
|
|
Context context = getContext();
|
|
if (context == null) return;
|
|
|
|
PreferenceManager preferenceManager = getPreferenceManager();
|
|
preferenceManager.setPreferenceDataStore(DebuggingPreferencesDataStore.getInstance(context));
|
|
|
|
setPreferencesFromResource(R.xml.termux_debugging_preferences, rootKey);
|
|
|
|
configureLoggingPreferences(context);
|
|
}
|
|
|
|
private void configureLoggingPreferences(@NonNull Context context) {
|
|
PreferenceCategory loggingCategory = findPreference("logging");
|
|
if (loggingCategory == null) return;
|
|
|
|
ListPreference logLevelListPreference = findPreference("log_level");
|
|
if (logLevelListPreference != null) {
|
|
TermuxAppSharedPreferences preferences = TermuxAppSharedPreferences.build(context, true);
|
|
if (preferences == null) return;
|
|
|
|
setLogLevelListPreferenceData(logLevelListPreference, context, preferences.getLogLevel());
|
|
loggingCategory.addPreference(logLevelListPreference);
|
|
}
|
|
}
|
|
|
|
public static ListPreference setLogLevelListPreferenceData(ListPreference logLevelListPreference, Context context, int logLevel) {
|
|
if (logLevelListPreference == null)
|
|
logLevelListPreference = new ListPreference(context);
|
|
|
|
CharSequence[] logLevels = Logger.getLogLevelsArray();
|
|
CharSequence[] logLevelLabels = Logger.getLogLevelLabelsArray(context, logLevels, true);
|
|
|
|
logLevelListPreference.setEntryValues(logLevels);
|
|
logLevelListPreference.setEntries(logLevelLabels);
|
|
|
|
logLevelListPreference.setValue(String.valueOf(logLevel));
|
|
logLevelListPreference.setDefaultValue(Logger.DEFAULT_LOG_LEVEL);
|
|
|
|
return logLevelListPreference;
|
|
}
|
|
|
|
}
|
|
|
|
class DebuggingPreferencesDataStore extends PreferenceDataStore {
|
|
|
|
private final Context mContext;
|
|
private final TermuxAppSharedPreferences mPreferences;
|
|
|
|
private static DebuggingPreferencesDataStore mInstance;
|
|
|
|
private DebuggingPreferencesDataStore(Context context) {
|
|
mContext = context;
|
|
mPreferences = TermuxAppSharedPreferences.build(context, true);
|
|
}
|
|
|
|
public static synchronized DebuggingPreferencesDataStore getInstance(Context context) {
|
|
if (mInstance == null) {
|
|
mInstance = new DebuggingPreferencesDataStore(context);
|
|
}
|
|
return mInstance;
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Nullable
|
|
public String getString(String key, @Nullable String defValue) {
|
|
if (mPreferences == null) return null;
|
|
if (key == null) return null;
|
|
|
|
switch (key) {
|
|
case "log_level":
|
|
return String.valueOf(mPreferences.getLogLevel());
|
|
default:
|
|
return null;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void putString(String key, @Nullable String value) {
|
|
if (mPreferences == null) return;
|
|
if (key == null) return;
|
|
|
|
switch (key) {
|
|
case "log_level":
|
|
if (value != null) {
|
|
mPreferences.setLogLevel(mContext, Integer.parseInt(value));
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
public void putBoolean(String key, boolean value) {
|
|
if (mPreferences == null) return;
|
|
if (key == null) return;
|
|
|
|
switch (key) {
|
|
case "terminal_view_key_logging_enabled":
|
|
mPreferences.setTerminalViewKeyLoggingEnabled(value);
|
|
break;
|
|
case "plugin_error_notifications_enabled":
|
|
mPreferences.setPluginErrorNotificationsEnabled(value);
|
|
break;
|
|
case "crash_report_notifications_enabled":
|
|
mPreferences.setCrashReportNotificationsEnabled(value);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean getBoolean(String key, boolean defValue) {
|
|
if (mPreferences == null) return false;
|
|
switch (key) {
|
|
case "terminal_view_key_logging_enabled":
|
|
return mPreferences.isTerminalViewKeyLoggingEnabled();
|
|
case "plugin_error_notifications_enabled":
|
|
return mPreferences.arePluginErrorNotificationsEnabled(false);
|
|
case "crash_report_notifications_enabled":
|
|
return mPreferences.areCrashReportNotificationsEnabled(false);
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
|
|
}
|