discord-jadx/app/src/main/java/androidx/preference/PreferenceFragmentCompat.java

529 lines
24 KiB
Java

package androidx.preference;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.annotation.XmlRes;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.preference.DialogPreference;
import androidx.preference.PreferenceGroup;
import androidx.preference.PreferenceManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import c.d.b.a.a;
public abstract class PreferenceFragmentCompat extends Fragment implements PreferenceManager.OnPreferenceTreeClickListener, PreferenceManager.OnDisplayPreferenceDialogListener, PreferenceManager.OnNavigateToScreenListener, DialogPreference.TargetFragment {
public static final String ARG_PREFERENCE_ROOT = "androidx.preference.PreferenceFragmentCompat.PREFERENCE_ROOT";
private static final String DIALOG_FRAGMENT_TAG = "androidx.preference.PreferenceFragment.DIALOG";
private static final int MSG_BIND_PREFERENCES = 1;
private static final String PREFERENCES_TAG = "android:preferences";
private static final String TAG = "PreferenceFragment";
private final DividerDecoration mDividerDecoration = new DividerDecoration();
private Handler mHandler = new AnonymousClass1();
private boolean mHavePrefs;
private boolean mInitDone;
private int mLayoutResId = R.layout.preference_list_fragment;
public RecyclerView mList;
private PreferenceManager mPreferenceManager;
private final Runnable mRequestFocus = new AnonymousClass2();
private Runnable mSelectPreferenceRunnable;
/* renamed from: androidx.preference.PreferenceFragmentCompat$1 reason: invalid class name */
public class AnonymousClass1 extends Handler {
public AnonymousClass1() {
}
@Override // android.os.Handler
public void handleMessage(Message message) {
if (message.what == 1) {
PreferenceFragmentCompat.this.bindPreferences();
}
}
}
/* renamed from: androidx.preference.PreferenceFragmentCompat$2 reason: invalid class name */
public class AnonymousClass2 implements Runnable {
public AnonymousClass2() {
}
@Override // java.lang.Runnable
public void run() {
RecyclerView recyclerView = PreferenceFragmentCompat.this.mList;
recyclerView.focusableViewAvailable(recyclerView);
}
}
/* renamed from: androidx.preference.PreferenceFragmentCompat$3 reason: invalid class name */
public class AnonymousClass3 implements Runnable {
public final /* synthetic */ String val$key;
public final /* synthetic */ Preference val$preference;
public AnonymousClass3(Preference preference, String str) {
this.val$preference = preference;
this.val$key = str;
}
@Override // java.lang.Runnable
public void run() {
RecyclerView.Adapter adapter = PreferenceFragmentCompat.this.mList.getAdapter();
if (adapter instanceof PreferenceGroup.PreferencePositionCallback) {
Preference preference = this.val$preference;
int preferenceAdapterPosition = preference != null ? ((PreferenceGroup.PreferencePositionCallback) adapter).getPreferenceAdapterPosition(preference) : ((PreferenceGroup.PreferencePositionCallback) adapter).getPreferenceAdapterPosition(this.val$key);
if (preferenceAdapterPosition != -1) {
PreferenceFragmentCompat.this.mList.scrollToPosition(preferenceAdapterPosition);
} else {
adapter.registerAdapterDataObserver(new ScrollToPreferenceObserver(adapter, PreferenceFragmentCompat.this.mList, this.val$preference, this.val$key));
}
} else if (adapter != null) {
throw new IllegalStateException("Adapter must implement PreferencePositionCallback");
}
}
}
public class DividerDecoration extends RecyclerView.ItemDecoration {
private boolean mAllowDividerAfterLastItem = true;
private Drawable mDivider;
private int mDividerHeight;
public DividerDecoration() {
}
private boolean shouldDrawDividerBelow(View view, RecyclerView recyclerView) {
RecyclerView.ViewHolder childViewHolder = recyclerView.getChildViewHolder(view);
boolean z2 = false;
if (!((childViewHolder instanceof PreferenceViewHolder) && ((PreferenceViewHolder) childViewHolder).isDividerAllowedBelow())) {
return false;
}
boolean z3 = this.mAllowDividerAfterLastItem;
int indexOfChild = recyclerView.indexOfChild(view);
if (indexOfChild >= recyclerView.getChildCount() - 1) {
return z3;
}
RecyclerView.ViewHolder childViewHolder2 = recyclerView.getChildViewHolder(recyclerView.getChildAt(indexOfChild + 1));
if ((childViewHolder2 instanceof PreferenceViewHolder) && ((PreferenceViewHolder) childViewHolder2).isDividerAllowedAbove()) {
z2 = true;
}
return z2;
}
@Override // androidx.recyclerview.widget.RecyclerView.ItemDecoration
public void getItemOffsets(Rect rect, View view, RecyclerView recyclerView, RecyclerView.State state) {
if (shouldDrawDividerBelow(view, recyclerView)) {
rect.bottom = this.mDividerHeight;
}
}
@Override // androidx.recyclerview.widget.RecyclerView.ItemDecoration
public void onDrawOver(Canvas canvas, RecyclerView recyclerView, RecyclerView.State state) {
if (this.mDivider != null) {
int childCount = recyclerView.getChildCount();
int width = recyclerView.getWidth();
for (int i = 0; i < childCount; i++) {
View childAt = recyclerView.getChildAt(i);
if (shouldDrawDividerBelow(childAt, recyclerView)) {
int height = childAt.getHeight() + ((int) childAt.getY());
this.mDivider.setBounds(0, height, width, this.mDividerHeight + height);
this.mDivider.draw(canvas);
}
}
}
}
public void setAllowDividerAfterLastItem(boolean z2) {
this.mAllowDividerAfterLastItem = z2;
}
public void setDivider(Drawable drawable) {
if (drawable != null) {
this.mDividerHeight = drawable.getIntrinsicHeight();
} else {
this.mDividerHeight = 0;
}
this.mDivider = drawable;
PreferenceFragmentCompat.this.mList.invalidateItemDecorations();
}
public void setDividerHeight(int i) {
this.mDividerHeight = i;
PreferenceFragmentCompat.this.mList.invalidateItemDecorations();
}
}
public interface OnPreferenceDisplayDialogCallback {
boolean onPreferenceDisplayDialog(@NonNull PreferenceFragmentCompat preferenceFragmentCompat, Preference preference);
}
public interface OnPreferenceStartFragmentCallback {
boolean onPreferenceStartFragment(PreferenceFragmentCompat preferenceFragmentCompat, Preference preference);
}
public interface OnPreferenceStartScreenCallback {
boolean onPreferenceStartScreen(PreferenceFragmentCompat preferenceFragmentCompat, PreferenceScreen preferenceScreen);
}
public static class ScrollToPreferenceObserver extends RecyclerView.AdapterDataObserver {
private final RecyclerView.Adapter mAdapter;
private final String mKey;
private final RecyclerView mList;
private final Preference mPreference;
public ScrollToPreferenceObserver(RecyclerView.Adapter adapter, RecyclerView recyclerView, Preference preference, String str) {
this.mAdapter = adapter;
this.mList = recyclerView;
this.mPreference = preference;
this.mKey = str;
}
private void scrollToPreference() {
this.mAdapter.unregisterAdapterDataObserver(this);
Preference preference = this.mPreference;
int preferenceAdapterPosition = preference != null ? ((PreferenceGroup.PreferencePositionCallback) this.mAdapter).getPreferenceAdapterPosition(preference) : ((PreferenceGroup.PreferencePositionCallback) this.mAdapter).getPreferenceAdapterPosition(this.mKey);
if (preferenceAdapterPosition != -1) {
this.mList.scrollToPosition(preferenceAdapterPosition);
}
}
@Override // androidx.recyclerview.widget.RecyclerView.AdapterDataObserver
public void onChanged() {
scrollToPreference();
}
@Override // androidx.recyclerview.widget.RecyclerView.AdapterDataObserver
public void onItemRangeChanged(int i, int i2) {
scrollToPreference();
}
@Override // androidx.recyclerview.widget.RecyclerView.AdapterDataObserver
public void onItemRangeChanged(int i, int i2, Object obj) {
scrollToPreference();
}
@Override // androidx.recyclerview.widget.RecyclerView.AdapterDataObserver
public void onItemRangeInserted(int i, int i2) {
scrollToPreference();
}
@Override // androidx.recyclerview.widget.RecyclerView.AdapterDataObserver
public void onItemRangeMoved(int i, int i2, int i3) {
scrollToPreference();
}
@Override // androidx.recyclerview.widget.RecyclerView.AdapterDataObserver
public void onItemRangeRemoved(int i, int i2) {
scrollToPreference();
}
}
private void postBindPreferences() {
if (!this.mHandler.hasMessages(1)) {
this.mHandler.obtainMessage(1).sendToTarget();
}
}
private void requirePreferenceManager() {
if (this.mPreferenceManager == null) {
throw new RuntimeException("This should be called after super.onCreate.");
}
}
private void scrollToPreferenceInternal(Preference preference, String str) {
AnonymousClass3 r0 = new AnonymousClass3(preference, str);
if (this.mList == null) {
this.mSelectPreferenceRunnable = r0;
} else {
r0.run();
}
}
private void unbindPreferences() {
getListView().setAdapter(null);
PreferenceScreen preferenceScreen = getPreferenceScreen();
if (preferenceScreen != null) {
preferenceScreen.onDetached();
}
onUnbindPreferences();
}
public void addPreferencesFromResource(@XmlRes int i) {
requirePreferenceManager();
setPreferenceScreen(this.mPreferenceManager.inflateFromResource(getContext(), i, getPreferenceScreen()));
}
public void bindPreferences() {
PreferenceScreen preferenceScreen = getPreferenceScreen();
if (preferenceScreen != null) {
getListView().setAdapter(onCreateAdapter(preferenceScreen));
preferenceScreen.onAttached();
}
onBindPreferences();
}
@Override // androidx.preference.DialogPreference.TargetFragment
@Nullable
public <T extends Preference> T findPreference(@NonNull CharSequence charSequence) {
PreferenceManager preferenceManager = this.mPreferenceManager;
if (preferenceManager == null) {
return null;
}
return (T) preferenceManager.findPreference(charSequence);
}
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX})
public Fragment getCallbackFragment() {
return null;
}
public final RecyclerView getListView() {
return this.mList;
}
public PreferenceManager getPreferenceManager() {
return this.mPreferenceManager;
}
public PreferenceScreen getPreferenceScreen() {
return this.mPreferenceManager.getPreferenceScreen();
}
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX})
public void onBindPreferences() {
}
@Override // androidx.fragment.app.Fragment
public void onCreate(@Nullable Bundle bundle) {
super.onCreate(bundle);
TypedValue typedValue = new TypedValue();
getActivity().getTheme().resolveAttribute(R.attr.preferenceTheme, typedValue, true);
int i = typedValue.resourceId;
if (i == 0) {
i = R.style.PreferenceThemeOverlay;
}
getActivity().getTheme().applyStyle(i, false);
PreferenceManager preferenceManager = new PreferenceManager(getContext());
this.mPreferenceManager = preferenceManager;
preferenceManager.setOnNavigateToScreenListener(this);
onCreatePreferences(bundle, getArguments() != null ? getArguments().getString("androidx.preference.PreferenceFragmentCompat.PREFERENCE_ROOT") : null);
}
public RecyclerView.Adapter onCreateAdapter(PreferenceScreen preferenceScreen) {
return new PreferenceGroupAdapter(preferenceScreen);
}
public RecyclerView.LayoutManager onCreateLayoutManager() {
return new LinearLayoutManager(getContext());
}
public abstract void onCreatePreferences(Bundle bundle, String str);
public RecyclerView onCreateRecyclerView(LayoutInflater layoutInflater, ViewGroup viewGroup, Bundle bundle) {
RecyclerView recyclerView;
if (getContext().getPackageManager().hasSystemFeature("android.hardware.type.automotive") && (recyclerView = (RecyclerView) viewGroup.findViewById(R.id.recycler_view)) != null) {
return recyclerView;
}
RecyclerView recyclerView2 = (RecyclerView) layoutInflater.inflate(R.layout.preference_recyclerview, viewGroup, false);
recyclerView2.setLayoutManager(onCreateLayoutManager());
recyclerView2.setAccessibilityDelegateCompat(new PreferenceRecyclerViewAccessibilityDelegate(recyclerView2));
return recyclerView2;
}
@Override // androidx.fragment.app.Fragment
public View onCreateView(@NonNull LayoutInflater layoutInflater, @Nullable ViewGroup viewGroup, @Nullable Bundle bundle) {
TypedArray obtainStyledAttributes = getContext().obtainStyledAttributes(null, R.styleable.PreferenceFragmentCompat, R.attr.preferenceFragmentCompatStyle, 0);
this.mLayoutResId = obtainStyledAttributes.getResourceId(R.styleable.PreferenceFragmentCompat_android_layout, this.mLayoutResId);
Drawable drawable = obtainStyledAttributes.getDrawable(R.styleable.PreferenceFragmentCompat_android_divider);
int dimensionPixelSize = obtainStyledAttributes.getDimensionPixelSize(R.styleable.PreferenceFragmentCompat_android_dividerHeight, -1);
boolean z2 = obtainStyledAttributes.getBoolean(R.styleable.PreferenceFragmentCompat_allowDividerAfterLastItem, true);
obtainStyledAttributes.recycle();
LayoutInflater cloneInContext = layoutInflater.cloneInContext(getContext());
View inflate = cloneInContext.inflate(this.mLayoutResId, viewGroup, false);
View findViewById = inflate.findViewById(16908351);
if (findViewById instanceof ViewGroup) {
ViewGroup viewGroup2 = (ViewGroup) findViewById;
RecyclerView onCreateRecyclerView = onCreateRecyclerView(cloneInContext, viewGroup2, bundle);
if (onCreateRecyclerView != null) {
this.mList = onCreateRecyclerView;
onCreateRecyclerView.addItemDecoration(this.mDividerDecoration);
setDivider(drawable);
if (dimensionPixelSize != -1) {
setDividerHeight(dimensionPixelSize);
}
this.mDividerDecoration.setAllowDividerAfterLastItem(z2);
if (this.mList.getParent() == null) {
viewGroup2.addView(this.mList);
}
this.mHandler.post(this.mRequestFocus);
return inflate;
}
throw new RuntimeException("Could not create RecyclerView");
}
throw new IllegalStateException("Content has view with id attribute 'android.R.id.list_container' that is not a ViewGroup class");
}
@Override // androidx.fragment.app.Fragment
public void onDestroyView() {
this.mHandler.removeCallbacks(this.mRequestFocus);
this.mHandler.removeMessages(1);
if (this.mHavePrefs) {
unbindPreferences();
}
this.mList = null;
super.onDestroyView();
}
@Override // androidx.preference.PreferenceManager.OnDisplayPreferenceDialogListener
public void onDisplayPreferenceDialog(Preference preference) {
DialogFragment dialogFragment;
boolean onPreferenceDisplayDialog = getCallbackFragment() instanceof OnPreferenceDisplayDialogCallback ? ((OnPreferenceDisplayDialogCallback) getCallbackFragment()).onPreferenceDisplayDialog(this, preference) : false;
if (!onPreferenceDisplayDialog && (getActivity() instanceof OnPreferenceDisplayDialogCallback)) {
onPreferenceDisplayDialog = ((OnPreferenceDisplayDialogCallback) getActivity()).onPreferenceDisplayDialog(this, preference);
}
if (!onPreferenceDisplayDialog && getParentFragmentManager().findFragmentByTag("androidx.preference.PreferenceFragment.DIALOG") == null) {
if (preference instanceof EditTextPreference) {
dialogFragment = EditTextPreferenceDialogFragmentCompat.newInstance(preference.getKey());
} else if (preference instanceof ListPreference) {
dialogFragment = ListPreferenceDialogFragmentCompat.newInstance(preference.getKey());
} else if (preference instanceof MultiSelectListPreference) {
dialogFragment = MultiSelectListPreferenceDialogFragmentCompat.newInstance(preference.getKey());
} else {
StringBuilder L = a.L("Cannot display dialog for an unknown Preference type: ");
L.append(preference.getClass().getSimpleName());
L.append(". Make sure to implement onPreferenceDisplayDialog() to handle displaying a custom dialog for this Preference.");
throw new IllegalArgumentException(L.toString());
}
dialogFragment.setTargetFragment(this, 0);
dialogFragment.show(getParentFragmentManager(), "androidx.preference.PreferenceFragment.DIALOG");
}
}
@Override // androidx.preference.PreferenceManager.OnNavigateToScreenListener
public void onNavigateToScreen(PreferenceScreen preferenceScreen) {
if (!(getCallbackFragment() instanceof OnPreferenceStartScreenCallback ? ((OnPreferenceStartScreenCallback) getCallbackFragment()).onPreferenceStartScreen(this, preferenceScreen) : false) && (getActivity() instanceof OnPreferenceStartScreenCallback)) {
((OnPreferenceStartScreenCallback) getActivity()).onPreferenceStartScreen(this, preferenceScreen);
}
}
@Override // androidx.preference.PreferenceManager.OnPreferenceTreeClickListener
public boolean onPreferenceTreeClick(Preference preference) {
if (preference.getFragment() == null) {
return false;
}
boolean onPreferenceStartFragment = getCallbackFragment() instanceof OnPreferenceStartFragmentCallback ? ((OnPreferenceStartFragmentCallback) getCallbackFragment()).onPreferenceStartFragment(this, preference) : false;
if (!onPreferenceStartFragment && (getActivity() instanceof OnPreferenceStartFragmentCallback)) {
onPreferenceStartFragment = ((OnPreferenceStartFragmentCallback) getActivity()).onPreferenceStartFragment(this, preference);
}
if (onPreferenceStartFragment) {
return true;
}
Log.w("PreferenceFragment", "onPreferenceStartFragment is not implemented in the parent activity - attempting to use a fallback implementation. You should implement this method so that you can configure the new fragment that will be displayed, and set a transition between the fragments.");
FragmentManager supportFragmentManager = requireActivity().getSupportFragmentManager();
Bundle extras = preference.getExtras();
Fragment instantiate = supportFragmentManager.getFragmentFactory().instantiate(requireActivity().getClassLoader(), preference.getFragment());
instantiate.setArguments(extras);
instantiate.setTargetFragment(this, 0);
supportFragmentManager.beginTransaction().replace(((View) getView().getParent()).getId(), instantiate).addToBackStack(null).commit();
return true;
}
@Override // androidx.fragment.app.Fragment
public void onSaveInstanceState(@NonNull Bundle bundle) {
super.onSaveInstanceState(bundle);
PreferenceScreen preferenceScreen = getPreferenceScreen();
if (preferenceScreen != null) {
Bundle bundle2 = new Bundle();
preferenceScreen.saveHierarchyState(bundle2);
bundle.putBundle("android:preferences", bundle2);
}
}
@Override // androidx.fragment.app.Fragment
public void onStart() {
super.onStart();
this.mPreferenceManager.setOnPreferenceTreeClickListener(this);
this.mPreferenceManager.setOnDisplayPreferenceDialogListener(this);
}
@Override // androidx.fragment.app.Fragment
public void onStop() {
super.onStop();
this.mPreferenceManager.setOnPreferenceTreeClickListener(null);
this.mPreferenceManager.setOnDisplayPreferenceDialogListener(null);
}
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX})
public void onUnbindPreferences() {
}
@Override // androidx.fragment.app.Fragment
public void onViewCreated(@NonNull View view, @Nullable Bundle bundle) {
Bundle bundle2;
PreferenceScreen preferenceScreen;
super.onViewCreated(view, bundle);
if (!(bundle == null || (bundle2 = bundle.getBundle("android:preferences")) == null || (preferenceScreen = getPreferenceScreen()) == null)) {
preferenceScreen.restoreHierarchyState(bundle2);
}
if (this.mHavePrefs) {
bindPreferences();
Runnable runnable = this.mSelectPreferenceRunnable;
if (runnable != null) {
runnable.run();
this.mSelectPreferenceRunnable = null;
}
}
this.mInitDone = true;
}
public void scrollToPreference(Preference preference) {
scrollToPreferenceInternal(preference, null);
}
public void scrollToPreference(String str) {
scrollToPreferenceInternal(null, str);
}
public void setDivider(Drawable drawable) {
this.mDividerDecoration.setDivider(drawable);
}
public void setDividerHeight(int i) {
this.mDividerDecoration.setDividerHeight(i);
}
public void setPreferenceScreen(PreferenceScreen preferenceScreen) {
if (this.mPreferenceManager.setPreferences(preferenceScreen) && preferenceScreen != null) {
onUnbindPreferences();
this.mHavePrefs = true;
if (this.mInitDone) {
postBindPreferences();
}
}
}
public void setPreferencesFromResource(@XmlRes int i, @Nullable String str) {
requirePreferenceManager();
PreferenceScreen inflateFromResource = this.mPreferenceManager.inflateFromResource(getContext(), i, null);
Object obj = inflateFromResource;
if (str != null) {
Object findPreference = inflateFromResource.findPreference(str);
boolean z2 = findPreference instanceof PreferenceScreen;
obj = findPreference;
if (!z2) {
throw new IllegalArgumentException(a.u("Preference object with key ", str, " is not a PreferenceScreen"));
}
}
setPreferenceScreen((PreferenceScreen) obj);
}
}