Rabbit-R1/switch port/java/sources/androidx/appcompat/widget/SwitchCompat.java
2024-05-21 17:08:36 -04:00

1143 lines
42 KiB
Java

package androidx.appcompat.widget;
import android.R;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.content.res.ColorStateList;
import android.graphics.Canvas;
import android.graphics.PorterDuff;
import android.graphics.Rect;
import android.graphics.Region;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.text.InputFilter;
import android.text.Layout;
import android.text.StaticLayout;
import android.text.TextPaint;
import android.text.TextUtils;
import android.text.method.TransformationMethod;
import android.util.AttributeSet;
import android.util.Property;
import android.view.ActionMode;
import android.view.MotionEvent;
import android.view.VelocityTracker;
import android.view.ViewConfiguration;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.CompoundButton;
import androidx.appcompat.content.res.AppCompatResources;
import androidx.appcompat.text.AllCapsTransformationMethod;
import androidx.core.graphics.drawable.DrawableCompat;
import androidx.core.view.ViewCompat;
import androidx.core.widget.TextViewCompat;
import androidx.emoji2.text.EmojiCompat;
import java.lang.ref.Reference;
import java.lang.ref.WeakReference;
/* loaded from: classes.dex */
public class SwitchCompat extends CompoundButton implements EmojiCompatConfigurationView {
private static final String ACCESSIBILITY_EVENT_CLASS_NAME = "android.widget.Switch";
private static final int MONOSPACE = 3;
private static final int SANS = 1;
private static final int SERIF = 2;
private static final int THUMB_ANIMATION_DURATION = 250;
private static final int TOUCH_MODE_DOWN = 1;
private static final int TOUCH_MODE_DRAGGING = 2;
private static final int TOUCH_MODE_IDLE = 0;
private AppCompatEmojiTextHelper mAppCompatEmojiTextHelper;
private EmojiCompatInitCallback mEmojiCompatInitCallback;
private boolean mEnforceSwitchWidth;
private boolean mHasThumbTint;
private boolean mHasThumbTintMode;
private boolean mHasTrackTint;
private boolean mHasTrackTintMode;
private int mMinFlingVelocity;
private Layout mOffLayout;
private Layout mOnLayout;
ObjectAnimator mPositionAnimator;
private boolean mShowText;
private boolean mSplitTrack;
private int mSwitchBottom;
private int mSwitchHeight;
private int mSwitchLeft;
private int mSwitchMinWidth;
private int mSwitchPadding;
private int mSwitchRight;
private int mSwitchTop;
private TransformationMethod mSwitchTransformationMethod;
private int mSwitchWidth;
private final Rect mTempRect;
private ColorStateList mTextColors;
private final AppCompatTextHelper mTextHelper;
private CharSequence mTextOff;
private CharSequence mTextOffTransformed;
private CharSequence mTextOn;
private CharSequence mTextOnTransformed;
private final TextPaint mTextPaint;
private Drawable mThumbDrawable;
float mThumbPosition;
private int mThumbTextPadding;
private ColorStateList mThumbTintList;
private PorterDuff.Mode mThumbTintMode;
private int mThumbWidth;
private int mTouchMode;
private int mTouchSlop;
private float mTouchX;
private float mTouchY;
private Drawable mTrackDrawable;
private ColorStateList mTrackTintList;
private PorterDuff.Mode mTrackTintMode;
private VelocityTracker mVelocityTracker;
private static final Property<SwitchCompat, Float> THUMB_POS = new Property<SwitchCompat, Float>(Float.class, "thumbPos") { // from class: androidx.appcompat.widget.SwitchCompat.1
@Override // android.util.Property
public Float get(SwitchCompat switchCompat) {
return Float.valueOf(switchCompat.mThumbPosition);
}
@Override // android.util.Property
public void set(SwitchCompat switchCompat, Float f) {
switchCompat.setThumbPosition(f.floatValue());
}
};
private static final int[] CHECKED_STATE_SET = {R.attr.state_checked};
private static float constrain(float f, float f2, float f3) {
return f < f2 ? f2 : f > f3 ? f3 : f;
}
private boolean getTargetCheckedState() {
return this.mThumbPosition > 0.5f;
}
public boolean getShowText() {
return this.mShowText;
}
public boolean getSplitTrack() {
return this.mSplitTrack;
}
public int getSwitchMinWidth() {
return this.mSwitchMinWidth;
}
public int getSwitchPadding() {
return this.mSwitchPadding;
}
public CharSequence getTextOff() {
return this.mTextOff;
}
public CharSequence getTextOn() {
return this.mTextOn;
}
public Drawable getThumbDrawable() {
return this.mThumbDrawable;
}
/* JADX INFO: Access modifiers changed from: protected */
public final float getThumbPosition() {
return this.mThumbPosition;
}
public int getThumbTextPadding() {
return this.mThumbTextPadding;
}
public ColorStateList getThumbTintList() {
return this.mThumbTintList;
}
public PorterDuff.Mode getThumbTintMode() {
return this.mThumbTintMode;
}
public Drawable getTrackDrawable() {
return this.mTrackDrawable;
}
public ColorStateList getTrackTintList() {
return this.mTrackTintList;
}
public PorterDuff.Mode getTrackTintMode() {
return this.mTrackTintMode;
}
public SwitchCompat(Context context) {
this(context, null);
}
public SwitchCompat(Context context, AttributeSet attributeSet) {
this(context, attributeSet, androidx.appcompat.R.attr.switchStyle);
}
public SwitchCompat(Context context, AttributeSet attributeSet, int i) {
super(context, attributeSet, i);
this.mThumbTintList = null;
this.mThumbTintMode = null;
this.mHasThumbTint = false;
this.mHasThumbTintMode = false;
this.mTrackTintList = null;
this.mTrackTintMode = null;
this.mHasTrackTint = false;
this.mHasTrackTintMode = false;
this.mVelocityTracker = VelocityTracker.obtain();
this.mEnforceSwitchWidth = true;
this.mTempRect = new Rect();
ThemeUtils.checkAppCompatTheme(this, getContext());
TextPaint textPaint = new TextPaint(1);
this.mTextPaint = textPaint;
textPaint.density = getResources().getDisplayMetrics().density;
TintTypedArray obtainStyledAttributes = TintTypedArray.obtainStyledAttributes(context, attributeSet, androidx.appcompat.R.styleable.SwitchCompat, i, 0);
ViewCompat.saveAttributeDataForStyleable(this, context, androidx.appcompat.R.styleable.SwitchCompat, attributeSet, obtainStyledAttributes.getWrappedTypeArray(), i, 0);
Drawable drawable = obtainStyledAttributes.getDrawable(androidx.appcompat.R.styleable.SwitchCompat_android_thumb);
this.mThumbDrawable = drawable;
if (drawable != null) {
drawable.setCallback(this);
}
Drawable drawable2 = obtainStyledAttributes.getDrawable(androidx.appcompat.R.styleable.SwitchCompat_track);
this.mTrackDrawable = drawable2;
if (drawable2 != null) {
drawable2.setCallback(this);
}
setTextOnInternal(obtainStyledAttributes.getText(androidx.appcompat.R.styleable.SwitchCompat_android_textOn));
setTextOffInternal(obtainStyledAttributes.getText(androidx.appcompat.R.styleable.SwitchCompat_android_textOff));
this.mShowText = obtainStyledAttributes.getBoolean(androidx.appcompat.R.styleable.SwitchCompat_showText, true);
this.mThumbTextPadding = obtainStyledAttributes.getDimensionPixelSize(androidx.appcompat.R.styleable.SwitchCompat_thumbTextPadding, 0);
this.mSwitchMinWidth = obtainStyledAttributes.getDimensionPixelSize(androidx.appcompat.R.styleable.SwitchCompat_switchMinWidth, 0);
this.mSwitchPadding = obtainStyledAttributes.getDimensionPixelSize(androidx.appcompat.R.styleable.SwitchCompat_switchPadding, 0);
this.mSplitTrack = obtainStyledAttributes.getBoolean(androidx.appcompat.R.styleable.SwitchCompat_splitTrack, false);
ColorStateList colorStateList = obtainStyledAttributes.getColorStateList(androidx.appcompat.R.styleable.SwitchCompat_thumbTint);
if (colorStateList != null) {
this.mThumbTintList = colorStateList;
this.mHasThumbTint = true;
}
PorterDuff.Mode parseTintMode = DrawableUtils.parseTintMode(obtainStyledAttributes.getInt(androidx.appcompat.R.styleable.SwitchCompat_thumbTintMode, -1), null);
if (this.mThumbTintMode != parseTintMode) {
this.mThumbTintMode = parseTintMode;
this.mHasThumbTintMode = true;
}
if (this.mHasThumbTint || this.mHasThumbTintMode) {
applyThumbTint();
}
ColorStateList colorStateList2 = obtainStyledAttributes.getColorStateList(androidx.appcompat.R.styleable.SwitchCompat_trackTint);
if (colorStateList2 != null) {
this.mTrackTintList = colorStateList2;
this.mHasTrackTint = true;
}
PorterDuff.Mode parseTintMode2 = DrawableUtils.parseTintMode(obtainStyledAttributes.getInt(androidx.appcompat.R.styleable.SwitchCompat_trackTintMode, -1), null);
if (this.mTrackTintMode != parseTintMode2) {
this.mTrackTintMode = parseTintMode2;
this.mHasTrackTintMode = true;
}
if (this.mHasTrackTint || this.mHasTrackTintMode) {
applyTrackTint();
}
int resourceId = obtainStyledAttributes.getResourceId(androidx.appcompat.R.styleable.SwitchCompat_switchTextAppearance, 0);
if (resourceId != 0) {
setSwitchTextAppearance(context, resourceId);
}
AppCompatTextHelper appCompatTextHelper = new AppCompatTextHelper(this);
this.mTextHelper = appCompatTextHelper;
appCompatTextHelper.loadFromAttributes(attributeSet, i);
obtainStyledAttributes.recycle();
ViewConfiguration viewConfiguration = ViewConfiguration.get(context);
this.mTouchSlop = viewConfiguration.getScaledTouchSlop();
this.mMinFlingVelocity = viewConfiguration.getScaledMinimumFlingVelocity();
getEmojiTextViewHelper().loadFromAttributes(attributeSet, i);
refreshDrawableState();
setChecked(isChecked());
}
public void setSwitchTextAppearance(Context context, int i) {
TintTypedArray obtainStyledAttributes = TintTypedArray.obtainStyledAttributes(context, i, androidx.appcompat.R.styleable.TextAppearance);
ColorStateList colorStateList = obtainStyledAttributes.getColorStateList(androidx.appcompat.R.styleable.TextAppearance_android_textColor);
if (colorStateList != null) {
this.mTextColors = colorStateList;
} else {
this.mTextColors = getTextColors();
}
int dimensionPixelSize = obtainStyledAttributes.getDimensionPixelSize(androidx.appcompat.R.styleable.TextAppearance_android_textSize, 0);
if (dimensionPixelSize != 0) {
float f = dimensionPixelSize;
if (f != this.mTextPaint.getTextSize()) {
this.mTextPaint.setTextSize(f);
requestLayout();
}
}
setSwitchTypefaceByIndex(obtainStyledAttributes.getInt(androidx.appcompat.R.styleable.TextAppearance_android_typeface, -1), obtainStyledAttributes.getInt(androidx.appcompat.R.styleable.TextAppearance_android_textStyle, -1));
if (obtainStyledAttributes.getBoolean(androidx.appcompat.R.styleable.TextAppearance_textAllCaps, false)) {
this.mSwitchTransformationMethod = new AllCapsTransformationMethod(getContext());
} else {
this.mSwitchTransformationMethod = null;
}
setTextOnInternal(this.mTextOn);
setTextOffInternal(this.mTextOff);
obtainStyledAttributes.recycle();
}
private void setSwitchTypefaceByIndex(int i, int i2) {
Typeface typeface;
if (i == 1) {
typeface = Typeface.SANS_SERIF;
} else if (i == 2) {
typeface = Typeface.SERIF;
} else {
typeface = i != 3 ? null : Typeface.MONOSPACE;
}
setSwitchTypeface(typeface, i2);
}
public void setSwitchTypeface(Typeface typeface, int i) {
Typeface create;
if (i > 0) {
if (typeface == null) {
create = Typeface.defaultFromStyle(i);
} else {
create = Typeface.create(typeface, i);
}
setSwitchTypeface(create);
int i2 = (~(create != null ? create.getStyle() : 0)) & i;
this.mTextPaint.setFakeBoldText((i2 & 1) != 0);
this.mTextPaint.setTextSkewX((i2 & 2) != 0 ? -0.25f : 0.0f);
return;
}
this.mTextPaint.setFakeBoldText(false);
this.mTextPaint.setTextSkewX(0.0f);
setSwitchTypeface(typeface);
}
public void setSwitchTypeface(Typeface typeface) {
if ((this.mTextPaint.getTypeface() == null || this.mTextPaint.getTypeface().equals(typeface)) && (this.mTextPaint.getTypeface() != null || typeface == null)) {
return;
}
this.mTextPaint.setTypeface(typeface);
requestLayout();
invalidate();
}
public void setSwitchPadding(int i) {
this.mSwitchPadding = i;
requestLayout();
}
public void setSwitchMinWidth(int i) {
this.mSwitchMinWidth = i;
requestLayout();
}
public void setThumbTextPadding(int i) {
this.mThumbTextPadding = i;
requestLayout();
}
public void setTrackDrawable(Drawable drawable) {
Drawable drawable2 = this.mTrackDrawable;
if (drawable2 != null) {
drawable2.setCallback(null);
}
this.mTrackDrawable = drawable;
if (drawable != null) {
drawable.setCallback(this);
}
requestLayout();
}
public void setTrackResource(int i) {
setTrackDrawable(AppCompatResources.getDrawable(getContext(), i));
}
public void setTrackTintList(ColorStateList colorStateList) {
this.mTrackTintList = colorStateList;
this.mHasTrackTint = true;
applyTrackTint();
}
public void setTrackTintMode(PorterDuff.Mode mode) {
this.mTrackTintMode = mode;
this.mHasTrackTintMode = true;
applyTrackTint();
}
private void applyTrackTint() {
Drawable drawable = this.mTrackDrawable;
if (drawable != null) {
if (this.mHasTrackTint || this.mHasTrackTintMode) {
Drawable mutate = DrawableCompat.wrap(drawable).mutate();
this.mTrackDrawable = mutate;
if (this.mHasTrackTint) {
DrawableCompat.setTintList(mutate, this.mTrackTintList);
}
if (this.mHasTrackTintMode) {
DrawableCompat.setTintMode(this.mTrackDrawable, this.mTrackTintMode);
}
if (this.mTrackDrawable.isStateful()) {
this.mTrackDrawable.setState(getDrawableState());
}
}
}
}
public void setThumbDrawable(Drawable drawable) {
Drawable drawable2 = this.mThumbDrawable;
if (drawable2 != null) {
drawable2.setCallback(null);
}
this.mThumbDrawable = drawable;
if (drawable != null) {
drawable.setCallback(this);
}
requestLayout();
}
public void setThumbResource(int i) {
setThumbDrawable(AppCompatResources.getDrawable(getContext(), i));
}
public void setThumbTintList(ColorStateList colorStateList) {
this.mThumbTintList = colorStateList;
this.mHasThumbTint = true;
applyThumbTint();
}
public void setThumbTintMode(PorterDuff.Mode mode) {
this.mThumbTintMode = mode;
this.mHasThumbTintMode = true;
applyThumbTint();
}
private void applyThumbTint() {
Drawable drawable = this.mThumbDrawable;
if (drawable != null) {
if (this.mHasThumbTint || this.mHasThumbTintMode) {
Drawable mutate = DrawableCompat.wrap(drawable).mutate();
this.mThumbDrawable = mutate;
if (this.mHasThumbTint) {
DrawableCompat.setTintList(mutate, this.mThumbTintList);
}
if (this.mHasThumbTintMode) {
DrawableCompat.setTintMode(this.mThumbDrawable, this.mThumbTintMode);
}
if (this.mThumbDrawable.isStateful()) {
this.mThumbDrawable.setState(getDrawableState());
}
}
}
}
public void setSplitTrack(boolean z) {
this.mSplitTrack = z;
invalidate();
}
private void setTextOnInternal(CharSequence charSequence) {
this.mTextOn = charSequence;
this.mTextOnTransformed = doTransformForOnOffText(charSequence);
this.mOnLayout = null;
if (this.mShowText) {
setupEmojiCompatLoadCallback();
}
}
public void setTextOn(CharSequence charSequence) {
setTextOnInternal(charSequence);
requestLayout();
if (isChecked()) {
setOnStateDescriptionOnRAndAbove();
}
}
private void setTextOffInternal(CharSequence charSequence) {
this.mTextOff = charSequence;
this.mTextOffTransformed = doTransformForOnOffText(charSequence);
this.mOffLayout = null;
if (this.mShowText) {
setupEmojiCompatLoadCallback();
}
}
public void setTextOff(CharSequence charSequence) {
setTextOffInternal(charSequence);
requestLayout();
if (isChecked()) {
return;
}
setOffStateDescriptionOnRAndAbove();
}
private CharSequence doTransformForOnOffText(CharSequence charSequence) {
TransformationMethod wrapTransformationMethod = getEmojiTextViewHelper().wrapTransformationMethod(this.mSwitchTransformationMethod);
return wrapTransformationMethod != null ? wrapTransformationMethod.getTransformation(charSequence, this) : charSequence;
}
public void setShowText(boolean z) {
if (this.mShowText != z) {
this.mShowText = z;
requestLayout();
if (z) {
setupEmojiCompatLoadCallback();
}
}
}
@Override // android.widget.TextView, android.view.View
public void onMeasure(int i, int i2) {
int i3;
int i4;
if (this.mShowText) {
if (this.mOnLayout == null) {
this.mOnLayout = makeLayout(this.mTextOnTransformed);
}
if (this.mOffLayout == null) {
this.mOffLayout = makeLayout(this.mTextOffTransformed);
}
}
Rect rect = this.mTempRect;
Drawable drawable = this.mThumbDrawable;
int i5 = 0;
if (drawable != null) {
drawable.getPadding(rect);
i3 = (this.mThumbDrawable.getIntrinsicWidth() - rect.left) - rect.right;
i4 = this.mThumbDrawable.getIntrinsicHeight();
} else {
i3 = 0;
i4 = 0;
}
this.mThumbWidth = Math.max(this.mShowText ? Math.max(this.mOnLayout.getWidth(), this.mOffLayout.getWidth()) + (this.mThumbTextPadding * 2) : 0, i3);
Drawable drawable2 = this.mTrackDrawable;
if (drawable2 != null) {
drawable2.getPadding(rect);
i5 = this.mTrackDrawable.getIntrinsicHeight();
} else {
rect.setEmpty();
}
int i6 = rect.left;
int i7 = rect.right;
Drawable drawable3 = this.mThumbDrawable;
if (drawable3 != null) {
Rect opticalBounds = DrawableUtils.getOpticalBounds(drawable3);
i6 = Math.max(i6, opticalBounds.left);
i7 = Math.max(i7, opticalBounds.right);
}
int max = this.mEnforceSwitchWidth ? Math.max(this.mSwitchMinWidth, (this.mThumbWidth * 2) + i6 + i7) : this.mSwitchMinWidth;
int max2 = Math.max(i5, i4);
this.mSwitchWidth = max;
this.mSwitchHeight = max2;
super.onMeasure(i, i2);
if (getMeasuredHeight() < max2) {
setMeasuredDimension(getMeasuredWidthAndState(), max2);
}
}
@Override // android.view.View
public void onPopulateAccessibilityEvent(AccessibilityEvent accessibilityEvent) {
super.onPopulateAccessibilityEvent(accessibilityEvent);
CharSequence charSequence = isChecked() ? this.mTextOn : this.mTextOff;
if (charSequence != null) {
accessibilityEvent.getText().add(charSequence);
}
}
private Layout makeLayout(CharSequence charSequence) {
return new StaticLayout(charSequence, this.mTextPaint, charSequence != null ? (int) Math.ceil(Layout.getDesiredWidth(charSequence, r2)) : 0, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, true);
}
private boolean hitThumb(float f, float f2) {
if (this.mThumbDrawable == null) {
return false;
}
int thumbOffset = getThumbOffset();
this.mThumbDrawable.getPadding(this.mTempRect);
int i = this.mSwitchTop;
int i2 = this.mTouchSlop;
int i3 = i - i2;
int i4 = (this.mSwitchLeft + thumbOffset) - i2;
int i5 = this.mThumbWidth + i4 + this.mTempRect.left + this.mTempRect.right;
int i6 = this.mTouchSlop;
return f > ((float) i4) && f < ((float) (i5 + i6)) && f2 > ((float) i3) && f2 < ((float) (this.mSwitchBottom + i6));
}
/* JADX WARN: Code restructure failed: missing block: B:7:0x0012, code lost:
if (r0 != 3) goto L44;
*/
@Override // android.widget.TextView, android.view.View
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
public boolean onTouchEvent(android.view.MotionEvent r7) {
/*
r6 = this;
android.view.VelocityTracker r0 = r6.mVelocityTracker
r0.addMovement(r7)
int r0 = r7.getActionMasked()
r1 = 1
if (r0 == 0) goto L9d
r2 = 2
if (r0 == r1) goto L89
if (r0 == r2) goto L16
r3 = 3
if (r0 == r3) goto L89
goto Lb7
L16:
int r0 = r6.mTouchMode
if (r0 == r1) goto L55
if (r0 == r2) goto L1e
goto Lb7
L1e:
float r7 = r7.getX()
int r0 = r6.getThumbScrollRange()
float r2 = r6.mTouchX
float r2 = r7 - r2
r3 = 1065353216(0x3f800000, float:1.0)
r4 = 0
if (r0 == 0) goto L32
float r0 = (float) r0
float r2 = r2 / r0
goto L3b
L32:
int r0 = (r2 > r4 ? 1 : (r2 == r4 ? 0 : -1))
if (r0 <= 0) goto L38
r2 = r3
goto L3b
L38:
r0 = -1082130432(0xffffffffbf800000, float:-1.0)
r2 = r0
L3b:
boolean r0 = androidx.appcompat.widget.ViewUtils.isLayoutRtl(r6)
if (r0 == 0) goto L42
float r2 = -r2
L42:
float r0 = r6.mThumbPosition
float r0 = r0 + r2
float r0 = constrain(r0, r4, r3)
float r2 = r6.mThumbPosition
int r2 = (r0 > r2 ? 1 : (r0 == r2 ? 0 : -1))
if (r2 == 0) goto L54
r6.mTouchX = r7
r6.setThumbPosition(r0)
L54:
return r1
L55:
float r0 = r7.getX()
float r3 = r7.getY()
float r4 = r6.mTouchX
float r4 = r0 - r4
float r4 = java.lang.Math.abs(r4)
int r5 = r6.mTouchSlop
float r5 = (float) r5
int r4 = (r4 > r5 ? 1 : (r4 == r5 ? 0 : -1))
if (r4 > 0) goto L7b
float r4 = r6.mTouchY
float r4 = r3 - r4
float r4 = java.lang.Math.abs(r4)
int r5 = r6.mTouchSlop
float r5 = (float) r5
int r4 = (r4 > r5 ? 1 : (r4 == r5 ? 0 : -1))
if (r4 <= 0) goto Lb7
L7b:
r6.mTouchMode = r2
android.view.ViewParent r7 = r6.getParent()
r7.requestDisallowInterceptTouchEvent(r1)
r6.mTouchX = r0
r6.mTouchY = r3
return r1
L89:
int r0 = r6.mTouchMode
if (r0 != r2) goto L94
r6.stopDrag(r7)
super.onTouchEvent(r7)
return r1
L94:
r0 = 0
r6.mTouchMode = r0
android.view.VelocityTracker r0 = r6.mVelocityTracker
r0.clear()
goto Lb7
L9d:
float r0 = r7.getX()
float r2 = r7.getY()
boolean r3 = r6.isEnabled()
if (r3 == 0) goto Lb7
boolean r3 = r6.hitThumb(r0, r2)
if (r3 == 0) goto Lb7
r6.mTouchMode = r1
r6.mTouchX = r0
r6.mTouchY = r2
Lb7:
boolean r6 = super.onTouchEvent(r7)
return r6
*/
throw new UnsupportedOperationException("Method not decompiled: androidx.appcompat.widget.SwitchCompat.onTouchEvent(android.view.MotionEvent):boolean");
}
private void cancelSuperTouch(MotionEvent motionEvent) {
MotionEvent obtain = MotionEvent.obtain(motionEvent);
obtain.setAction(3);
super.onTouchEvent(obtain);
obtain.recycle();
}
private void stopDrag(MotionEvent motionEvent) {
this.mTouchMode = 0;
boolean z = true;
boolean z2 = motionEvent.getAction() == 1 && isEnabled();
boolean isChecked = isChecked();
if (z2) {
this.mVelocityTracker.computeCurrentVelocity(1000);
float xVelocity = this.mVelocityTracker.getXVelocity();
if (Math.abs(xVelocity) > this.mMinFlingVelocity) {
if (!ViewUtils.isLayoutRtl(this) ? xVelocity <= 0.0f : xVelocity >= 0.0f) {
z = false;
}
} else {
z = getTargetCheckedState();
}
} else {
z = isChecked;
}
if (z != isChecked) {
playSoundEffect(0);
}
setChecked(z);
cancelSuperTouch(motionEvent);
}
private void animateThumbToCheckedState(boolean z) {
ObjectAnimator ofFloat = ObjectAnimator.ofFloat(this, THUMB_POS, z ? 1.0f : 0.0f);
this.mPositionAnimator = ofFloat;
ofFloat.setDuration(250L);
Api18Impl.setAutoCancel(this.mPositionAnimator, true);
this.mPositionAnimator.start();
}
private void cancelPositionAnimator() {
ObjectAnimator objectAnimator = this.mPositionAnimator;
if (objectAnimator != null) {
objectAnimator.cancel();
}
}
void setThumbPosition(float f) {
this.mThumbPosition = f;
invalidate();
}
@Override // android.widget.CompoundButton, android.widget.Checkable
public void toggle() {
setChecked(!isChecked());
}
@Override // android.widget.CompoundButton, android.widget.Checkable
public void setChecked(boolean z) {
super.setChecked(z);
boolean isChecked = isChecked();
if (isChecked) {
setOnStateDescriptionOnRAndAbove();
} else {
setOffStateDescriptionOnRAndAbove();
}
if (getWindowToken() != null && ViewCompat.isLaidOut(this)) {
animateThumbToCheckedState(isChecked);
} else {
cancelPositionAnimator();
setThumbPosition(isChecked ? 1.0f : 0.0f);
}
}
@Override // android.widget.TextView, android.view.View
protected void onLayout(boolean z, int i, int i2, int i3, int i4) {
int i5;
int width;
int i6;
int i7;
int i8;
int i9;
super.onLayout(z, i, i2, i3, i4);
int i10 = 0;
if (this.mThumbDrawable != null) {
Rect rect = this.mTempRect;
Drawable drawable = this.mTrackDrawable;
if (drawable != null) {
drawable.getPadding(rect);
} else {
rect.setEmpty();
}
Rect opticalBounds = DrawableUtils.getOpticalBounds(this.mThumbDrawable);
i5 = Math.max(0, opticalBounds.left - rect.left);
i10 = Math.max(0, opticalBounds.right - rect.right);
} else {
i5 = 0;
}
if (ViewUtils.isLayoutRtl(this)) {
i6 = getPaddingLeft() + i5;
width = ((this.mSwitchWidth + i6) - i5) - i10;
} else {
width = (getWidth() - getPaddingRight()) - i10;
i6 = (width - this.mSwitchWidth) + i5 + i10;
}
int gravity = getGravity() & 112;
if (gravity == 16) {
int paddingTop = ((getPaddingTop() + getHeight()) - getPaddingBottom()) / 2;
i7 = this.mSwitchHeight;
i8 = paddingTop - (i7 / 2);
} else if (gravity != 80) {
i8 = getPaddingTop();
i7 = this.mSwitchHeight;
} else {
i9 = getHeight() - getPaddingBottom();
i8 = i9 - this.mSwitchHeight;
this.mSwitchLeft = i6;
this.mSwitchTop = i8;
this.mSwitchBottom = i9;
this.mSwitchRight = width;
}
i9 = i7 + i8;
this.mSwitchLeft = i6;
this.mSwitchTop = i8;
this.mSwitchBottom = i9;
this.mSwitchRight = width;
}
@Override // android.view.View
public void draw(Canvas canvas) {
Rect rect;
int i;
int i2;
Rect rect2 = this.mTempRect;
int i3 = this.mSwitchLeft;
int i4 = this.mSwitchTop;
int i5 = this.mSwitchRight;
int i6 = this.mSwitchBottom;
int thumbOffset = getThumbOffset() + i3;
Drawable drawable = this.mThumbDrawable;
if (drawable != null) {
rect = DrawableUtils.getOpticalBounds(drawable);
} else {
rect = DrawableUtils.INSETS_NONE;
}
Drawable drawable2 = this.mTrackDrawable;
if (drawable2 != null) {
drawable2.getPadding(rect2);
thumbOffset += rect2.left;
if (rect != null) {
if (rect.left > rect2.left) {
i3 += rect.left - rect2.left;
}
i = rect.top > rect2.top ? (rect.top - rect2.top) + i4 : i4;
if (rect.right > rect2.right) {
i5 -= rect.right - rect2.right;
}
if (rect.bottom > rect2.bottom) {
i2 = i6 - (rect.bottom - rect2.bottom);
this.mTrackDrawable.setBounds(i3, i, i5, i2);
}
} else {
i = i4;
}
i2 = i6;
this.mTrackDrawable.setBounds(i3, i, i5, i2);
}
Drawable drawable3 = this.mThumbDrawable;
if (drawable3 != null) {
drawable3.getPadding(rect2);
int i7 = thumbOffset - rect2.left;
int i8 = thumbOffset + this.mThumbWidth + rect2.right;
this.mThumbDrawable.setBounds(i7, i4, i8, i6);
Drawable background = getBackground();
if (background != null) {
DrawableCompat.setHotspotBounds(background, i7, i4, i8, i6);
}
}
super.draw(canvas);
}
@Override // android.widget.CompoundButton, android.widget.TextView, android.view.View
protected void onDraw(Canvas canvas) {
int width;
super.onDraw(canvas);
Rect rect = this.mTempRect;
Drawable drawable = this.mTrackDrawable;
if (drawable != null) {
drawable.getPadding(rect);
} else {
rect.setEmpty();
}
int i = this.mSwitchTop;
int i2 = this.mSwitchBottom;
int i3 = i + rect.top;
int i4 = i2 - rect.bottom;
Drawable drawable2 = this.mThumbDrawable;
if (drawable != null) {
if (this.mSplitTrack && drawable2 != null) {
Rect opticalBounds = DrawableUtils.getOpticalBounds(drawable2);
drawable2.copyBounds(rect);
rect.left += opticalBounds.left;
rect.right -= opticalBounds.right;
int save = canvas.save();
canvas.clipRect(rect, Region.Op.DIFFERENCE);
drawable.draw(canvas);
canvas.restoreToCount(save);
} else {
drawable.draw(canvas);
}
}
int save2 = canvas.save();
if (drawable2 != null) {
drawable2.draw(canvas);
}
Layout layout = getTargetCheckedState() ? this.mOnLayout : this.mOffLayout;
if (layout != null) {
int[] drawableState = getDrawableState();
ColorStateList colorStateList = this.mTextColors;
if (colorStateList != null) {
this.mTextPaint.setColor(colorStateList.getColorForState(drawableState, 0));
}
this.mTextPaint.drawableState = drawableState;
if (drawable2 != null) {
Rect bounds = drawable2.getBounds();
width = bounds.left + bounds.right;
} else {
width = getWidth();
}
canvas.translate((width / 2) - (layout.getWidth() / 2), ((i3 + i4) / 2) - (layout.getHeight() / 2));
layout.draw(canvas);
}
canvas.restoreToCount(save2);
}
@Override // android.widget.CompoundButton, android.widget.TextView
public int getCompoundPaddingLeft() {
if (!ViewUtils.isLayoutRtl(this)) {
return super.getCompoundPaddingLeft();
}
int compoundPaddingLeft = super.getCompoundPaddingLeft() + this.mSwitchWidth;
return !TextUtils.isEmpty(getText()) ? compoundPaddingLeft + this.mSwitchPadding : compoundPaddingLeft;
}
@Override // android.widget.CompoundButton, android.widget.TextView
public int getCompoundPaddingRight() {
if (ViewUtils.isLayoutRtl(this)) {
return super.getCompoundPaddingRight();
}
int compoundPaddingRight = super.getCompoundPaddingRight() + this.mSwitchWidth;
return !TextUtils.isEmpty(getText()) ? compoundPaddingRight + this.mSwitchPadding : compoundPaddingRight;
}
private int getThumbOffset() {
return (int) (((ViewUtils.isLayoutRtl(this) ? 1.0f - this.mThumbPosition : this.mThumbPosition) * getThumbScrollRange()) + 0.5f);
}
private int getThumbScrollRange() {
Rect rect;
Drawable drawable = this.mTrackDrawable;
if (drawable == null) {
return 0;
}
Rect rect2 = this.mTempRect;
drawable.getPadding(rect2);
Drawable drawable2 = this.mThumbDrawable;
if (drawable2 != null) {
rect = DrawableUtils.getOpticalBounds(drawable2);
} else {
rect = DrawableUtils.INSETS_NONE;
}
return ((((this.mSwitchWidth - this.mThumbWidth) - rect2.left) - rect2.right) - rect.left) - rect.right;
}
/* JADX INFO: Access modifiers changed from: protected */
@Override // android.widget.CompoundButton, android.widget.TextView, android.view.View
public int[] onCreateDrawableState(int i) {
int[] onCreateDrawableState = super.onCreateDrawableState(i + 1);
if (isChecked()) {
mergeDrawableStates(onCreateDrawableState, CHECKED_STATE_SET);
}
return onCreateDrawableState;
}
@Override // android.widget.CompoundButton, android.widget.TextView, android.view.View
protected void drawableStateChanged() {
super.drawableStateChanged();
int[] drawableState = getDrawableState();
Drawable drawable = this.mThumbDrawable;
boolean state = (drawable == null || !drawable.isStateful()) ? false : drawable.setState(drawableState);
Drawable drawable2 = this.mTrackDrawable;
if (drawable2 != null && drawable2.isStateful()) {
state |= drawable2.setState(drawableState);
}
if (state) {
invalidate();
}
}
@Override // android.widget.CompoundButton, android.widget.TextView, android.view.View
public void drawableHotspotChanged(float f, float f2) {
super.drawableHotspotChanged(f, f2);
Drawable drawable = this.mThumbDrawable;
if (drawable != null) {
DrawableCompat.setHotspot(drawable, f, f2);
}
Drawable drawable2 = this.mTrackDrawable;
if (drawable2 != null) {
DrawableCompat.setHotspot(drawable2, f, f2);
}
}
@Override // android.widget.CompoundButton, android.widget.TextView, android.view.View
protected boolean verifyDrawable(Drawable drawable) {
return super.verifyDrawable(drawable) || drawable == this.mThumbDrawable || drawable == this.mTrackDrawable;
}
@Override // android.widget.CompoundButton, android.widget.TextView, android.view.View
public void jumpDrawablesToCurrentState() {
super.jumpDrawablesToCurrentState();
Drawable drawable = this.mThumbDrawable;
if (drawable != null) {
drawable.jumpToCurrentState();
}
Drawable drawable2 = this.mTrackDrawable;
if (drawable2 != null) {
drawable2.jumpToCurrentState();
}
ObjectAnimator objectAnimator = this.mPositionAnimator;
if (objectAnimator == null || !objectAnimator.isStarted()) {
return;
}
this.mPositionAnimator.end();
this.mPositionAnimator = null;
}
@Override // android.view.View
public void onInitializeAccessibilityEvent(AccessibilityEvent accessibilityEvent) {
super.onInitializeAccessibilityEvent(accessibilityEvent);
accessibilityEvent.setClassName(ACCESSIBILITY_EVENT_CLASS_NAME);
}
@Override // android.view.View
public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo accessibilityNodeInfo) {
super.onInitializeAccessibilityNodeInfo(accessibilityNodeInfo);
accessibilityNodeInfo.setClassName(ACCESSIBILITY_EVENT_CLASS_NAME);
}
@Override // android.widget.TextView
public void setCustomSelectionActionModeCallback(ActionMode.Callback callback) {
super.setCustomSelectionActionModeCallback(TextViewCompat.wrapCustomSelectionActionModeCallback(this, callback));
}
@Override // android.widget.TextView
public ActionMode.Callback getCustomSelectionActionModeCallback() {
return TextViewCompat.unwrapCustomSelectionActionModeCallback(super.getCustomSelectionActionModeCallback());
}
/* JADX INFO: Access modifiers changed from: protected */
public final void setEnforceSwitchWidth(boolean z) {
this.mEnforceSwitchWidth = z;
invalidate();
}
private void setOnStateDescriptionOnRAndAbove() {
CharSequence charSequence = this.mTextOn;
if (charSequence == null) {
charSequence = getResources().getString(androidx.appcompat.R.string.abc_capital_on);
}
ViewCompat.setStateDescription(this, charSequence);
}
private void setOffStateDescriptionOnRAndAbove() {
CharSequence charSequence = this.mTextOff;
if (charSequence == null) {
charSequence = getResources().getString(androidx.appcompat.R.string.abc_capital_off);
}
ViewCompat.setStateDescription(this, charSequence);
}
@Override // android.widget.TextView
public void setAllCaps(boolean z) {
super.setAllCaps(z);
getEmojiTextViewHelper().setAllCaps(z);
}
@Override // android.widget.TextView
public void setFilters(InputFilter[] inputFilterArr) {
super.setFilters(getEmojiTextViewHelper().getFilters(inputFilterArr));
}
private AppCompatEmojiTextHelper getEmojiTextViewHelper() {
if (this.mAppCompatEmojiTextHelper == null) {
this.mAppCompatEmojiTextHelper = new AppCompatEmojiTextHelper(this);
}
return this.mAppCompatEmojiTextHelper;
}
@Override // androidx.appcompat.widget.EmojiCompatConfigurationView
public void setEmojiCompatEnabled(boolean z) {
getEmojiTextViewHelper().setEnabled(z);
setTextOnInternal(this.mTextOn);
setTextOffInternal(this.mTextOff);
requestLayout();
}
@Override // androidx.appcompat.widget.EmojiCompatConfigurationView
public boolean isEmojiCompatEnabled() {
return getEmojiTextViewHelper().isEnabled();
}
private void setupEmojiCompatLoadCallback() {
if (this.mEmojiCompatInitCallback == null && this.mAppCompatEmojiTextHelper.isEnabled() && EmojiCompat.isConfigured()) {
EmojiCompat emojiCompat = EmojiCompat.get();
int loadState = emojiCompat.getLoadState();
if (loadState == 3 || loadState == 0) {
EmojiCompatInitCallback emojiCompatInitCallback = new EmojiCompatInitCallback(this);
this.mEmojiCompatInitCallback = emojiCompatInitCallback;
emojiCompat.registerInitCallback(emojiCompatInitCallback);
}
}
}
void onEmojiCompatInitializedForSwitchText() {
setTextOnInternal(this.mTextOn);
setTextOffInternal(this.mTextOff);
requestLayout();
}
/* JADX INFO: Access modifiers changed from: package-private */
/* loaded from: classes.dex */
public static class EmojiCompatInitCallback extends EmojiCompat.InitCallback {
private final Reference<SwitchCompat> mOuterWeakRef;
EmojiCompatInitCallback(SwitchCompat switchCompat) {
this.mOuterWeakRef = new WeakReference(switchCompat);
}
@Override // androidx.emoji2.text.EmojiCompat.InitCallback
public void onInitialized() {
SwitchCompat switchCompat = this.mOuterWeakRef.get();
if (switchCompat != null) {
switchCompat.onEmojiCompatInitializedForSwitchText();
}
}
@Override // androidx.emoji2.text.EmojiCompat.InitCallback
public void onFailed(Throwable th) {
SwitchCompat switchCompat = this.mOuterWeakRef.get();
if (switchCompat != null) {
switchCompat.onEmojiCompatInitializedForSwitchText();
}
}
}
/* JADX INFO: Access modifiers changed from: package-private */
/* loaded from: classes.dex */
public static class Api18Impl {
private Api18Impl() {
}
static void setAutoCancel(ObjectAnimator objectAnimator, boolean z) {
objectAnimator.setAutoCancel(z);
}
}
}