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

606 lines
26 KiB
Java

package com.google.android.material.checkbox;
import android.content.Context;
import android.content.res.ColorStateList;
import android.content.res.Resources;
import android.graphics.Canvas;
import android.graphics.PorterDuff;
import android.graphics.Rect;
import android.graphics.drawable.AnimatedStateListDrawable;
import android.graphics.drawable.Drawable;
import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.View;
import android.view.accessibility.AccessibilityNodeInfo;
import android.view.autofill.AutofillManager;
import android.widget.CompoundButton;
import androidx.appcompat.content.res.AppCompatResources;
import androidx.appcompat.widget.AppCompatCheckBox;
import androidx.appcompat.widget.TintTypedArray;
import androidx.core.graphics.drawable.DrawableCompat;
import androidx.core.widget.CompoundButtonCompat;
import androidx.vectordrawable.graphics.drawable.Animatable2Compat;
import androidx.vectordrawable.graphics.drawable.AnimatedVectorDrawableCompat;
import com.google.android.material.R;
import com.google.android.material.color.MaterialColors;
import com.google.android.material.drawable.DrawableUtils;
import com.google.android.material.internal.ViewUtils;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.Iterator;
import java.util.LinkedHashSet;
/* loaded from: classes2.dex */
public class MaterialCheckBox extends AppCompatCheckBox {
public static final int STATE_CHECKED = 1;
public static final int STATE_INDETERMINATE = 2;
public static final int STATE_UNCHECKED = 0;
private boolean broadcasting;
private Drawable buttonDrawable;
private Drawable buttonIconDrawable;
ColorStateList buttonIconTintList;
private PorterDuff.Mode buttonIconTintMode;
ColorStateList buttonTintList;
private boolean centerIfNoTextEnabled;
private int checkedState;
private int[] currentStateChecked;
private CharSequence customStateDescription;
private CharSequence errorAccessibilityLabel;
private boolean errorShown;
private ColorStateList materialThemeColorsTintList;
private CompoundButton.OnCheckedChangeListener onCheckedChangeListener;
private final LinkedHashSet<OnCheckedStateChangedListener> onCheckedStateChangedListeners;
private final LinkedHashSet<OnErrorChangedListener> onErrorChangedListeners;
private final AnimatedVectorDrawableCompat transitionToUnchecked;
private final Animatable2Compat.AnimationCallback transitionToUncheckedCallback;
private boolean useMaterialThemeColors;
private boolean usingMaterialButtonDrawable;
private static final int DEF_STYLE_RES = R.style.Widget_MaterialComponents_CompoundButton_CheckBox;
private static final int[] INDETERMINATE_STATE_SET = {R.attr.state_indeterminate};
private static final int[] ERROR_STATE_SET = {R.attr.state_error};
private static final int[][] CHECKBOX_STATES = {new int[]{android.R.attr.state_enabled, R.attr.state_error}, new int[]{android.R.attr.state_enabled, android.R.attr.state_checked}, new int[]{android.R.attr.state_enabled, -16842912}, new int[]{-16842910, android.R.attr.state_checked}, new int[]{-16842910, -16842912}};
private static final int FRAMEWORK_BUTTON_DRAWABLE_RES_ID = Resources.getSystem().getIdentifier("btn_check_material_anim", "drawable", "android");
@Retention(RetentionPolicy.SOURCE)
/* loaded from: classes2.dex */
public @interface CheckedState {
}
/* loaded from: classes2.dex */
public interface OnCheckedStateChangedListener {
void onCheckedStateChangedListener(MaterialCheckBox materialCheckBox, int i);
}
/* loaded from: classes2.dex */
public interface OnErrorChangedListener {
void onErrorChanged(MaterialCheckBox materialCheckBox, boolean z);
}
private void updateIconTintIfNeeded() {
}
@Override // android.widget.CompoundButton
public Drawable getButtonDrawable() {
return this.buttonDrawable;
}
public Drawable getButtonIconDrawable() {
return this.buttonIconDrawable;
}
public ColorStateList getButtonIconTintList() {
return this.buttonIconTintList;
}
public PorterDuff.Mode getButtonIconTintMode() {
return this.buttonIconTintMode;
}
@Override // android.widget.CompoundButton
public ColorStateList getButtonTintList() {
return this.buttonTintList;
}
public int getCheckedState() {
return this.checkedState;
}
public CharSequence getErrorAccessibilityLabel() {
return this.errorAccessibilityLabel;
}
public boolean isCenterIfNoTextEnabled() {
return this.centerIfNoTextEnabled;
}
@Override // android.widget.CompoundButton, android.widget.Checkable
public boolean isChecked() {
return this.checkedState == 1;
}
public boolean isErrorShown() {
return this.errorShown;
}
public boolean isUseMaterialThemeColors() {
return this.useMaterialThemeColors;
}
public void setCenterIfNoTextEnabled(boolean z) {
this.centerIfNoTextEnabled = z;
}
public void setErrorAccessibilityLabel(CharSequence charSequence) {
this.errorAccessibilityLabel = charSequence;
}
@Override // android.widget.CompoundButton
public void setOnCheckedChangeListener(CompoundButton.OnCheckedChangeListener onCheckedChangeListener) {
this.onCheckedChangeListener = onCheckedChangeListener;
}
public MaterialCheckBox(Context context) {
this(context, null);
}
public MaterialCheckBox(Context context, AttributeSet attributeSet) {
this(context, attributeSet, R.attr.checkboxStyle);
}
/* JADX WARN: Illegal instructions before constructor call */
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
public MaterialCheckBox(android.content.Context r9, android.util.AttributeSet r10, int r11) {
/*
r8 = this;
int r4 = com.google.android.material.checkbox.MaterialCheckBox.DEF_STYLE_RES
android.content.Context r9 = com.google.android.material.theme.overlay.MaterialThemeOverlay.wrap(r9, r10, r11, r4)
r8.<init>(r9, r10, r11)
java.util.LinkedHashSet r9 = new java.util.LinkedHashSet
r9.<init>()
r8.onErrorChangedListeners = r9
java.util.LinkedHashSet r9 = new java.util.LinkedHashSet
r9.<init>()
r8.onCheckedStateChangedListeners = r9
android.content.Context r9 = r8.getContext()
int r0 = com.google.android.material.R.drawable.mtrl_checkbox_button_checked_unchecked
androidx.vectordrawable.graphics.drawable.AnimatedVectorDrawableCompat r9 = androidx.vectordrawable.graphics.drawable.AnimatedVectorDrawableCompat.create(r9, r0)
r8.transitionToUnchecked = r9
com.google.android.material.checkbox.MaterialCheckBox$1 r9 = new com.google.android.material.checkbox.MaterialCheckBox$1
r9.<init>()
r8.transitionToUncheckedCallback = r9
android.content.Context r9 = r8.getContext()
android.graphics.drawable.Drawable r0 = androidx.core.widget.CompoundButtonCompat.getButtonDrawable(r8)
r8.buttonDrawable = r0
android.content.res.ColorStateList r0 = r8.getSuperButtonTintList()
r8.buttonTintList = r0
r6 = 0
r8.setSupportButtonTintList(r6)
int[] r2 = com.google.android.material.R.styleable.MaterialCheckBox
r7 = 0
int[] r5 = new int[r7]
r0 = r9
r1 = r10
r3 = r11
androidx.appcompat.widget.TintTypedArray r10 = com.google.android.material.internal.ThemeEnforcement.obtainTintedStyledAttributes(r0, r1, r2, r3, r4, r5)
int r11 = com.google.android.material.R.styleable.MaterialCheckBox_buttonIcon
android.graphics.drawable.Drawable r11 = r10.getDrawable(r11)
r8.buttonIconDrawable = r11
android.graphics.drawable.Drawable r11 = r8.buttonDrawable
r0 = 1
if (r11 == 0) goto L7c
boolean r11 = com.google.android.material.internal.ThemeEnforcement.isMaterial3Theme(r9)
if (r11 == 0) goto L7c
boolean r11 = r8.isButtonDrawableLegacy(r10)
if (r11 == 0) goto L7c
super.setButtonDrawable(r6)
int r11 = com.google.android.material.R.drawable.mtrl_checkbox_button
android.graphics.drawable.Drawable r11 = androidx.appcompat.content.res.AppCompatResources.getDrawable(r9, r11)
r8.buttonDrawable = r11
r8.usingMaterialButtonDrawable = r0
android.graphics.drawable.Drawable r11 = r8.buttonIconDrawable
if (r11 != 0) goto L7c
int r11 = com.google.android.material.R.drawable.mtrl_checkbox_button_icon
android.graphics.drawable.Drawable r11 = androidx.appcompat.content.res.AppCompatResources.getDrawable(r9, r11)
r8.buttonIconDrawable = r11
L7c:
int r11 = com.google.android.material.R.styleable.MaterialCheckBox_buttonIconTint
android.content.res.ColorStateList r9 = com.google.android.material.resources.MaterialResources.getColorStateList(r9, r10, r11)
r8.buttonIconTintList = r9
int r9 = com.google.android.material.R.styleable.MaterialCheckBox_buttonIconTintMode
r11 = -1
int r9 = r10.getInt(r9, r11)
android.graphics.PorterDuff$Mode r11 = android.graphics.PorterDuff.Mode.SRC_IN
android.graphics.PorterDuff$Mode r9 = com.google.android.material.internal.ViewUtils.parseTintMode(r9, r11)
r8.buttonIconTintMode = r9
int r9 = com.google.android.material.R.styleable.MaterialCheckBox_useMaterialThemeColors
boolean r9 = r10.getBoolean(r9, r7)
r8.useMaterialThemeColors = r9
int r9 = com.google.android.material.R.styleable.MaterialCheckBox_centerIfNoTextEnabled
boolean r9 = r10.getBoolean(r9, r0)
r8.centerIfNoTextEnabled = r9
int r9 = com.google.android.material.R.styleable.MaterialCheckBox_errorShown
boolean r9 = r10.getBoolean(r9, r7)
r8.errorShown = r9
int r9 = com.google.android.material.R.styleable.MaterialCheckBox_errorAccessibilityLabel
java.lang.CharSequence r9 = r10.getText(r9)
r8.errorAccessibilityLabel = r9
int r9 = com.google.android.material.R.styleable.MaterialCheckBox_checkedState
boolean r9 = r10.hasValue(r9)
if (r9 == 0) goto Lc4
int r9 = com.google.android.material.R.styleable.MaterialCheckBox_checkedState
int r9 = r10.getInt(r9, r7)
r8.setCheckedState(r9)
Lc4:
r10.recycle()
r8.refreshButtonDrawable()
return
*/
throw new UnsupportedOperationException("Method not decompiled: com.google.android.material.checkbox.MaterialCheckBox.<init>(android.content.Context, android.util.AttributeSet, int):void");
}
/* JADX INFO: Access modifiers changed from: package-private */
/* renamed from: lambda$new$0$com-google-android-material-checkbox-MaterialCheckBox, reason: not valid java name */
public /* synthetic */ void m5487xdf87d0bf() {
this.buttonIconDrawable.jumpToCurrentState();
}
@Override // android.widget.CompoundButton, android.widget.TextView, android.view.View
protected void onDraw(Canvas canvas) {
Drawable buttonDrawable;
if (this.centerIfNoTextEnabled && TextUtils.isEmpty(getText()) && (buttonDrawable = CompoundButtonCompat.getButtonDrawable(this)) != null) {
int width = ((getWidth() - buttonDrawable.getIntrinsicWidth()) / 2) * (ViewUtils.isLayoutRtl(this) ? -1 : 1);
int save = canvas.save();
canvas.translate(width, 0.0f);
super.onDraw(canvas);
canvas.restoreToCount(save);
if (getBackground() != null) {
Rect bounds = buttonDrawable.getBounds();
DrawableCompat.setHotspotBounds(getBackground(), bounds.left + width, bounds.top, bounds.right + width, bounds.bottom);
return;
}
return;
}
super.onDraw(canvas);
}
@Override // android.widget.TextView, android.view.View
protected void onAttachedToWindow() {
super.onAttachedToWindow();
if (this.useMaterialThemeColors && this.buttonTintList == null && this.buttonIconTintList == null) {
setUseMaterialThemeColors(true);
}
}
@Override // android.widget.CompoundButton, android.widget.TextView, android.view.View
protected int[] onCreateDrawableState(int i) {
int[] onCreateDrawableState = super.onCreateDrawableState(i + 2);
if (getCheckedState() == 2) {
mergeDrawableStates(onCreateDrawableState, INDETERMINATE_STATE_SET);
}
if (isErrorShown()) {
mergeDrawableStates(onCreateDrawableState, ERROR_STATE_SET);
}
this.currentStateChecked = DrawableUtils.getCheckedState(onCreateDrawableState);
updateIconTintIfNeeded();
return onCreateDrawableState;
}
@Override // android.widget.TextView, android.view.View
public void setEnabled(boolean z) {
super.setEnabled(z);
updateIconTintIfNeeded();
}
@Override // android.widget.CompoundButton, android.widget.Checkable
public void setChecked(boolean z) {
setCheckedState(z ? 1 : 0);
}
@Override // android.widget.CompoundButton, android.widget.Checkable
public void toggle() {
setChecked(!isChecked());
}
@Override // android.view.View
public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo accessibilityNodeInfo) {
super.onInitializeAccessibilityNodeInfo(accessibilityNodeInfo);
if (accessibilityNodeInfo != null && isErrorShown()) {
accessibilityNodeInfo.setText(((Object) accessibilityNodeInfo.getText()) + ", " + ((Object) this.errorAccessibilityLabel));
}
}
public void setCheckedState(int i) {
CompoundButton.OnCheckedChangeListener onCheckedChangeListener;
if (this.checkedState != i) {
this.checkedState = i;
super.setChecked(i == 1);
refreshDrawableState();
setDefaultStateDescription();
if (this.broadcasting) {
return;
}
this.broadcasting = true;
LinkedHashSet<OnCheckedStateChangedListener> linkedHashSet = this.onCheckedStateChangedListeners;
if (linkedHashSet != null) {
Iterator<OnCheckedStateChangedListener> it = linkedHashSet.iterator();
while (it.hasNext()) {
it.next().onCheckedStateChangedListener(this, this.checkedState);
}
}
if (this.checkedState != 2 && (onCheckedChangeListener = this.onCheckedChangeListener) != null) {
onCheckedChangeListener.onCheckedChanged(this, isChecked());
}
AutofillManager autofillManager = (AutofillManager) getContext().getSystemService(AutofillManager.class);
if (autofillManager != null) {
autofillManager.notifyValueChanged(this);
}
this.broadcasting = false;
}
}
public void addOnCheckedStateChangedListener(OnCheckedStateChangedListener onCheckedStateChangedListener) {
this.onCheckedStateChangedListeners.add(onCheckedStateChangedListener);
}
public void removeOnCheckedStateChangedListener(OnCheckedStateChangedListener onCheckedStateChangedListener) {
this.onCheckedStateChangedListeners.remove(onCheckedStateChangedListener);
}
public void clearOnCheckedStateChangedListeners() {
this.onCheckedStateChangedListeners.clear();
}
public void setErrorShown(boolean z) {
if (this.errorShown == z) {
return;
}
this.errorShown = z;
refreshDrawableState();
Iterator<OnErrorChangedListener> it = this.onErrorChangedListeners.iterator();
while (it.hasNext()) {
it.next().onErrorChanged(this, this.errorShown);
}
}
public void setErrorAccessibilityLabelResource(int i) {
setErrorAccessibilityLabel(i != 0 ? getResources().getText(i) : null);
}
public void addOnErrorChangedListener(OnErrorChangedListener onErrorChangedListener) {
this.onErrorChangedListeners.add(onErrorChangedListener);
}
public void removeOnErrorChangedListener(OnErrorChangedListener onErrorChangedListener) {
this.onErrorChangedListeners.remove(onErrorChangedListener);
}
public void clearOnErrorChangedListeners() {
this.onErrorChangedListeners.clear();
}
@Override // androidx.appcompat.widget.AppCompatCheckBox, android.widget.CompoundButton
public void setButtonDrawable(int i) {
setButtonDrawable(AppCompatResources.getDrawable(getContext(), i));
}
@Override // androidx.appcompat.widget.AppCompatCheckBox, android.widget.CompoundButton
public void setButtonDrawable(Drawable drawable) {
this.buttonDrawable = drawable;
this.usingMaterialButtonDrawable = false;
refreshButtonDrawable();
}
@Override // android.widget.CompoundButton
public void setButtonTintList(ColorStateList colorStateList) {
if (this.buttonTintList == colorStateList) {
return;
}
this.buttonTintList = colorStateList;
refreshButtonDrawable();
}
@Override // android.widget.CompoundButton
public void setButtonTintMode(PorterDuff.Mode mode) {
setSupportButtonTintMode(mode);
refreshButtonDrawable();
}
public void setButtonIconDrawableResource(int i) {
setButtonIconDrawable(AppCompatResources.getDrawable(getContext(), i));
}
public void setButtonIconDrawable(Drawable drawable) {
this.buttonIconDrawable = drawable;
refreshButtonDrawable();
}
public void setButtonIconTintList(ColorStateList colorStateList) {
if (this.buttonIconTintList == colorStateList) {
return;
}
this.buttonIconTintList = colorStateList;
refreshButtonDrawable();
}
public void setButtonIconTintMode(PorterDuff.Mode mode) {
if (this.buttonIconTintMode == mode) {
return;
}
this.buttonIconTintMode = mode;
refreshButtonDrawable();
}
public void setUseMaterialThemeColors(boolean z) {
this.useMaterialThemeColors = z;
if (z) {
CompoundButtonCompat.setButtonTintList(this, getMaterialThemeColorsTintList());
} else {
CompoundButtonCompat.setButtonTintList(this, null);
}
}
private void refreshButtonDrawable() {
this.buttonDrawable = DrawableUtils.createTintableMutatedDrawableIfNeeded(this.buttonDrawable, this.buttonTintList, CompoundButtonCompat.getButtonTintMode(this));
this.buttonIconDrawable = DrawableUtils.createTintableMutatedDrawableIfNeeded(this.buttonIconDrawable, this.buttonIconTintList, this.buttonIconTintMode);
setUpDefaultButtonDrawableAnimationIfNeeded();
updateButtonTints();
super.setButtonDrawable(DrawableUtils.compositeTwoLayeredDrawable(this.buttonDrawable, this.buttonIconDrawable));
refreshDrawableState();
}
private void setUpDefaultButtonDrawableAnimationIfNeeded() {
if (this.usingMaterialButtonDrawable) {
AnimatedVectorDrawableCompat animatedVectorDrawableCompat = this.transitionToUnchecked;
if (animatedVectorDrawableCompat != null) {
animatedVectorDrawableCompat.unregisterAnimationCallback(this.transitionToUncheckedCallback);
this.transitionToUnchecked.registerAnimationCallback(this.transitionToUncheckedCallback);
}
Drawable drawable = this.buttonDrawable;
if (!(drawable instanceof AnimatedStateListDrawable) || this.transitionToUnchecked == null) {
return;
}
((AnimatedStateListDrawable) drawable).addTransition(R.id.checked, R.id.unchecked, this.transitionToUnchecked, false);
((AnimatedStateListDrawable) this.buttonDrawable).addTransition(R.id.indeterminate, R.id.unchecked, this.transitionToUnchecked, false);
}
}
private void updateButtonTints() {
ColorStateList colorStateList;
ColorStateList colorStateList2;
Drawable drawable = this.buttonDrawable;
if (drawable != null && (colorStateList2 = this.buttonTintList) != null) {
DrawableCompat.setTintList(drawable, colorStateList2);
}
Drawable drawable2 = this.buttonIconDrawable;
if (drawable2 == null || (colorStateList = this.buttonIconTintList) == null) {
return;
}
DrawableCompat.setTintList(drawable2, colorStateList);
}
@Override // android.widget.CompoundButton, android.view.View
public void setStateDescription(CharSequence charSequence) {
this.customStateDescription = charSequence;
if (charSequence == null) {
setDefaultStateDescription();
} else {
super.setStateDescription(charSequence);
}
}
private void setDefaultStateDescription() {
if (this.customStateDescription == null) {
super.setStateDescription(getButtonStateDescription());
}
}
private String getButtonStateDescription() {
int i = this.checkedState;
if (i == 1) {
return getResources().getString(R.string.mtrl_checkbox_state_description_checked);
}
if (i == 0) {
return getResources().getString(R.string.mtrl_checkbox_state_description_unchecked);
}
return getResources().getString(R.string.mtrl_checkbox_state_description_indeterminate);
}
private ColorStateList getSuperButtonTintList() {
ColorStateList colorStateList = this.buttonTintList;
if (colorStateList != null) {
return colorStateList;
}
if (super.getButtonTintList() != null) {
return super.getButtonTintList();
}
return getSupportButtonTintList();
}
private boolean isButtonDrawableLegacy(TintTypedArray tintTypedArray) {
return tintTypedArray.getResourceId(R.styleable.MaterialCheckBox_android_button, 0) == FRAMEWORK_BUTTON_DRAWABLE_RES_ID && tintTypedArray.getResourceId(R.styleable.MaterialCheckBox_buttonCompat, 0) == 0;
}
private ColorStateList getMaterialThemeColorsTintList() {
if (this.materialThemeColorsTintList == null) {
int[][] iArr = CHECKBOX_STATES;
int[] iArr2 = new int[iArr.length];
int color = MaterialColors.getColor(this, R.attr.colorControlActivated);
int color2 = MaterialColors.getColor(this, R.attr.colorError);
int color3 = MaterialColors.getColor(this, R.attr.colorSurface);
int color4 = MaterialColors.getColor(this, R.attr.colorOnSurface);
iArr2[0] = MaterialColors.layer(color3, color2, 1.0f);
iArr2[1] = MaterialColors.layer(color3, color, 1.0f);
iArr2[2] = MaterialColors.layer(color3, color4, 0.54f);
iArr2[3] = MaterialColors.layer(color3, color4, 0.38f);
iArr2[4] = MaterialColors.layer(color3, color4, 0.38f);
this.materialThemeColorsTintList = new ColorStateList(iArr, iArr2);
}
return this.materialThemeColorsTintList;
}
@Override // android.widget.CompoundButton, android.widget.TextView, android.view.View
public Parcelable onSaveInstanceState() {
SavedState savedState = new SavedState(super.onSaveInstanceState());
savedState.checkedState = getCheckedState();
return savedState;
}
@Override // android.widget.CompoundButton, android.widget.TextView, android.view.View
public void onRestoreInstanceState(Parcelable parcelable) {
if (!(parcelable instanceof SavedState)) {
super.onRestoreInstanceState(parcelable);
return;
}
SavedState savedState = (SavedState) parcelable;
super.onRestoreInstanceState(savedState.getSuperState());
setCheckedState(savedState.checkedState);
}
/* JADX INFO: Access modifiers changed from: package-private */
/* loaded from: classes2.dex */
public static class SavedState extends View.BaseSavedState {
public static final Parcelable.Creator<SavedState> CREATOR = new Parcelable.Creator<SavedState>() { // from class: com.google.android.material.checkbox.MaterialCheckBox.SavedState.1
/* JADX WARN: Can't rename method to resolve collision */
@Override // android.os.Parcelable.Creator
public SavedState createFromParcel(Parcel parcel) {
return new SavedState(parcel);
}
/* JADX WARN: Can't rename method to resolve collision */
@Override // android.os.Parcelable.Creator
public SavedState[] newArray(int i) {
return new SavedState[i];
}
};
int checkedState;
private String getCheckedStateString() {
int i = this.checkedState;
return i != 1 ? i != 2 ? "unchecked" : "indeterminate" : "checked";
}
SavedState(Parcelable parcelable) {
super(parcelable);
}
private SavedState(Parcel parcel) {
super(parcel);
this.checkedState = ((Integer) parcel.readValue(getClass().getClassLoader())).intValue();
}
@Override // android.view.View.BaseSavedState, android.view.AbsSavedState, android.os.Parcelable
public void writeToParcel(Parcel parcel, int i) {
super.writeToParcel(parcel, i);
parcel.writeValue(Integer.valueOf(this.checkedState));
}
public String toString() {
return "MaterialCheckBox.SavedState{" + Integer.toHexString(System.identityHashCode(this)) + " CheckedState=" + getCheckedStateString() + "}";
}
}
}