package androidx.preference; import android.content.Context; import android.content.SharedPreferences; import android.graphics.drawable.Drawable; import android.os.Build; import android.text.TextUtils; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.RestrictTo; import androidx.core.content.ContextCompat; public class PreferenceManager { public static final String KEY_HAS_SET_DEFAULT_VALUES = "_has_set_default_values"; private static final int STORAGE_DEFAULT = 0; private static final int STORAGE_DEVICE_PROTECTED = 1; private Context mContext; @Nullable private SharedPreferences.Editor mEditor; private long mNextId = 0; private boolean mNoCommit; private OnDisplayPreferenceDialogListener mOnDisplayPreferenceDialogListener; private OnNavigateToScreenListener mOnNavigateToScreenListener; private OnPreferenceTreeClickListener mOnPreferenceTreeClickListener; private PreferenceComparisonCallback mPreferenceComparisonCallback; @Nullable private PreferenceDataStore mPreferenceDataStore; private PreferenceScreen mPreferenceScreen; @Nullable private SharedPreferences mSharedPreferences; private int mSharedPreferencesMode; private String mSharedPreferencesName; private int mStorage = 0; public interface OnDisplayPreferenceDialogListener { void onDisplayPreferenceDialog(Preference preference); } public interface OnNavigateToScreenListener { void onNavigateToScreen(PreferenceScreen preferenceScreen); } public interface OnPreferenceTreeClickListener { boolean onPreferenceTreeClick(Preference preference); } public static abstract class PreferenceComparisonCallback { public abstract boolean arePreferenceContentsTheSame(Preference preference, Preference preference2); public abstract boolean arePreferenceItemsTheSame(Preference preference, Preference preference2); } public static class SimplePreferenceComparisonCallback extends PreferenceComparisonCallback { @Override // androidx.preference.PreferenceManager.PreferenceComparisonCallback public boolean arePreferenceContentsTheSame(Preference preference, Preference preference2) { if (preference.getClass() != preference2.getClass()) { return false; } if ((preference == preference2 && preference.wasDetached()) || !TextUtils.equals(preference.getTitle(), preference2.getTitle()) || !TextUtils.equals(preference.getSummary(), preference2.getSummary())) { return false; } Drawable icon = preference.getIcon(); Drawable icon2 = preference2.getIcon(); if ((icon != icon2 && (icon == null || !icon.equals(icon2))) || preference.isEnabled() != preference2.isEnabled() || preference.isSelectable() != preference2.isSelectable()) { return false; } if (!(preference instanceof TwoStatePreference) || ((TwoStatePreference) preference).isChecked() == ((TwoStatePreference) preference2).isChecked()) { return !(preference instanceof DropDownPreference) || preference == preference2; } return false; } @Override // androidx.preference.PreferenceManager.PreferenceComparisonCallback public boolean arePreferenceItemsTheSame(Preference preference, Preference preference2) { return preference.getId() == preference2.getId(); } } @RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX}) public PreferenceManager(Context context) { this.mContext = context; setSharedPreferencesName(getDefaultSharedPreferencesName(context)); } public static SharedPreferences getDefaultSharedPreferences(Context context) { return context.getSharedPreferences(getDefaultSharedPreferencesName(context), getDefaultSharedPreferencesMode()); } private static int getDefaultSharedPreferencesMode() { return 0; } private static String getDefaultSharedPreferencesName(Context context) { return context.getPackageName() + "_preferences"; } public static void setDefaultValues(Context context, int i, boolean z2) { setDefaultValues(context, getDefaultSharedPreferencesName(context), getDefaultSharedPreferencesMode(), i, z2); } public static void setDefaultValues(Context context, String str, int i, int i2, boolean z2) { SharedPreferences sharedPreferences = context.getSharedPreferences("_has_set_default_values", 0); if (z2 || !sharedPreferences.getBoolean("_has_set_default_values", false)) { PreferenceManager preferenceManager = new PreferenceManager(context); preferenceManager.setSharedPreferencesName(str); preferenceManager.setSharedPreferencesMode(i); preferenceManager.inflateFromResource(context, i2, null); sharedPreferences.edit().putBoolean("_has_set_default_values", true).apply(); } } private void setNoCommit(boolean z2) { SharedPreferences.Editor editor; if (!z2 && (editor = this.mEditor) != null) { editor.apply(); } this.mNoCommit = z2; } public PreferenceScreen createPreferenceScreen(Context context) { PreferenceScreen preferenceScreen = new PreferenceScreen(context, null); preferenceScreen.onAttachedToHierarchy(this); return preferenceScreen; } @Nullable public T findPreference(@NonNull CharSequence charSequence) { PreferenceScreen preferenceScreen = this.mPreferenceScreen; if (preferenceScreen == null) { return null; } return (T) preferenceScreen.findPreference(charSequence); } public Context getContext() { return this.mContext; } public SharedPreferences.Editor getEditor() { if (this.mPreferenceDataStore != null) { return null; } if (!this.mNoCommit) { return getSharedPreferences().edit(); } if (this.mEditor == null) { this.mEditor = getSharedPreferences().edit(); } return this.mEditor; } public long getNextId() { long j; synchronized (this) { j = this.mNextId; this.mNextId = 1 + j; } return j; } public OnDisplayPreferenceDialogListener getOnDisplayPreferenceDialogListener() { return this.mOnDisplayPreferenceDialogListener; } public OnNavigateToScreenListener getOnNavigateToScreenListener() { return this.mOnNavigateToScreenListener; } public OnPreferenceTreeClickListener getOnPreferenceTreeClickListener() { return this.mOnPreferenceTreeClickListener; } public PreferenceComparisonCallback getPreferenceComparisonCallback() { return this.mPreferenceComparisonCallback; } @Nullable public PreferenceDataStore getPreferenceDataStore() { return this.mPreferenceDataStore; } public PreferenceScreen getPreferenceScreen() { return this.mPreferenceScreen; } public SharedPreferences getSharedPreferences() { if (getPreferenceDataStore() != null) { return null; } if (this.mSharedPreferences == null) { this.mSharedPreferences = (this.mStorage != 1 ? this.mContext : ContextCompat.createDeviceProtectedStorageContext(this.mContext)).getSharedPreferences(this.mSharedPreferencesName, this.mSharedPreferencesMode); } return this.mSharedPreferences; } public int getSharedPreferencesMode() { return this.mSharedPreferencesMode; } public String getSharedPreferencesName() { return this.mSharedPreferencesName; } @RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX}) public PreferenceScreen inflateFromResource(Context context, int i, PreferenceScreen preferenceScreen) { setNoCommit(true); PreferenceScreen preferenceScreen2 = (PreferenceScreen) new PreferenceInflater(context, this).inflate(i, preferenceScreen); preferenceScreen2.onAttachedToHierarchy(this); setNoCommit(false); return preferenceScreen2; } public boolean isStorageDefault() { return Build.VERSION.SDK_INT < 24 || this.mStorage == 0; } public boolean isStorageDeviceProtected() { return Build.VERSION.SDK_INT >= 24 && this.mStorage == 1; } public void setOnDisplayPreferenceDialogListener(OnDisplayPreferenceDialogListener onDisplayPreferenceDialogListener) { this.mOnDisplayPreferenceDialogListener = onDisplayPreferenceDialogListener; } public void setOnNavigateToScreenListener(OnNavigateToScreenListener onNavigateToScreenListener) { this.mOnNavigateToScreenListener = onNavigateToScreenListener; } public void setOnPreferenceTreeClickListener(OnPreferenceTreeClickListener onPreferenceTreeClickListener) { this.mOnPreferenceTreeClickListener = onPreferenceTreeClickListener; } public void setPreferenceComparisonCallback(PreferenceComparisonCallback preferenceComparisonCallback) { this.mPreferenceComparisonCallback = preferenceComparisonCallback; } public void setPreferenceDataStore(PreferenceDataStore preferenceDataStore) { this.mPreferenceDataStore = preferenceDataStore; } public boolean setPreferences(PreferenceScreen preferenceScreen) { PreferenceScreen preferenceScreen2 = this.mPreferenceScreen; if (preferenceScreen == preferenceScreen2) { return false; } if (preferenceScreen2 != null) { preferenceScreen2.onDetached(); } this.mPreferenceScreen = preferenceScreen; return true; } public void setSharedPreferencesMode(int i) { this.mSharedPreferencesMode = i; this.mSharedPreferences = null; } public void setSharedPreferencesName(String str) { this.mSharedPreferencesName = str; this.mSharedPreferences = null; } public void setStorageDefault() { if (Build.VERSION.SDK_INT >= 24) { this.mStorage = 0; this.mSharedPreferences = null; } } public void setStorageDeviceProtected() { if (Build.VERSION.SDK_INT >= 24) { this.mStorage = 1; this.mSharedPreferences = null; } } public boolean shouldCommit() { return !this.mNoCommit; } public void showDialog(Preference preference) { OnDisplayPreferenceDialogListener onDisplayPreferenceDialogListener = this.mOnDisplayPreferenceDialogListener; if (onDisplayPreferenceDialogListener != null) { onDisplayPreferenceDialogListener.onDisplayPreferenceDialog(preference); } } }