ADD week 5
This commit is contained in:
		| @@ -0,0 +1,197 @@ | ||||
| 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.m44lambda$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) { | ||||
|     } | ||||
|  | ||||
|     /* renamed from: lambda$new$0$androidx-appcompat-widget-TooltipCompatHandler, reason: not valid java name */ | ||||
|     /* synthetic */ void m44lambda$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 = HOVER_HIDE_TIMEOUT_SHORT_MS; | ||||
|                 } else { | ||||
|                     longPressTimeout = ViewConfiguration.getLongPressTimeout(); | ||||
|                     j = HOVER_HIDE_TIMEOUT_MS; | ||||
|                 } | ||||
|                 j2 = j - longPressTimeout; | ||||
|             } | ||||
|             this.mAnchor.removeCallbacks(this.mHideRunnable); | ||||
|             this.mAnchor.postDelayed(this.mHideRunnable, j2); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     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; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user