package androidx.appcompat.widget; import android.content.Context; import android.graphics.Canvas; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.os.Build; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.ListAdapter; import android.widget.ListView; import androidx.annotation.NonNull; import androidx.appcompat.R; import androidx.appcompat.graphics.drawable.DrawableWrapper; import androidx.constraintlayout.solver.widgets.analyzer.BasicMeasure; import androidx.core.graphics.drawable.DrawableCompat; import androidx.core.view.ViewPropertyAnimatorCompat; import androidx.core.widget.ListViewAutoScrollHelper; import java.lang.reflect.Field; public class DropDownListView extends ListView { public static final int INVALID_POSITION = -1; public static final int NO_POSITION = -1; private ViewPropertyAnimatorCompat mClickAnimation; private boolean mDrawsInPressedState; private boolean mHijackFocus; private Field mIsChildViewEnabled; private boolean mListSelectionHidden; private int mMotionPosition; public ResolveHoverRunnable mResolveHoverRunnable; private ListViewAutoScrollHelper mScrollHelper; private int mSelectionBottomPadding = 0; private int mSelectionLeftPadding = 0; private int mSelectionRightPadding = 0; private int mSelectionTopPadding = 0; private GateKeeperDrawable mSelector; private final Rect mSelectorRect = new Rect(); public static class GateKeeperDrawable extends DrawableWrapper { private boolean mEnabled = true; public GateKeeperDrawable(Drawable drawable) { super(drawable); } @Override // androidx.appcompat.graphics.drawable.DrawableWrapper, android.graphics.drawable.Drawable public void draw(Canvas canvas) { if (this.mEnabled) { super.draw(canvas); } } public void setEnabled(boolean z2) { this.mEnabled = z2; } @Override // androidx.appcompat.graphics.drawable.DrawableWrapper, android.graphics.drawable.Drawable public void setHotspot(float f, float f2) { if (this.mEnabled) { super.setHotspot(f, f2); } } @Override // androidx.appcompat.graphics.drawable.DrawableWrapper, android.graphics.drawable.Drawable public void setHotspotBounds(int i, int i2, int i3, int i4) { if (this.mEnabled) { super.setHotspotBounds(i, i2, i3, i4); } } @Override // androidx.appcompat.graphics.drawable.DrawableWrapper, android.graphics.drawable.Drawable public boolean setState(int[] iArr) { if (this.mEnabled) { return super.setState(iArr); } return false; } @Override // androidx.appcompat.graphics.drawable.DrawableWrapper, android.graphics.drawable.Drawable public boolean setVisible(boolean z2, boolean z3) { if (this.mEnabled) { return super.setVisible(z2, z3); } return false; } } public class ResolveHoverRunnable implements Runnable { public ResolveHoverRunnable() { } public void cancel() { DropDownListView dropDownListView = DropDownListView.this; dropDownListView.mResolveHoverRunnable = null; dropDownListView.removeCallbacks(this); } public void post() { DropDownListView.this.post(this); } @Override // java.lang.Runnable public void run() { DropDownListView dropDownListView = DropDownListView.this; dropDownListView.mResolveHoverRunnable = null; dropDownListView.drawableStateChanged(); } } public DropDownListView(@NonNull Context context, boolean z2) { super(context, null, R.attr.dropDownListViewStyle); this.mHijackFocus = z2; setCacheColorHint(0); try { Field declaredField = AbsListView.class.getDeclaredField("mIsChildViewEnabled"); this.mIsChildViewEnabled = declaredField; declaredField.setAccessible(true); } catch (NoSuchFieldException e) { e.printStackTrace(); } } private void clearPressedItem() { this.mDrawsInPressedState = false; setPressed(false); drawableStateChanged(); View childAt = getChildAt(this.mMotionPosition - getFirstVisiblePosition()); if (childAt != null) { childAt.setPressed(false); } ViewPropertyAnimatorCompat viewPropertyAnimatorCompat = this.mClickAnimation; if (viewPropertyAnimatorCompat != null) { viewPropertyAnimatorCompat.cancel(); this.mClickAnimation = null; } } private void clickPressedItem(View view, int i) { performItemClick(view, i, getItemIdAtPosition(i)); } private void drawSelectorCompat(Canvas canvas) { Drawable selector; if (!this.mSelectorRect.isEmpty() && (selector = getSelector()) != null) { selector.setBounds(this.mSelectorRect); selector.draw(canvas); } } private void positionSelectorCompat(int i, View view) { Rect rect = this.mSelectorRect; rect.set(view.getLeft(), view.getTop(), view.getRight(), view.getBottom()); rect.left -= this.mSelectionLeftPadding; rect.top -= this.mSelectionTopPadding; rect.right += this.mSelectionRightPadding; rect.bottom += this.mSelectionBottomPadding; try { boolean z2 = this.mIsChildViewEnabled.getBoolean(this); if (view.isEnabled() != z2) { this.mIsChildViewEnabled.set(this, Boolean.valueOf(!z2)); if (i != -1) { refreshDrawableState(); } } } catch (IllegalAccessException e) { e.printStackTrace(); } } private void positionSelectorLikeFocusCompat(int i, View view) { Drawable selector = getSelector(); boolean z2 = true; boolean z3 = (selector == null || i == -1) ? false : true; if (z3) { selector.setVisible(false, false); } positionSelectorCompat(i, view); if (z3) { Rect rect = this.mSelectorRect; float exactCenterX = rect.exactCenterX(); float exactCenterY = rect.exactCenterY(); if (getVisibility() != 0) { z2 = false; } selector.setVisible(z2, false); DrawableCompat.setHotspot(selector, exactCenterX, exactCenterY); } } private void positionSelectorLikeTouchCompat(int i, View view, float f, float f2) { positionSelectorLikeFocusCompat(i, view); Drawable selector = getSelector(); if (selector != null && i != -1) { DrawableCompat.setHotspot(selector, f, f2); } } private void setPressedItem(View view, int i, float f, float f2) { View childAt; this.mDrawsInPressedState = true; drawableHotspotChanged(f, f2); if (!isPressed()) { setPressed(true); } layoutChildren(); int i2 = this.mMotionPosition; if (!(i2 == -1 || (childAt = getChildAt(i2 - getFirstVisiblePosition())) == null || childAt == view || !childAt.isPressed())) { childAt.setPressed(false); } this.mMotionPosition = i; view.drawableHotspotChanged(f - ((float) view.getLeft()), f2 - ((float) view.getTop())); if (!view.isPressed()) { view.setPressed(true); } positionSelectorLikeTouchCompat(i, view, f, f2); setSelectorEnabled(false); refreshDrawableState(); } private void setSelectorEnabled(boolean z2) { GateKeeperDrawable gateKeeperDrawable = this.mSelector; if (gateKeeperDrawable != null) { gateKeeperDrawable.setEnabled(z2); } } private boolean touchModeDrawsInPressedStateCompat() { return this.mDrawsInPressedState; } private void updateSelectorStateCompat() { Drawable selector = getSelector(); if (selector != null && touchModeDrawsInPressedStateCompat() && isPressed()) { selector.setState(getDrawableState()); } } @Override // android.widget.ListView, android.widget.AbsListView, android.view.ViewGroup, android.view.View public void dispatchDraw(Canvas canvas) { drawSelectorCompat(canvas); super.dispatchDraw(canvas); } @Override // android.widget.AbsListView, android.view.ViewGroup, android.view.View public void drawableStateChanged() { if (this.mResolveHoverRunnable == null) { super.drawableStateChanged(); setSelectorEnabled(true); updateSelectorStateCompat(); } } @Override // android.view.ViewGroup, android.view.View public boolean hasFocus() { return this.mHijackFocus || super.hasFocus(); } @Override // android.view.View public boolean hasWindowFocus() { return this.mHijackFocus || super.hasWindowFocus(); } @Override // android.view.View public boolean isFocused() { return this.mHijackFocus || super.isFocused(); } @Override // android.view.View public boolean isInTouchMode() { return (this.mHijackFocus && this.mListSelectionHidden) || super.isInTouchMode(); } public int lookForSelectablePosition(int i, boolean z2) { int i2; ListAdapter adapter = getAdapter(); if (adapter != null && !isInTouchMode()) { int count = adapter.getCount(); if (!getAdapter().areAllItemsEnabled()) { if (z2) { i2 = Math.max(0, i); while (i2 < count && !adapter.isEnabled(i2)) { i2++; } } else { i2 = Math.min(i, count - 1); while (i2 >= 0 && !adapter.isEnabled(i2)) { i2--; } } if (i2 < 0 || i2 >= count) { return -1; } return i2; } else if (i >= 0 && i < count) { return i; } } return -1; } public int measureHeightOfChildrenCompat(int i, int i2, int i3, int i4, int i5) { int listPaddingTop = getListPaddingTop(); int listPaddingBottom = getListPaddingBottom(); int dividerHeight = getDividerHeight(); Drawable divider = getDivider(); ListAdapter adapter = getAdapter(); if (adapter == null) { return listPaddingTop + listPaddingBottom; } int i6 = listPaddingTop + listPaddingBottom; if (dividerHeight <= 0 || divider == null) { dividerHeight = 0; } int count = adapter.getCount(); View view = null; int i7 = 0; int i8 = 0; int i9 = 0; while (i7 < count) { int itemViewType = adapter.getItemViewType(i7); if (itemViewType != i8) { view = null; i8 = itemViewType; } view = adapter.getView(i7, view, this); ViewGroup.LayoutParams layoutParams = view.getLayoutParams(); if (layoutParams == null) { layoutParams = generateDefaultLayoutParams(); view.setLayoutParams(layoutParams); } int i10 = layoutParams.height; view.measure(i, i10 > 0 ? View.MeasureSpec.makeMeasureSpec(i10, BasicMeasure.EXACTLY) : View.MeasureSpec.makeMeasureSpec(0, 0)); view.forceLayout(); if (i7 > 0) { i6 += dividerHeight; } i6 += view.getMeasuredHeight(); if (i6 >= i4) { return (i5 < 0 || i7 <= i5 || i9 <= 0 || i6 == i4) ? i4 : i9; } if (i5 >= 0 && i7 >= i5) { i9 = i6; } i7++; } return i6; } @Override // android.widget.ListView, android.widget.AbsListView, android.view.ViewGroup, android.view.View, android.widget.AdapterView public void onDetachedFromWindow() { this.mResolveHoverRunnable = null; super.onDetachedFromWindow(); } /* JADX WARNING: Code restructure failed: missing block: B:5:0x000c, code lost: if (r0 != 3) goto L_0x000e; */ /* JADX WARNING: Removed duplicated region for block: B:12:0x001e */ /* JADX WARNING: Removed duplicated region for block: B:22:0x004f */ /* JADX WARNING: Removed duplicated region for block: B:26:0x0065 */ public boolean onForwardedEvent(MotionEvent motionEvent, int i) { boolean z2; boolean z3; int findPointerIndex; int actionMasked = motionEvent.getActionMasked(); if (actionMasked == 1) { z3 = false; findPointerIndex = motionEvent.findPointerIndex(i); if (findPointerIndex >= 0) { } z2 = false; z3 = false; clearPressedItem(); if (!z3) { } return z3; } else if (actionMasked == 2) { z3 = true; findPointerIndex = motionEvent.findPointerIndex(i); if (findPointerIndex >= 0) { int x2 = (int) motionEvent.getX(findPointerIndex); int y2 = (int) motionEvent.getY(findPointerIndex); int pointToPosition = pointToPosition(x2, y2); if (pointToPosition == -1) { z2 = true; if (!z3 || z2) { clearPressedItem(); } if (!z3) { if (this.mScrollHelper == null) { this.mScrollHelper = new ListViewAutoScrollHelper(this); } this.mScrollHelper.setEnabled(true); this.mScrollHelper.onTouch(this, motionEvent); } else { ListViewAutoScrollHelper listViewAutoScrollHelper = this.mScrollHelper; if (listViewAutoScrollHelper != null) { listViewAutoScrollHelper.setEnabled(false); } } return z3; } View childAt = getChildAt(pointToPosition - getFirstVisiblePosition()); setPressedItem(childAt, pointToPosition, (float) x2, (float) y2); if (actionMasked == 1) { clickPressedItem(childAt, pointToPosition); } } z2 = false; z3 = false; clearPressedItem(); if (!z3) { } return z3; } z2 = false; z3 = true; clearPressedItem(); if (!z3) { } return z3; } @Override // android.view.View public boolean onHoverEvent(@NonNull MotionEvent motionEvent) { if (Build.VERSION.SDK_INT < 26) { return super.onHoverEvent(motionEvent); } int actionMasked = motionEvent.getActionMasked(); if (actionMasked == 10 && this.mResolveHoverRunnable == null) { ResolveHoverRunnable resolveHoverRunnable = new ResolveHoverRunnable(); this.mResolveHoverRunnable = resolveHoverRunnable; resolveHoverRunnable.post(); } boolean onHoverEvent = super.onHoverEvent(motionEvent); if (actionMasked == 9 || actionMasked == 7) { int pointToPosition = pointToPosition((int) motionEvent.getX(), (int) motionEvent.getY()); if (!(pointToPosition == -1 || pointToPosition == getSelectedItemPosition())) { View childAt = getChildAt(pointToPosition - getFirstVisiblePosition()); if (childAt.isEnabled()) { setSelectionFromTop(pointToPosition, childAt.getTop() - getTop()); } updateSelectorStateCompat(); } } else { setSelection(-1); } return onHoverEvent; } @Override // android.widget.AbsListView, android.view.View public boolean onTouchEvent(MotionEvent motionEvent) { if (motionEvent.getAction() == 0) { this.mMotionPosition = pointToPosition((int) motionEvent.getX(), (int) motionEvent.getY()); } ResolveHoverRunnable resolveHoverRunnable = this.mResolveHoverRunnable; if (resolveHoverRunnable != null) { resolveHoverRunnable.cancel(); } return super.onTouchEvent(motionEvent); } public void setListSelectionHidden(boolean z2) { this.mListSelectionHidden = z2; } @Override // android.widget.AbsListView public void setSelector(Drawable drawable) { GateKeeperDrawable gateKeeperDrawable = drawable != null ? new GateKeeperDrawable(drawable) : null; this.mSelector = gateKeeperDrawable; super.setSelector(gateKeeperDrawable); Rect rect = new Rect(); if (drawable != null) { drawable.getPadding(rect); } this.mSelectionLeftPadding = rect.left; this.mSelectionTopPadding = rect.top; this.mSelectionRightPadding = rect.right; this.mSelectionBottomPadding = rect.bottom; } }