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

376 lines
17 KiB
Java

package com.google.android.material.button;
import android.content.res.ColorStateList;
import android.content.res.TypedArray;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.InsetDrawable;
import android.graphics.drawable.LayerDrawable;
import android.graphics.drawable.RippleDrawable;
import androidx.core.graphics.drawable.DrawableCompat;
import androidx.core.view.ViewCompat;
import com.google.android.material.R;
import com.google.android.material.color.MaterialColors;
import com.google.android.material.internal.ViewUtils;
import com.google.android.material.resources.MaterialResources;
import com.google.android.material.ripple.RippleDrawableCompat;
import com.google.android.material.ripple.RippleUtils;
import com.google.android.material.shape.MaterialShapeDrawable;
import com.google.android.material.shape.ShapeAppearanceModel;
import com.google.android.material.shape.Shapeable;
/* JADX INFO: Access modifiers changed from: package-private */
/* loaded from: classes2.dex */
public class MaterialButtonHelper {
private ColorStateList backgroundTint;
private PorterDuff.Mode backgroundTintMode;
private boolean checkable;
private int cornerRadius;
private int elevation;
private int insetBottom;
private int insetLeft;
private int insetRight;
private int insetTop;
private Drawable maskDrawable;
private final MaterialButton materialButton;
private ColorStateList rippleColor;
private LayerDrawable rippleDrawable;
private ShapeAppearanceModel shapeAppearanceModel;
private ColorStateList strokeColor;
private int strokeWidth;
private static final boolean IS_MIN_LOLLIPOP = true;
private static final boolean IS_LOLLIPOP = false;
private boolean shouldDrawSurfaceColorStroke = false;
private boolean backgroundOverwritten = false;
private boolean cornerRadiusSet = false;
private boolean toggleCheckedStateOnClick = true;
/* JADX INFO: Access modifiers changed from: package-private */
public int getCornerRadius() {
return this.cornerRadius;
}
public int getInsetBottom() {
return this.insetBottom;
}
public int getInsetTop() {
return this.insetTop;
}
/* JADX INFO: Access modifiers changed from: package-private */
public ColorStateList getRippleColor() {
return this.rippleColor;
}
/* JADX INFO: Access modifiers changed from: package-private */
public ShapeAppearanceModel getShapeAppearanceModel() {
return this.shapeAppearanceModel;
}
/* JADX INFO: Access modifiers changed from: package-private */
public ColorStateList getStrokeColor() {
return this.strokeColor;
}
/* JADX INFO: Access modifiers changed from: package-private */
public int getStrokeWidth() {
return this.strokeWidth;
}
/* JADX INFO: Access modifiers changed from: package-private */
public ColorStateList getSupportBackgroundTintList() {
return this.backgroundTint;
}
/* JADX INFO: Access modifiers changed from: package-private */
public PorterDuff.Mode getSupportBackgroundTintMode() {
return this.backgroundTintMode;
}
/* JADX INFO: Access modifiers changed from: package-private */
public boolean isBackgroundOverwritten() {
return this.backgroundOverwritten;
}
/* JADX INFO: Access modifiers changed from: package-private */
public boolean isCheckable() {
return this.checkable;
}
/* JADX INFO: Access modifiers changed from: package-private */
public boolean isToggleCheckedStateOnClick() {
return this.toggleCheckedStateOnClick;
}
/* JADX INFO: Access modifiers changed from: package-private */
public void setCheckable(boolean z) {
this.checkable = z;
}
/* JADX INFO: Access modifiers changed from: package-private */
public void setToggleCheckedStateOnClick(boolean z) {
this.toggleCheckedStateOnClick = z;
}
/* JADX INFO: Access modifiers changed from: package-private */
public MaterialButtonHelper(MaterialButton materialButton, ShapeAppearanceModel shapeAppearanceModel) {
this.materialButton = materialButton;
this.shapeAppearanceModel = shapeAppearanceModel;
}
/* JADX INFO: Access modifiers changed from: package-private */
public void loadFromAttributes(TypedArray typedArray) {
this.insetLeft = typedArray.getDimensionPixelOffset(R.styleable.MaterialButton_android_insetLeft, 0);
this.insetRight = typedArray.getDimensionPixelOffset(R.styleable.MaterialButton_android_insetRight, 0);
this.insetTop = typedArray.getDimensionPixelOffset(R.styleable.MaterialButton_android_insetTop, 0);
this.insetBottom = typedArray.getDimensionPixelOffset(R.styleable.MaterialButton_android_insetBottom, 0);
if (typedArray.hasValue(R.styleable.MaterialButton_cornerRadius)) {
int dimensionPixelSize = typedArray.getDimensionPixelSize(R.styleable.MaterialButton_cornerRadius, -1);
this.cornerRadius = dimensionPixelSize;
setShapeAppearanceModel(this.shapeAppearanceModel.withCornerSize(dimensionPixelSize));
this.cornerRadiusSet = true;
}
this.strokeWidth = typedArray.getDimensionPixelSize(R.styleable.MaterialButton_strokeWidth, 0);
this.backgroundTintMode = ViewUtils.parseTintMode(typedArray.getInt(R.styleable.MaterialButton_backgroundTintMode, -1), PorterDuff.Mode.SRC_IN);
this.backgroundTint = MaterialResources.getColorStateList(this.materialButton.getContext(), typedArray, R.styleable.MaterialButton_backgroundTint);
this.strokeColor = MaterialResources.getColorStateList(this.materialButton.getContext(), typedArray, R.styleable.MaterialButton_strokeColor);
this.rippleColor = MaterialResources.getColorStateList(this.materialButton.getContext(), typedArray, R.styleable.MaterialButton_rippleColor);
this.checkable = typedArray.getBoolean(R.styleable.MaterialButton_android_checkable, false);
this.elevation = typedArray.getDimensionPixelSize(R.styleable.MaterialButton_elevation, 0);
this.toggleCheckedStateOnClick = typedArray.getBoolean(R.styleable.MaterialButton_toggleCheckedStateOnClick, true);
int paddingStart = ViewCompat.getPaddingStart(this.materialButton);
int paddingTop = this.materialButton.getPaddingTop();
int paddingEnd = ViewCompat.getPaddingEnd(this.materialButton);
int paddingBottom = this.materialButton.getPaddingBottom();
if (typedArray.hasValue(R.styleable.MaterialButton_android_background)) {
setBackgroundOverwritten();
} else {
updateBackground();
}
ViewCompat.setPaddingRelative(this.materialButton, paddingStart + this.insetLeft, paddingTop + this.insetTop, paddingEnd + this.insetRight, paddingBottom + this.insetBottom);
}
private void updateBackground() {
this.materialButton.setInternalBackground(createBackground());
MaterialShapeDrawable materialShapeDrawable = getMaterialShapeDrawable();
if (materialShapeDrawable != null) {
materialShapeDrawable.setElevation(this.elevation);
materialShapeDrawable.setState(this.materialButton.getDrawableState());
}
}
/* JADX INFO: Access modifiers changed from: package-private */
public void setBackgroundOverwritten() {
this.backgroundOverwritten = true;
this.materialButton.setSupportBackgroundTintList(this.backgroundTint);
this.materialButton.setSupportBackgroundTintMode(this.backgroundTintMode);
}
private InsetDrawable wrapDrawableWithInset(Drawable drawable) {
return new InsetDrawable(drawable, this.insetLeft, this.insetTop, this.insetRight, this.insetBottom);
}
/* JADX INFO: Access modifiers changed from: package-private */
public void setSupportBackgroundTintList(ColorStateList colorStateList) {
if (this.backgroundTint != colorStateList) {
this.backgroundTint = colorStateList;
if (getMaterialShapeDrawable() != null) {
DrawableCompat.setTintList(getMaterialShapeDrawable(), this.backgroundTint);
}
}
}
/* JADX INFO: Access modifiers changed from: package-private */
public void setSupportBackgroundTintMode(PorterDuff.Mode mode) {
if (this.backgroundTintMode != mode) {
this.backgroundTintMode = mode;
if (getMaterialShapeDrawable() == null || this.backgroundTintMode == null) {
return;
}
DrawableCompat.setTintMode(getMaterialShapeDrawable(), this.backgroundTintMode);
}
}
/* JADX INFO: Access modifiers changed from: package-private */
public void setShouldDrawSurfaceColorStroke(boolean z) {
this.shouldDrawSurfaceColorStroke = z;
updateStroke();
}
private Drawable createBackground() {
MaterialShapeDrawable materialShapeDrawable = new MaterialShapeDrawable(this.shapeAppearanceModel);
materialShapeDrawable.initializeElevationOverlay(this.materialButton.getContext());
DrawableCompat.setTintList(materialShapeDrawable, this.backgroundTint);
PorterDuff.Mode mode = this.backgroundTintMode;
if (mode != null) {
DrawableCompat.setTintMode(materialShapeDrawable, mode);
}
materialShapeDrawable.setStroke(this.strokeWidth, this.strokeColor);
MaterialShapeDrawable materialShapeDrawable2 = new MaterialShapeDrawable(this.shapeAppearanceModel);
materialShapeDrawable2.setTint(0);
materialShapeDrawable2.setStroke(this.strokeWidth, this.shouldDrawSurfaceColorStroke ? MaterialColors.getColor(this.materialButton, R.attr.colorSurface) : 0);
if (IS_MIN_LOLLIPOP) {
MaterialShapeDrawable materialShapeDrawable3 = new MaterialShapeDrawable(this.shapeAppearanceModel);
this.maskDrawable = materialShapeDrawable3;
DrawableCompat.setTint(materialShapeDrawable3, -1);
RippleDrawable rippleDrawable = new RippleDrawable(RippleUtils.sanitizeRippleDrawableColor(this.rippleColor), wrapDrawableWithInset(new LayerDrawable(new Drawable[]{materialShapeDrawable2, materialShapeDrawable})), this.maskDrawable);
this.rippleDrawable = rippleDrawable;
return rippleDrawable;
}
RippleDrawableCompat rippleDrawableCompat = new RippleDrawableCompat(this.shapeAppearanceModel);
this.maskDrawable = rippleDrawableCompat;
DrawableCompat.setTintList(rippleDrawableCompat, RippleUtils.sanitizeRippleDrawableColor(this.rippleColor));
LayerDrawable layerDrawable = new LayerDrawable(new Drawable[]{materialShapeDrawable2, materialShapeDrawable, this.maskDrawable});
this.rippleDrawable = layerDrawable;
return wrapDrawableWithInset(layerDrawable);
}
void updateMaskBounds(int i, int i2) {
Drawable drawable = this.maskDrawable;
if (drawable != null) {
drawable.setBounds(this.insetLeft, this.insetTop, i2 - this.insetRight, i - this.insetBottom);
}
}
/* JADX INFO: Access modifiers changed from: package-private */
public void setBackgroundColor(int i) {
if (getMaterialShapeDrawable() != null) {
getMaterialShapeDrawable().setTint(i);
}
}
/* JADX INFO: Access modifiers changed from: package-private */
public void setRippleColor(ColorStateList colorStateList) {
if (this.rippleColor != colorStateList) {
this.rippleColor = colorStateList;
boolean z = IS_MIN_LOLLIPOP;
if (z && (this.materialButton.getBackground() instanceof RippleDrawable)) {
((RippleDrawable) this.materialButton.getBackground()).setColor(RippleUtils.sanitizeRippleDrawableColor(colorStateList));
} else {
if (z || !(this.materialButton.getBackground() instanceof RippleDrawableCompat)) {
return;
}
((RippleDrawableCompat) this.materialButton.getBackground()).setTintList(RippleUtils.sanitizeRippleDrawableColor(colorStateList));
}
}
}
/* JADX INFO: Access modifiers changed from: package-private */
public void setStrokeColor(ColorStateList colorStateList) {
if (this.strokeColor != colorStateList) {
this.strokeColor = colorStateList;
updateStroke();
}
}
/* JADX INFO: Access modifiers changed from: package-private */
public void setStrokeWidth(int i) {
if (this.strokeWidth != i) {
this.strokeWidth = i;
updateStroke();
}
}
private void updateStroke() {
MaterialShapeDrawable materialShapeDrawable = getMaterialShapeDrawable();
MaterialShapeDrawable surfaceColorStrokeDrawable = getSurfaceColorStrokeDrawable();
if (materialShapeDrawable != null) {
materialShapeDrawable.setStroke(this.strokeWidth, this.strokeColor);
if (surfaceColorStrokeDrawable != null) {
surfaceColorStrokeDrawable.setStroke(this.strokeWidth, this.shouldDrawSurfaceColorStroke ? MaterialColors.getColor(this.materialButton, R.attr.colorSurface) : 0);
}
}
}
/* JADX INFO: Access modifiers changed from: package-private */
public void setCornerRadius(int i) {
if (this.cornerRadiusSet && this.cornerRadius == i) {
return;
}
this.cornerRadius = i;
this.cornerRadiusSet = true;
setShapeAppearanceModel(this.shapeAppearanceModel.withCornerSize(i));
}
private MaterialShapeDrawable getMaterialShapeDrawable(boolean z) {
LayerDrawable layerDrawable = this.rippleDrawable;
if (layerDrawable == null || layerDrawable.getNumberOfLayers() <= 0) {
return null;
}
if (IS_MIN_LOLLIPOP) {
return (MaterialShapeDrawable) ((LayerDrawable) ((InsetDrawable) this.rippleDrawable.getDrawable(0)).getDrawable()).getDrawable(!z ? 1 : 0);
}
return (MaterialShapeDrawable) this.rippleDrawable.getDrawable(!z ? 1 : 0);
}
/* JADX INFO: Access modifiers changed from: package-private */
public MaterialShapeDrawable getMaterialShapeDrawable() {
return getMaterialShapeDrawable(false);
}
private MaterialShapeDrawable getSurfaceColorStrokeDrawable() {
return getMaterialShapeDrawable(true);
}
private void updateButtonShape(ShapeAppearanceModel shapeAppearanceModel) {
if (IS_LOLLIPOP && !this.backgroundOverwritten) {
int paddingStart = ViewCompat.getPaddingStart(this.materialButton);
int paddingTop = this.materialButton.getPaddingTop();
int paddingEnd = ViewCompat.getPaddingEnd(this.materialButton);
int paddingBottom = this.materialButton.getPaddingBottom();
updateBackground();
ViewCompat.setPaddingRelative(this.materialButton, paddingStart, paddingTop, paddingEnd, paddingBottom);
return;
}
if (getMaterialShapeDrawable() != null) {
getMaterialShapeDrawable().setShapeAppearanceModel(shapeAppearanceModel);
}
if (getSurfaceColorStrokeDrawable() != null) {
getSurfaceColorStrokeDrawable().setShapeAppearanceModel(shapeAppearanceModel);
}
if (getMaskDrawable() != null) {
getMaskDrawable().setShapeAppearanceModel(shapeAppearanceModel);
}
}
public Shapeable getMaskDrawable() {
LayerDrawable layerDrawable = this.rippleDrawable;
if (layerDrawable == null || layerDrawable.getNumberOfLayers() <= 1) {
return null;
}
if (this.rippleDrawable.getNumberOfLayers() > 2) {
return (Shapeable) this.rippleDrawable.getDrawable(2);
}
return (Shapeable) this.rippleDrawable.getDrawable(1);
}
/* JADX INFO: Access modifiers changed from: package-private */
public void setShapeAppearanceModel(ShapeAppearanceModel shapeAppearanceModel) {
this.shapeAppearanceModel = shapeAppearanceModel;
updateButtonShape(shapeAppearanceModel);
}
public void setInsetBottom(int i) {
setVerticalInsets(this.insetTop, i);
}
public void setInsetTop(int i) {
setVerticalInsets(i, this.insetBottom);
}
private void setVerticalInsets(int i, int i2) {
int paddingStart = ViewCompat.getPaddingStart(this.materialButton);
int paddingTop = this.materialButton.getPaddingTop();
int paddingEnd = ViewCompat.getPaddingEnd(this.materialButton);
int paddingBottom = this.materialButton.getPaddingBottom();
int i3 = this.insetTop;
int i4 = this.insetBottom;
this.insetBottom = i2;
this.insetTop = i;
if (!this.backgroundOverwritten) {
updateBackground();
}
ViewCompat.setPaddingRelative(this.materialButton, paddingStart, (paddingTop + i) - i3, paddingEnd, (paddingBottom + i2) - i4);
}
}