2025-03-31 16:33:42 +02:00

334 lines
14 KiB
Java

package androidx.constraintlayout.motion.widget;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.util.Log;
import android.util.SparseIntArray;
import android.view.View;
import androidx.constraintlayout.core.motion.utils.TypedValues;
import androidx.constraintlayout.motion.utils.ViewSpline;
import androidx.constraintlayout.widget.ConstraintAttribute;
import androidx.constraintlayout.widget.R;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Locale;
/* loaded from: classes.dex */
public class KeyTrigger extends Key {
public static final String CROSS = "CROSS";
public static final int KEY_TYPE = 5;
static final String NAME = "KeyTrigger";
public static final String NEGATIVE_CROSS = "negativeCross";
public static final String POSITIVE_CROSS = "positiveCross";
public static final String POST_LAYOUT = "postLayout";
private static final String TAG = "KeyTrigger";
public static final String TRIGGER_COLLISION_ID = "triggerCollisionId";
public static final String TRIGGER_COLLISION_VIEW = "triggerCollisionView";
public static final String TRIGGER_ID = "triggerID";
public static final String TRIGGER_RECEIVER = "triggerReceiver";
public static final String TRIGGER_SLACK = "triggerSlack";
public static final String VIEW_TRANSITION_ON_CROSS = "viewTransitionOnCross";
public static final String VIEW_TRANSITION_ON_NEGATIVE_CROSS = "viewTransitionOnNegativeCross";
public static final String VIEW_TRANSITION_ON_POSITIVE_CROSS = "viewTransitionOnPositiveCross";
private float mFireLastPos;
private int mCurveFit = -1;
private String mCross = null;
private int mTriggerReceiver = UNSET;
private String mNegativeCross = null;
private String mPositiveCross = null;
private int mTriggerID = UNSET;
private int mTriggerCollisionId = UNSET;
private View mTriggerCollisionView = null;
float mTriggerSlack = 0.1f;
private boolean mFireCrossReset = true;
private boolean mFireNegativeReset = true;
private boolean mFirePositiveReset = true;
private float mFireThreshold = Float.NaN;
private boolean mPostLayout = false;
int mViewTransitionOnNegativeCross = UNSET;
int mViewTransitionOnPositiveCross = UNSET;
int mViewTransitionOnCross = UNSET;
RectF mCollisionRect = new RectF();
RectF mTargetRect = new RectF();
HashMap<String, Method> mMethodHashMap = new HashMap<>();
@Override // androidx.constraintlayout.motion.widget.Key
public void addValues(HashMap<String, ViewSpline> splines) {
}
@Override // androidx.constraintlayout.motion.widget.Key
public void getAttributeNames(HashSet<String> attributes) {
}
int getCurveFit() {
return this.mCurveFit;
}
public KeyTrigger() {
this.mType = 5;
this.mCustomConstraints = new HashMap<>();
}
@Override // androidx.constraintlayout.motion.widget.Key
public void load(Context context, AttributeSet attrs) {
Loader.read(this, context.obtainStyledAttributes(attrs, R.styleable.KeyTrigger), context);
}
@Override // androidx.constraintlayout.motion.widget.Key
public void setValue(String tag, Object value) {
tag.hashCode();
switch (tag) {
case "positiveCross":
this.mPositiveCross = value.toString();
break;
case "viewTransitionOnPositiveCross":
this.mViewTransitionOnPositiveCross = toInt(value);
break;
case "triggerCollisionId":
this.mTriggerCollisionId = toInt(value);
break;
case "triggerID":
this.mTriggerID = toInt(value);
break;
case "negativeCross":
this.mNegativeCross = value.toString();
break;
case "triggerCollisionView":
this.mTriggerCollisionView = (View) value;
break;
case "viewTransitionOnNegativeCross":
this.mViewTransitionOnNegativeCross = toInt(value);
break;
case "CROSS":
this.mCross = value.toString();
break;
case "triggerSlack":
this.mTriggerSlack = toFloat(value);
break;
case "viewTransitionOnCross":
this.mViewTransitionOnCross = toInt(value);
break;
case "postLayout":
this.mPostLayout = toBoolean(value);
break;
case "triggerReceiver":
this.mTriggerReceiver = toInt(value);
break;
}
}
private void setUpRect(RectF rect, View child, boolean postLayout) {
rect.top = child.getTop();
rect.bottom = child.getBottom();
rect.left = child.getLeft();
rect.right = child.getRight();
if (postLayout) {
child.getMatrix().mapRect(rect);
}
}
/* JADX WARN: Removed duplicated region for block: B:68:0x008d */
/* JADX WARN: Removed duplicated region for block: B:75:0x00b7 */
/* JADX WARN: Removed duplicated region for block: B:82:0x00d1 */
/* JADX WARN: Removed duplicated region for block: B:87:0x00a2 */
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
public void conditionallyFire(float r10, android.view.View r11) {
/*
Method dump skipped, instructions count: 357
To view this dump add '--comments-level debug' option
*/
throw new UnsupportedOperationException("Method not decompiled: androidx.constraintlayout.motion.widget.KeyTrigger.conditionallyFire(float, android.view.View):void");
}
private void fire(String str, View call) {
Method method;
if (str == null) {
return;
}
if (str.startsWith(".")) {
fireCustom(str, call);
return;
}
if (this.mMethodHashMap.containsKey(str)) {
method = this.mMethodHashMap.get(str);
if (method == null) {
return;
}
} else {
method = null;
}
if (method == null) {
try {
method = call.getClass().getMethod(str, new Class[0]);
this.mMethodHashMap.put(str, method);
} catch (NoSuchMethodException unused) {
this.mMethodHashMap.put(str, null);
Log.e(TypedValues.TriggerType.NAME, "Could not find method \"" + str + "\"on class " + call.getClass().getSimpleName() + " " + Debug.getName(call));
return;
}
}
try {
method.invoke(call, new Object[0]);
} catch (Exception unused2) {
Log.e(TypedValues.TriggerType.NAME, "Exception in call \"" + this.mCross + "\"on class " + call.getClass().getSimpleName() + " " + Debug.getName(call));
}
}
private void fireCustom(String str, View view) {
boolean z = str.length() == 1;
if (!z) {
str = str.substring(1).toLowerCase(Locale.ROOT);
}
for (String str2 : this.mCustomConstraints.keySet()) {
String lowerCase = str2.toLowerCase(Locale.ROOT);
if (z || lowerCase.matches(str)) {
ConstraintAttribute constraintAttribute = this.mCustomConstraints.get(str2);
if (constraintAttribute != null) {
constraintAttribute.applyCustom(view);
}
}
}
}
private static class Loader {
private static final int COLLISION = 9;
private static final int CROSS = 4;
private static final int FRAME_POS = 8;
private static final int NEGATIVE_CROSS = 1;
private static final int POSITIVE_CROSS = 2;
private static final int POST_LAYOUT = 10;
private static final int TARGET_ID = 7;
private static final int TRIGGER_ID = 6;
private static final int TRIGGER_RECEIVER = 11;
private static final int TRIGGER_SLACK = 5;
private static final int VT_CROSS = 12;
private static final int VT_NEGATIVE_CROSS = 13;
private static final int VT_POSITIVE_CROSS = 14;
private static SparseIntArray mAttrMap;
private Loader() {
}
static {
SparseIntArray sparseIntArray = new SparseIntArray();
mAttrMap = sparseIntArray;
sparseIntArray.append(R.styleable.KeyTrigger_framePosition, 8);
mAttrMap.append(R.styleable.KeyTrigger_onCross, 4);
mAttrMap.append(R.styleable.KeyTrigger_onNegativeCross, 1);
mAttrMap.append(R.styleable.KeyTrigger_onPositiveCross, 2);
mAttrMap.append(R.styleable.KeyTrigger_motionTarget, 7);
mAttrMap.append(R.styleable.KeyTrigger_triggerId, 6);
mAttrMap.append(R.styleable.KeyTrigger_triggerSlack, 5);
mAttrMap.append(R.styleable.KeyTrigger_motion_triggerOnCollision, 9);
mAttrMap.append(R.styleable.KeyTrigger_motion_postLayoutCollision, 10);
mAttrMap.append(R.styleable.KeyTrigger_triggerReceiver, 11);
mAttrMap.append(R.styleable.KeyTrigger_viewTransitionOnCross, 12);
mAttrMap.append(R.styleable.KeyTrigger_viewTransitionOnNegativeCross, 13);
mAttrMap.append(R.styleable.KeyTrigger_viewTransitionOnPositiveCross, 14);
}
public static void read(KeyTrigger c, TypedArray a, Context context) {
int indexCount = a.getIndexCount();
for (int i = 0; i < indexCount; i++) {
int index = a.getIndex(i);
switch (mAttrMap.get(index)) {
case 1:
c.mNegativeCross = a.getString(index);
break;
case 2:
c.mPositiveCross = a.getString(index);
break;
case 3:
default:
Log.e(TypedValues.TriggerType.NAME, "unused attribute 0x" + Integer.toHexString(index) + " " + mAttrMap.get(index));
break;
case 4:
c.mCross = a.getString(index);
break;
case 5:
c.mTriggerSlack = a.getFloat(index, c.mTriggerSlack);
break;
case 6:
c.mTriggerID = a.getResourceId(index, c.mTriggerID);
break;
case 7:
if (MotionLayout.IS_IN_EDIT_MODE) {
c.mTargetId = a.getResourceId(index, c.mTargetId);
if (c.mTargetId == -1) {
c.mTargetString = a.getString(index);
break;
} else {
break;
}
} else if (a.peekValue(index).type == 3) {
c.mTargetString = a.getString(index);
break;
} else {
c.mTargetId = a.getResourceId(index, c.mTargetId);
break;
}
case 8:
c.mFramePosition = a.getInteger(index, c.mFramePosition);
c.mFireThreshold = (c.mFramePosition + 0.5f) / 100.0f;
break;
case 9:
c.mTriggerCollisionId = a.getResourceId(index, c.mTriggerCollisionId);
break;
case 10:
c.mPostLayout = a.getBoolean(index, c.mPostLayout);
break;
case 11:
c.mTriggerReceiver = a.getResourceId(index, c.mTriggerReceiver);
break;
case 12:
c.mViewTransitionOnCross = a.getResourceId(index, c.mViewTransitionOnCross);
break;
case 13:
c.mViewTransitionOnNegativeCross = a.getResourceId(index, c.mViewTransitionOnNegativeCross);
break;
case 14:
c.mViewTransitionOnPositiveCross = a.getResourceId(index, c.mViewTransitionOnPositiveCross);
break;
}
}
}
}
@Override // androidx.constraintlayout.motion.widget.Key
public Key copy(Key src) {
super.copy(src);
KeyTrigger keyTrigger = (KeyTrigger) src;
this.mCurveFit = keyTrigger.mCurveFit;
this.mCross = keyTrigger.mCross;
this.mTriggerReceiver = keyTrigger.mTriggerReceiver;
this.mNegativeCross = keyTrigger.mNegativeCross;
this.mPositiveCross = keyTrigger.mPositiveCross;
this.mTriggerID = keyTrigger.mTriggerID;
this.mTriggerCollisionId = keyTrigger.mTriggerCollisionId;
this.mTriggerCollisionView = keyTrigger.mTriggerCollisionView;
this.mTriggerSlack = keyTrigger.mTriggerSlack;
this.mFireCrossReset = keyTrigger.mFireCrossReset;
this.mFireNegativeReset = keyTrigger.mFireNegativeReset;
this.mFirePositiveReset = keyTrigger.mFirePositiveReset;
this.mFireThreshold = keyTrigger.mFireThreshold;
this.mFireLastPos = keyTrigger.mFireLastPos;
this.mPostLayout = keyTrigger.mPostLayout;
this.mCollisionRect = keyTrigger.mCollisionRect;
this.mTargetRect = keyTrigger.mTargetRect;
this.mMethodHashMap = keyTrigger.mMethodHashMap;
return this;
}
@Override // androidx.constraintlayout.motion.widget.Key
/* renamed from: clone */
public Key mo49clone() {
return new KeyTrigger().copy(this);
}
}