Rabbit-R1/android (non root)/java/sources/androidx/appcompat/widget/TooltipCompatHandler.java
2024-05-21 17:08:36 -04:00

199 lines
7.7 KiB
Java

package androidx.appcompat.widget;
import android.text.TextUtils;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewConfiguration;
import android.view.accessibility.AccessibilityManager;
import androidx.core.view.ViewCompat;
import androidx.core.view.ViewConfigurationCompat;
/* loaded from: classes.dex */
class TooltipCompatHandler implements View.OnLongClickListener, View.OnHoverListener, View.OnAttachStateChangeListener {
private static final long HOVER_HIDE_TIMEOUT_MS = 15000;
private static final long HOVER_HIDE_TIMEOUT_SHORT_MS = 3000;
private static final long LONG_CLICK_HIDE_TIMEOUT_MS = 2500;
private static final String TAG = "TooltipCompatHandler";
private static TooltipCompatHandler sActiveHandler;
private static TooltipCompatHandler sPendingHandler;
private final View mAnchor;
private int mAnchorX;
private int mAnchorY;
private boolean mForceNextChangeSignificant;
private boolean mFromTouch;
private final int mHoverSlop;
private TooltipPopup mPopup;
private final CharSequence mTooltipText;
private final Runnable mShowRunnable = new Runnable() { // from class: androidx.appcompat.widget.TooltipCompatHandler$$ExternalSyntheticLambda0
@Override // java.lang.Runnable
public final void run() {
TooltipCompatHandler.this.m15lambda$new$0$androidxappcompatwidgetTooltipCompatHandler();
}
};
private final Runnable mHideRunnable = new Runnable() { // from class: androidx.appcompat.widget.TooltipCompatHandler$$ExternalSyntheticLambda1
@Override // java.lang.Runnable
public final void run() {
TooltipCompatHandler.this.hide();
}
};
private void forceNextChangeSignificant() {
this.mForceNextChangeSignificant = true;
}
@Override // android.view.View.OnAttachStateChangeListener
public void onViewAttachedToWindow(View view) {
}
/* JADX INFO: Access modifiers changed from: package-private */
/* renamed from: lambda$new$0$androidx-appcompat-widget-TooltipCompatHandler, reason: not valid java name */
public /* synthetic */ void m15lambda$new$0$androidxappcompatwidgetTooltipCompatHandler() {
show(false);
}
public static void setTooltipText(View view, CharSequence charSequence) {
TooltipCompatHandler tooltipCompatHandler = sPendingHandler;
if (tooltipCompatHandler != null && tooltipCompatHandler.mAnchor == view) {
setPendingHandler(null);
}
if (TextUtils.isEmpty(charSequence)) {
TooltipCompatHandler tooltipCompatHandler2 = sActiveHandler;
if (tooltipCompatHandler2 != null && tooltipCompatHandler2.mAnchor == view) {
tooltipCompatHandler2.hide();
}
view.setOnLongClickListener(null);
view.setLongClickable(false);
view.setOnHoverListener(null);
return;
}
new TooltipCompatHandler(view, charSequence);
}
private TooltipCompatHandler(View view, CharSequence charSequence) {
this.mAnchor = view;
this.mTooltipText = charSequence;
this.mHoverSlop = ViewConfigurationCompat.getScaledHoverSlop(ViewConfiguration.get(view.getContext()));
forceNextChangeSignificant();
view.setOnLongClickListener(this);
view.setOnHoverListener(this);
}
@Override // android.view.View.OnLongClickListener
public boolean onLongClick(View view) {
this.mAnchorX = view.getWidth() / 2;
this.mAnchorY = view.getHeight() / 2;
show(true);
return true;
}
@Override // android.view.View.OnHoverListener
public boolean onHover(View view, MotionEvent motionEvent) {
if (this.mPopup != null && this.mFromTouch) {
return false;
}
AccessibilityManager accessibilityManager = (AccessibilityManager) this.mAnchor.getContext().getSystemService("accessibility");
if (accessibilityManager.isEnabled() && accessibilityManager.isTouchExplorationEnabled()) {
return false;
}
int action = motionEvent.getAction();
if (action != 7) {
if (action == 10) {
forceNextChangeSignificant();
hide();
}
} else if (this.mAnchor.isEnabled() && this.mPopup == null && updateAnchorPos(motionEvent)) {
setPendingHandler(this);
}
return false;
}
@Override // android.view.View.OnAttachStateChangeListener
public void onViewDetachedFromWindow(View view) {
hide();
}
void show(boolean z) {
long longPressTimeout;
long j;
long j2;
if (ViewCompat.isAttachedToWindow(this.mAnchor)) {
setPendingHandler(null);
TooltipCompatHandler tooltipCompatHandler = sActiveHandler;
if (tooltipCompatHandler != null) {
tooltipCompatHandler.hide();
}
sActiveHandler = this;
this.mFromTouch = z;
TooltipPopup tooltipPopup = new TooltipPopup(this.mAnchor.getContext());
this.mPopup = tooltipPopup;
tooltipPopup.show(this.mAnchor, this.mAnchorX, this.mAnchorY, this.mFromTouch, this.mTooltipText);
this.mAnchor.addOnAttachStateChangeListener(this);
if (this.mFromTouch) {
j2 = LONG_CLICK_HIDE_TIMEOUT_MS;
} else {
if ((ViewCompat.getWindowSystemUiVisibility(this.mAnchor) & 1) == 1) {
longPressTimeout = ViewConfiguration.getLongPressTimeout();
j = 3000;
} else {
longPressTimeout = ViewConfiguration.getLongPressTimeout();
j = 15000;
}
j2 = j - longPressTimeout;
}
this.mAnchor.removeCallbacks(this.mHideRunnable);
this.mAnchor.postDelayed(this.mHideRunnable, j2);
}
}
/* JADX INFO: Access modifiers changed from: package-private */
public void hide() {
if (sActiveHandler == this) {
sActiveHandler = null;
TooltipPopup tooltipPopup = this.mPopup;
if (tooltipPopup != null) {
tooltipPopup.hide();
this.mPopup = null;
forceNextChangeSignificant();
this.mAnchor.removeOnAttachStateChangeListener(this);
} else {
Log.e(TAG, "sActiveHandler.mPopup == null");
}
}
if (sPendingHandler == this) {
setPendingHandler(null);
}
this.mAnchor.removeCallbacks(this.mHideRunnable);
}
private static void setPendingHandler(TooltipCompatHandler tooltipCompatHandler) {
TooltipCompatHandler tooltipCompatHandler2 = sPendingHandler;
if (tooltipCompatHandler2 != null) {
tooltipCompatHandler2.cancelPendingShow();
}
sPendingHandler = tooltipCompatHandler;
if (tooltipCompatHandler != null) {
tooltipCompatHandler.scheduleShow();
}
}
private void scheduleShow() {
this.mAnchor.postDelayed(this.mShowRunnable, ViewConfiguration.getLongPressTimeout());
}
private void cancelPendingShow() {
this.mAnchor.removeCallbacks(this.mShowRunnable);
}
private boolean updateAnchorPos(MotionEvent motionEvent) {
int x = (int) motionEvent.getX();
int y = (int) motionEvent.getY();
if (!this.mForceNextChangeSignificant && Math.abs(x - this.mAnchorX) <= this.mHoverSlop && Math.abs(y - this.mAnchorY) <= this.mHoverSlop) {
return false;
}
this.mAnchorX = x;
this.mAnchorY = y;
this.mForceNextChangeSignificant = false;
return true;
}
}