Rabbit-R1/android (non root)/java/sources/com/google/android/material/bottomsheet/BottomSheetDialog.java
2024-05-21 17:08:36 -04:00

417 lines
18 KiB
Java

package com.google.android.material.bottomsheet;
import android.content.Context;
import android.content.DialogInterface;
import android.content.res.ColorStateList;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.os.Bundle;
import android.util.TypedValue;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.FrameLayout;
import androidx.appcompat.app.AppCompatDialog;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.core.view.AccessibilityDelegateCompat;
import androidx.core.view.OnApplyWindowInsetsListener;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
import com.google.android.material.R;
import com.google.android.material.bottomsheet.BottomSheetBehavior;
import com.google.android.material.color.MaterialColors;
import com.google.android.material.internal.EdgeToEdgeUtils;
import com.google.android.material.internal.ViewUtils;
import com.google.android.material.motion.MaterialBackOrchestrator;
import com.google.android.material.shape.MaterialShapeDrawable;
/* loaded from: classes2.dex */
public class BottomSheetDialog extends AppCompatDialog {
private MaterialBackOrchestrator backOrchestrator;
private BottomSheetBehavior<FrameLayout> behavior;
private FrameLayout bottomSheet;
private BottomSheetBehavior.BottomSheetCallback bottomSheetCallback;
boolean cancelable;
private boolean canceledOnTouchOutside;
private boolean canceledOnTouchOutsideSet;
private FrameLayout container;
private CoordinatorLayout coordinator;
boolean dismissWithAnimation;
private EdgeToEdgeCallback edgeToEdgeCallback;
private boolean edgeToEdgeEnabled;
public boolean getDismissWithAnimation() {
return this.dismissWithAnimation;
}
public boolean getEdgeToEdgeEnabled() {
return this.edgeToEdgeEnabled;
}
public void setDismissWithAnimation(boolean z) {
this.dismissWithAnimation = z;
}
public BottomSheetDialog(Context context) {
this(context, 0);
this.edgeToEdgeEnabled = getContext().getTheme().obtainStyledAttributes(new int[]{R.attr.enableEdgeToEdge}).getBoolean(0, false);
}
public BottomSheetDialog(Context context, int i) {
super(context, getThemeResId(context, i));
this.cancelable = true;
this.canceledOnTouchOutside = true;
this.bottomSheetCallback = new BottomSheetBehavior.BottomSheetCallback() { // from class: com.google.android.material.bottomsheet.BottomSheetDialog.5
@Override // com.google.android.material.bottomsheet.BottomSheetBehavior.BottomSheetCallback
public void onSlide(View view, float f) {
}
@Override // com.google.android.material.bottomsheet.BottomSheetBehavior.BottomSheetCallback
public void onStateChanged(View view, int i2) {
if (i2 == 5) {
BottomSheetDialog.this.cancel();
}
}
};
supportRequestWindowFeature(1);
this.edgeToEdgeEnabled = getContext().getTheme().obtainStyledAttributes(new int[]{R.attr.enableEdgeToEdge}).getBoolean(0, false);
}
protected BottomSheetDialog(Context context, boolean z, DialogInterface.OnCancelListener onCancelListener) {
super(context, z, onCancelListener);
this.cancelable = true;
this.canceledOnTouchOutside = true;
this.bottomSheetCallback = new BottomSheetBehavior.BottomSheetCallback() { // from class: com.google.android.material.bottomsheet.BottomSheetDialog.5
@Override // com.google.android.material.bottomsheet.BottomSheetBehavior.BottomSheetCallback
public void onSlide(View view, float f) {
}
@Override // com.google.android.material.bottomsheet.BottomSheetBehavior.BottomSheetCallback
public void onStateChanged(View view, int i2) {
if (i2 == 5) {
BottomSheetDialog.this.cancel();
}
}
};
supportRequestWindowFeature(1);
this.cancelable = z;
this.edgeToEdgeEnabled = getContext().getTheme().obtainStyledAttributes(new int[]{R.attr.enableEdgeToEdge}).getBoolean(0, false);
}
@Override // androidx.appcompat.app.AppCompatDialog, androidx.activity.ComponentDialog, android.app.Dialog
public void setContentView(int i) {
super.setContentView(wrapInBottomSheet(i, null, null));
}
/* JADX INFO: Access modifiers changed from: protected */
@Override // androidx.appcompat.app.AppCompatDialog, androidx.activity.ComponentDialog, android.app.Dialog
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
Window window = getWindow();
if (window != null) {
window.setStatusBarColor(0);
window.addFlags(Integer.MIN_VALUE);
window.setLayout(-1, -1);
}
}
@Override // androidx.appcompat.app.AppCompatDialog, androidx.activity.ComponentDialog, android.app.Dialog
public void setContentView(View view) {
super.setContentView(wrapInBottomSheet(0, view, null));
}
@Override // androidx.appcompat.app.AppCompatDialog, androidx.activity.ComponentDialog, android.app.Dialog
public void setContentView(View view, ViewGroup.LayoutParams layoutParams) {
super.setContentView(wrapInBottomSheet(0, view, layoutParams));
}
@Override // android.app.Dialog
public void setCancelable(boolean z) {
super.setCancelable(z);
if (this.cancelable != z) {
this.cancelable = z;
BottomSheetBehavior<FrameLayout> bottomSheetBehavior = this.behavior;
if (bottomSheetBehavior != null) {
bottomSheetBehavior.setHideable(z);
}
if (getWindow() != null) {
updateListeningForBackCallbacks();
}
}
}
/* JADX INFO: Access modifiers changed from: protected */
@Override // androidx.activity.ComponentDialog, android.app.Dialog
public void onStart() {
super.onStart();
BottomSheetBehavior<FrameLayout> bottomSheetBehavior = this.behavior;
if (bottomSheetBehavior == null || bottomSheetBehavior.getState() != 5) {
return;
}
this.behavior.setState(4);
}
@Override // android.app.Dialog, android.view.Window.Callback
public void onAttachedToWindow() {
super.onAttachedToWindow();
Window window = getWindow();
if (window != null) {
boolean z = this.edgeToEdgeEnabled && Color.alpha(window.getNavigationBarColor()) < 255;
FrameLayout frameLayout = this.container;
if (frameLayout != null) {
frameLayout.setFitsSystemWindows(!z);
}
CoordinatorLayout coordinatorLayout = this.coordinator;
if (coordinatorLayout != null) {
coordinatorLayout.setFitsSystemWindows(!z);
}
WindowCompat.setDecorFitsSystemWindows(window, !z);
EdgeToEdgeCallback edgeToEdgeCallback = this.edgeToEdgeCallback;
if (edgeToEdgeCallback != null) {
edgeToEdgeCallback.setWindow(window);
}
}
updateListeningForBackCallbacks();
}
@Override // android.app.Dialog, android.view.Window.Callback
public void onDetachedFromWindow() {
EdgeToEdgeCallback edgeToEdgeCallback = this.edgeToEdgeCallback;
if (edgeToEdgeCallback != null) {
edgeToEdgeCallback.setWindow(null);
}
MaterialBackOrchestrator materialBackOrchestrator = this.backOrchestrator;
if (materialBackOrchestrator != null) {
materialBackOrchestrator.stopListeningForBackCallbacks();
}
}
@Override // android.app.Dialog, android.content.DialogInterface
public void cancel() {
BottomSheetBehavior<FrameLayout> behavior = getBehavior();
if (!this.dismissWithAnimation || behavior.getState() == 5) {
super.cancel();
} else {
behavior.setState(5);
}
}
@Override // android.app.Dialog
public void setCanceledOnTouchOutside(boolean z) {
super.setCanceledOnTouchOutside(z);
if (z && !this.cancelable) {
this.cancelable = true;
}
this.canceledOnTouchOutside = z;
this.canceledOnTouchOutsideSet = true;
}
public BottomSheetBehavior<FrameLayout> getBehavior() {
if (this.behavior == null) {
ensureContainerAndBehavior();
}
return this.behavior;
}
private FrameLayout ensureContainerAndBehavior() {
if (this.container == null) {
FrameLayout frameLayout = (FrameLayout) View.inflate(getContext(), R.layout.design_bottom_sheet_dialog, null);
this.container = frameLayout;
this.coordinator = (CoordinatorLayout) frameLayout.findViewById(R.id.coordinator);
FrameLayout frameLayout2 = (FrameLayout) this.container.findViewById(R.id.design_bottom_sheet);
this.bottomSheet = frameLayout2;
BottomSheetBehavior<FrameLayout> from = BottomSheetBehavior.from(frameLayout2);
this.behavior = from;
from.addBottomSheetCallback(this.bottomSheetCallback);
this.behavior.setHideable(this.cancelable);
this.backOrchestrator = new MaterialBackOrchestrator(this.behavior, this.bottomSheet);
}
return this.container;
}
private View wrapInBottomSheet(int i, View view, ViewGroup.LayoutParams layoutParams) {
ensureContainerAndBehavior();
CoordinatorLayout coordinatorLayout = (CoordinatorLayout) this.container.findViewById(R.id.coordinator);
if (i != 0 && view == null) {
view = getLayoutInflater().inflate(i, (ViewGroup) coordinatorLayout, false);
}
if (this.edgeToEdgeEnabled) {
ViewCompat.setOnApplyWindowInsetsListener(this.bottomSheet, new OnApplyWindowInsetsListener() { // from class: com.google.android.material.bottomsheet.BottomSheetDialog.1
@Override // androidx.core.view.OnApplyWindowInsetsListener
public WindowInsetsCompat onApplyWindowInsets(View view2, WindowInsetsCompat windowInsetsCompat) {
if (BottomSheetDialog.this.edgeToEdgeCallback != null) {
BottomSheetDialog.this.behavior.removeBottomSheetCallback(BottomSheetDialog.this.edgeToEdgeCallback);
}
if (windowInsetsCompat != null) {
BottomSheetDialog.this.edgeToEdgeCallback = new EdgeToEdgeCallback(BottomSheetDialog.this.bottomSheet, windowInsetsCompat);
BottomSheetDialog.this.edgeToEdgeCallback.setWindow(BottomSheetDialog.this.getWindow());
BottomSheetDialog.this.behavior.addBottomSheetCallback(BottomSheetDialog.this.edgeToEdgeCallback);
}
return windowInsetsCompat;
}
});
}
this.bottomSheet.removeAllViews();
if (layoutParams == null) {
this.bottomSheet.addView(view);
} else {
this.bottomSheet.addView(view, layoutParams);
}
coordinatorLayout.findViewById(R.id.touch_outside).setOnClickListener(new View.OnClickListener() { // from class: com.google.android.material.bottomsheet.BottomSheetDialog.2
@Override // android.view.View.OnClickListener
public void onClick(View view2) {
if (BottomSheetDialog.this.cancelable && BottomSheetDialog.this.isShowing() && BottomSheetDialog.this.shouldWindowCloseOnTouchOutside()) {
BottomSheetDialog.this.cancel();
}
}
});
ViewCompat.setAccessibilityDelegate(this.bottomSheet, new AccessibilityDelegateCompat() { // from class: com.google.android.material.bottomsheet.BottomSheetDialog.3
@Override // androidx.core.view.AccessibilityDelegateCompat
public void onInitializeAccessibilityNodeInfo(View view2, AccessibilityNodeInfoCompat accessibilityNodeInfoCompat) {
super.onInitializeAccessibilityNodeInfo(view2, accessibilityNodeInfoCompat);
if (BottomSheetDialog.this.cancelable) {
accessibilityNodeInfoCompat.addAction(1048576);
accessibilityNodeInfoCompat.setDismissable(true);
} else {
accessibilityNodeInfoCompat.setDismissable(false);
}
}
@Override // androidx.core.view.AccessibilityDelegateCompat
public boolean performAccessibilityAction(View view2, int i2, Bundle bundle) {
if (i2 == 1048576 && BottomSheetDialog.this.cancelable) {
BottomSheetDialog.this.cancel();
return true;
}
return super.performAccessibilityAction(view2, i2, bundle);
}
});
this.bottomSheet.setOnTouchListener(new View.OnTouchListener() { // from class: com.google.android.material.bottomsheet.BottomSheetDialog.4
@Override // android.view.View.OnTouchListener
public boolean onTouch(View view2, MotionEvent motionEvent) {
return true;
}
});
return this.container;
}
private void updateListeningForBackCallbacks() {
MaterialBackOrchestrator materialBackOrchestrator = this.backOrchestrator;
if (materialBackOrchestrator == null) {
return;
}
if (this.cancelable) {
materialBackOrchestrator.startListeningForBackCallbacks();
} else {
materialBackOrchestrator.stopListeningForBackCallbacks();
}
}
boolean shouldWindowCloseOnTouchOutside() {
if (!this.canceledOnTouchOutsideSet) {
TypedArray obtainStyledAttributes = getContext().obtainStyledAttributes(new int[]{android.R.attr.windowCloseOnTouchOutside});
this.canceledOnTouchOutside = obtainStyledAttributes.getBoolean(0, true);
obtainStyledAttributes.recycle();
this.canceledOnTouchOutsideSet = true;
}
return this.canceledOnTouchOutside;
}
private static int getThemeResId(Context context, int i) {
if (i != 0) {
return i;
}
TypedValue typedValue = new TypedValue();
if (context.getTheme().resolveAttribute(R.attr.bottomSheetDialogTheme, typedValue, true)) {
return typedValue.resourceId;
}
return R.style.Theme_Design_Light_BottomSheetDialog;
}
/* JADX INFO: Access modifiers changed from: package-private */
public void removeDefaultCallback() {
this.behavior.removeBottomSheetCallback(this.bottomSheetCallback);
}
/* loaded from: classes2.dex */
private static class EdgeToEdgeCallback extends BottomSheetBehavior.BottomSheetCallback {
private final WindowInsetsCompat insetsCompat;
private final Boolean lightBottomSheet;
private boolean lightStatusBar;
private Window window;
private EdgeToEdgeCallback(View view, WindowInsetsCompat windowInsetsCompat) {
ColorStateList backgroundTintList;
this.insetsCompat = windowInsetsCompat;
MaterialShapeDrawable materialShapeDrawable = BottomSheetBehavior.from(view).getMaterialShapeDrawable();
if (materialShapeDrawable != null) {
backgroundTintList = materialShapeDrawable.getFillColor();
} else {
backgroundTintList = ViewCompat.getBackgroundTintList(view);
}
if (backgroundTintList != null) {
this.lightBottomSheet = Boolean.valueOf(MaterialColors.isColorLight(backgroundTintList.getDefaultColor()));
return;
}
Integer backgroundColor = ViewUtils.getBackgroundColor(view);
if (backgroundColor != null) {
this.lightBottomSheet = Boolean.valueOf(MaterialColors.isColorLight(backgroundColor.intValue()));
} else {
this.lightBottomSheet = null;
}
}
@Override // com.google.android.material.bottomsheet.BottomSheetBehavior.BottomSheetCallback
public void onStateChanged(View view, int i) {
setPaddingForPosition(view);
}
@Override // com.google.android.material.bottomsheet.BottomSheetBehavior.BottomSheetCallback
public void onSlide(View view, float f) {
setPaddingForPosition(view);
}
@Override // com.google.android.material.bottomsheet.BottomSheetBehavior.BottomSheetCallback
void onLayout(View view) {
setPaddingForPosition(view);
}
void setWindow(Window window) {
if (this.window == window) {
return;
}
this.window = window;
if (window != null) {
this.lightStatusBar = WindowCompat.getInsetsController(window, window.getDecorView()).isAppearanceLightStatusBars();
}
}
private void setPaddingForPosition(View view) {
if (view.getTop() < this.insetsCompat.getSystemWindowInsetTop()) {
Window window = this.window;
if (window != null) {
Boolean bool = this.lightBottomSheet;
EdgeToEdgeUtils.setLightStatusBar(window, bool == null ? this.lightStatusBar : bool.booleanValue());
}
view.setPadding(view.getPaddingLeft(), this.insetsCompat.getSystemWindowInsetTop() - view.getTop(), view.getPaddingRight(), view.getPaddingBottom());
return;
}
if (view.getTop() != 0) {
Window window2 = this.window;
if (window2 != null) {
EdgeToEdgeUtils.setLightStatusBar(window2, this.lightStatusBar);
}
view.setPadding(view.getPaddingLeft(), 0, view.getPaddingRight(), view.getPaddingBottom());
}
}
}
@Deprecated
public static void setLightStatusBar(View view, boolean z) {
int systemUiVisibility = view.getSystemUiVisibility();
view.setSystemUiVisibility(z ? systemUiVisibility | 8192 : systemUiVisibility & (-8193));
}
}