package androidx.appcompat.view.menu; import android.content.Context; import android.content.res.Resources; import android.graphics.Rect; import android.os.Build; import android.os.Handler; import android.os.Parcelable; import android.os.SystemClock; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.widget.FrameLayout; import android.widget.HeaderViewListAdapter; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.PopupWindow; import android.widget.TextView; import androidx.annotation.AttrRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.StyleRes; import androidx.appcompat.R; import androidx.appcompat.view.menu.MenuPresenter; import androidx.appcompat.widget.MenuItemHoverListener; import androidx.appcompat.widget.MenuPopupWindow; import androidx.core.view.GravityCompat; import androidx.core.view.ViewCompat; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; import java.util.List; public final class CascadingMenuPopup extends MenuPopup implements MenuPresenter, View.OnKeyListener, PopupWindow.OnDismissListener { public static final int HORIZ_POSITION_LEFT = 0; public static final int HORIZ_POSITION_RIGHT = 1; private static final int ITEM_LAYOUT = R.layout.abc_cascading_menu_item_layout; public static final int SUBMENU_TIMEOUT_MS = 200; private View mAnchorView; private final View.OnAttachStateChangeListener mAttachStateChangeListener = new AnonymousClass2(); private final Context mContext; private int mDropDownGravity = 0; private boolean mForceShowIcon; public final ViewTreeObserver.OnGlobalLayoutListener mGlobalLayoutListener = new AnonymousClass1(); private boolean mHasXOffset; private boolean mHasYOffset; private int mLastPosition; private final MenuItemHoverListener mMenuItemHoverListener = new AnonymousClass3(); private final int mMenuMaxWidth; private PopupWindow.OnDismissListener mOnDismissListener; private final boolean mOverflowOnly; private final List mPendingMenus = new ArrayList(); private final int mPopupStyleAttr; private final int mPopupStyleRes; private MenuPresenter.Callback mPresenterCallback; private int mRawDropDownGravity = 0; public boolean mShouldCloseImmediately; private boolean mShowTitle; public final List mShowingMenus = new ArrayList(); public View mShownAnchorView; public final Handler mSubMenuHoverHandler; public ViewTreeObserver mTreeObserver; private int mXOffset; private int mYOffset; /* renamed from: androidx.appcompat.view.menu.CascadingMenuPopup$1 reason: invalid class name */ public class AnonymousClass1 implements ViewTreeObserver.OnGlobalLayoutListener { public AnonymousClass1() { } @Override // android.view.ViewTreeObserver.OnGlobalLayoutListener public void onGlobalLayout() { if (CascadingMenuPopup.this.isShowing() && CascadingMenuPopup.this.mShowingMenus.size() > 0 && !CascadingMenuPopup.this.mShowingMenus.get(0).window.isModal()) { View view = CascadingMenuPopup.this.mShownAnchorView; if (view == null || !view.isShown()) { CascadingMenuPopup.this.dismiss(); return; } for (CascadingMenuInfo cascadingMenuInfo : CascadingMenuPopup.this.mShowingMenus) { cascadingMenuInfo.window.show(); } } } } /* renamed from: androidx.appcompat.view.menu.CascadingMenuPopup$2 reason: invalid class name */ public class AnonymousClass2 implements View.OnAttachStateChangeListener { public AnonymousClass2() { } @Override // android.view.View.OnAttachStateChangeListener public void onViewAttachedToWindow(View view) { } @Override // android.view.View.OnAttachStateChangeListener public void onViewDetachedFromWindow(View view) { ViewTreeObserver viewTreeObserver = CascadingMenuPopup.this.mTreeObserver; if (viewTreeObserver != null) { if (!viewTreeObserver.isAlive()) { CascadingMenuPopup.this.mTreeObserver = view.getViewTreeObserver(); } CascadingMenuPopup cascadingMenuPopup = CascadingMenuPopup.this; cascadingMenuPopup.mTreeObserver.removeGlobalOnLayoutListener(cascadingMenuPopup.mGlobalLayoutListener); } view.removeOnAttachStateChangeListener(this); } } /* renamed from: androidx.appcompat.view.menu.CascadingMenuPopup$3 reason: invalid class name */ public class AnonymousClass3 implements MenuItemHoverListener { /* renamed from: androidx.appcompat.view.menu.CascadingMenuPopup$3$1 reason: invalid class name */ public class AnonymousClass1 implements Runnable { public final /* synthetic */ MenuItem val$item; public final /* synthetic */ MenuBuilder val$menu; public final /* synthetic */ CascadingMenuInfo val$nextInfo; public AnonymousClass1(CascadingMenuInfo cascadingMenuInfo, MenuItem menuItem, MenuBuilder menuBuilder) { this.val$nextInfo = cascadingMenuInfo; this.val$item = menuItem; this.val$menu = menuBuilder; } @Override // java.lang.Runnable public void run() { CascadingMenuInfo cascadingMenuInfo = this.val$nextInfo; if (cascadingMenuInfo != null) { CascadingMenuPopup.this.mShouldCloseImmediately = true; cascadingMenuInfo.menu.close(false); CascadingMenuPopup.this.mShouldCloseImmediately = false; } if (this.val$item.isEnabled() && this.val$item.hasSubMenu()) { this.val$menu.performItemAction(this.val$item, 4); } } } public AnonymousClass3() { } @Override // androidx.appcompat.widget.MenuItemHoverListener public void onItemHoverEnter(@NonNull MenuBuilder menuBuilder, @NonNull MenuItem menuItem) { CascadingMenuInfo cascadingMenuInfo = null; CascadingMenuPopup.this.mSubMenuHoverHandler.removeCallbacksAndMessages(null); int size = CascadingMenuPopup.this.mShowingMenus.size(); int i = 0; while (true) { if (i >= size) { i = -1; break; } else if (menuBuilder == CascadingMenuPopup.this.mShowingMenus.get(i).menu) { break; } else { i++; } } if (i != -1) { int i2 = i + 1; if (i2 < CascadingMenuPopup.this.mShowingMenus.size()) { cascadingMenuInfo = CascadingMenuPopup.this.mShowingMenus.get(i2); } CascadingMenuPopup.this.mSubMenuHoverHandler.postAtTime(new AnonymousClass1(cascadingMenuInfo, menuItem, menuBuilder), menuBuilder, SystemClock.uptimeMillis() + 200); } } @Override // androidx.appcompat.widget.MenuItemHoverListener public void onItemHoverExit(@NonNull MenuBuilder menuBuilder, @NonNull MenuItem menuItem) { CascadingMenuPopup.this.mSubMenuHoverHandler.removeCallbacksAndMessages(menuBuilder); } } public static class CascadingMenuInfo { public final MenuBuilder menu; public final int position; public final MenuPopupWindow window; public CascadingMenuInfo(@NonNull MenuPopupWindow menuPopupWindow, @NonNull MenuBuilder menuBuilder, int i) { this.window = menuPopupWindow; this.menu = menuBuilder; this.position = i; } public ListView getListView() { return this.window.getListView(); } } @Retention(RetentionPolicy.SOURCE) public @interface HorizPosition { } public CascadingMenuPopup(@NonNull Context context, @NonNull View view, @AttrRes int i, @StyleRes int i2, boolean z2) { this.mContext = context; this.mAnchorView = view; this.mPopupStyleAttr = i; this.mPopupStyleRes = i2; this.mOverflowOnly = z2; this.mForceShowIcon = false; this.mLastPosition = getInitialMenuPosition(); Resources resources = context.getResources(); this.mMenuMaxWidth = Math.max(resources.getDisplayMetrics().widthPixels / 2, resources.getDimensionPixelSize(R.dimen.abc_config_prefDialogWidth)); this.mSubMenuHoverHandler = new Handler(); } private MenuPopupWindow createPopupWindow() { MenuPopupWindow menuPopupWindow = new MenuPopupWindow(this.mContext, null, this.mPopupStyleAttr, this.mPopupStyleRes); menuPopupWindow.setHoverListener(this.mMenuItemHoverListener); menuPopupWindow.setOnItemClickListener(this); menuPopupWindow.setOnDismissListener(this); menuPopupWindow.setAnchorView(this.mAnchorView); menuPopupWindow.setDropDownGravity(this.mDropDownGravity); menuPopupWindow.setModal(true); menuPopupWindow.setInputMethodMode(2); return menuPopupWindow; } private int findIndexOfAddedMenu(@NonNull MenuBuilder menuBuilder) { int size = this.mShowingMenus.size(); for (int i = 0; i < size; i++) { if (menuBuilder == this.mShowingMenus.get(i).menu) { return i; } } return -1; } private MenuItem findMenuItemForSubmenu(@NonNull MenuBuilder menuBuilder, @NonNull MenuBuilder menuBuilder2) { int size = menuBuilder.size(); for (int i = 0; i < size; i++) { MenuItem item = menuBuilder.getItem(i); if (item.hasSubMenu() && menuBuilder2 == item.getSubMenu()) { return item; } } return null; } @Nullable private View findParentViewForSubmenu(@NonNull CascadingMenuInfo cascadingMenuInfo, @NonNull MenuBuilder menuBuilder) { int i; MenuAdapter menuAdapter; int firstVisiblePosition; MenuItem findMenuItemForSubmenu = findMenuItemForSubmenu(cascadingMenuInfo.menu, menuBuilder); if (findMenuItemForSubmenu == null) { return null; } ListView listView = cascadingMenuInfo.getListView(); ListAdapter adapter = listView.getAdapter(); int i2 = 0; if (adapter instanceof HeaderViewListAdapter) { HeaderViewListAdapter headerViewListAdapter = (HeaderViewListAdapter) adapter; i = headerViewListAdapter.getHeadersCount(); menuAdapter = (MenuAdapter) headerViewListAdapter.getWrappedAdapter(); } else { menuAdapter = (MenuAdapter) adapter; i = 0; } int count = menuAdapter.getCount(); while (true) { if (i2 >= count) { i2 = -1; break; } else if (findMenuItemForSubmenu == menuAdapter.getItem(i2)) { break; } else { i2++; } } if (i2 != -1 && (firstVisiblePosition = (i2 + i) - listView.getFirstVisiblePosition()) >= 0 && firstVisiblePosition < listView.getChildCount()) { return listView.getChildAt(firstVisiblePosition); } return null; } private int getInitialMenuPosition() { return ViewCompat.getLayoutDirection(this.mAnchorView) == 1 ? 0 : 1; } private int getNextMenuPosition(int i) { List list = this.mShowingMenus; ListView listView = list.get(list.size() - 1).getListView(); int[] iArr = new int[2]; listView.getLocationOnScreen(iArr); Rect rect = new Rect(); this.mShownAnchorView.getWindowVisibleDisplayFrame(rect); if (this.mLastPosition != 1) { return iArr[0] - i < 0 ? 1 : 0; } return (listView.getWidth() + iArr[0]) + i > rect.right ? 0 : 1; } private void showMenu(@NonNull MenuBuilder menuBuilder) { View view; CascadingMenuInfo cascadingMenuInfo; int i; int i2; int i3; LayoutInflater from = LayoutInflater.from(this.mContext); MenuAdapter menuAdapter = new MenuAdapter(menuBuilder, from, this.mOverflowOnly, ITEM_LAYOUT); if (!isShowing() && this.mForceShowIcon) { menuAdapter.setForceShowIcon(true); } else if (isShowing()) { menuAdapter.setForceShowIcon(MenuPopup.shouldPreserveIconSpacing(menuBuilder)); } int measureIndividualMenuWidth = MenuPopup.measureIndividualMenuWidth(menuAdapter, null, this.mContext, this.mMenuMaxWidth); MenuPopupWindow createPopupWindow = createPopupWindow(); createPopupWindow.setAdapter(menuAdapter); createPopupWindow.setContentWidth(measureIndividualMenuWidth); createPopupWindow.setDropDownGravity(this.mDropDownGravity); if (this.mShowingMenus.size() > 0) { List list = this.mShowingMenus; cascadingMenuInfo = list.get(list.size() - 1); view = findParentViewForSubmenu(cascadingMenuInfo, menuBuilder); } else { cascadingMenuInfo = null; view = null; } if (view != null) { createPopupWindow.setTouchModal(false); createPopupWindow.setEnterTransition(null); int nextMenuPosition = getNextMenuPosition(measureIndividualMenuWidth); boolean z2 = nextMenuPosition == 1; this.mLastPosition = nextMenuPosition; if (Build.VERSION.SDK_INT >= 26) { createPopupWindow.setAnchorView(view); i2 = 0; i = 0; } else { int[] iArr = new int[2]; this.mAnchorView.getLocationOnScreen(iArr); int[] iArr2 = new int[2]; view.getLocationOnScreen(iArr2); if ((this.mDropDownGravity & 7) == 5) { iArr[0] = this.mAnchorView.getWidth() + iArr[0]; iArr2[0] = view.getWidth() + iArr2[0]; } i2 = iArr2[1] - iArr[1]; i = iArr2[0] - iArr[0]; } if ((this.mDropDownGravity & 5) == 5) { if (z2) { i3 = i + measureIndividualMenuWidth; createPopupWindow.setHorizontalOffset(i3); createPopupWindow.setOverlapAnchor(true); createPopupWindow.setVerticalOffset(i2); } else { measureIndividualMenuWidth = view.getWidth(); } } else if (z2) { i3 = i + view.getWidth(); createPopupWindow.setHorizontalOffset(i3); createPopupWindow.setOverlapAnchor(true); createPopupWindow.setVerticalOffset(i2); } i3 = i - measureIndividualMenuWidth; createPopupWindow.setHorizontalOffset(i3); createPopupWindow.setOverlapAnchor(true); createPopupWindow.setVerticalOffset(i2); } else { if (this.mHasXOffset) { createPopupWindow.setHorizontalOffset(this.mXOffset); } if (this.mHasYOffset) { createPopupWindow.setVerticalOffset(this.mYOffset); } createPopupWindow.setEpicenterBounds(getEpicenterBounds()); } this.mShowingMenus.add(new CascadingMenuInfo(createPopupWindow, menuBuilder, this.mLastPosition)); createPopupWindow.show(); ListView listView = createPopupWindow.getListView(); listView.setOnKeyListener(this); if (cascadingMenuInfo == null && this.mShowTitle && menuBuilder.getHeaderTitle() != null) { FrameLayout frameLayout = (FrameLayout) from.inflate(R.layout.abc_popup_menu_header_item_layout, (ViewGroup) listView, false); frameLayout.setEnabled(false); ((TextView) frameLayout.findViewById(16908310)).setText(menuBuilder.getHeaderTitle()); listView.addHeaderView(frameLayout, null, false); createPopupWindow.show(); } } @Override // androidx.appcompat.view.menu.MenuPopup public void addMenu(MenuBuilder menuBuilder) { menuBuilder.addMenuPresenter(this, this.mContext); if (isShowing()) { showMenu(menuBuilder); } else { this.mPendingMenus.add(menuBuilder); } } @Override // androidx.appcompat.view.menu.MenuPopup public boolean closeMenuOnSubMenuOpened() { return false; } @Override // androidx.appcompat.view.menu.ShowableListMenu public void dismiss() { int size = this.mShowingMenus.size(); if (size > 0) { CascadingMenuInfo[] cascadingMenuInfoArr = (CascadingMenuInfo[]) this.mShowingMenus.toArray(new CascadingMenuInfo[size]); for (int i = size - 1; i >= 0; i--) { CascadingMenuInfo cascadingMenuInfo = cascadingMenuInfoArr[i]; if (cascadingMenuInfo.window.isShowing()) { cascadingMenuInfo.window.dismiss(); } } } } @Override // androidx.appcompat.view.menu.MenuPresenter public boolean flagActionItems() { return false; } @Override // androidx.appcompat.view.menu.ShowableListMenu public ListView getListView() { if (this.mShowingMenus.isEmpty()) { return null; } List list = this.mShowingMenus; return list.get(list.size() - 1).getListView(); } @Override // androidx.appcompat.view.menu.ShowableListMenu public boolean isShowing() { return this.mShowingMenus.size() > 0 && this.mShowingMenus.get(0).window.isShowing(); } @Override // androidx.appcompat.view.menu.MenuPresenter public void onCloseMenu(MenuBuilder menuBuilder, boolean z2) { int findIndexOfAddedMenu = findIndexOfAddedMenu(menuBuilder); if (findIndexOfAddedMenu >= 0) { int i = findIndexOfAddedMenu + 1; if (i < this.mShowingMenus.size()) { this.mShowingMenus.get(i).menu.close(false); } CascadingMenuInfo remove = this.mShowingMenus.remove(findIndexOfAddedMenu); remove.menu.removeMenuPresenter(this); if (this.mShouldCloseImmediately) { remove.window.setExitTransition(null); remove.window.setAnimationStyle(0); } remove.window.dismiss(); int size = this.mShowingMenus.size(); if (size > 0) { this.mLastPosition = this.mShowingMenus.get(size - 1).position; } else { this.mLastPosition = getInitialMenuPosition(); } if (size == 0) { dismiss(); MenuPresenter.Callback callback = this.mPresenterCallback; if (callback != null) { callback.onCloseMenu(menuBuilder, true); } ViewTreeObserver viewTreeObserver = this.mTreeObserver; if (viewTreeObserver != null) { if (viewTreeObserver.isAlive()) { this.mTreeObserver.removeGlobalOnLayoutListener(this.mGlobalLayoutListener); } this.mTreeObserver = null; } this.mShownAnchorView.removeOnAttachStateChangeListener(this.mAttachStateChangeListener); this.mOnDismissListener.onDismiss(); } else if (z2) { this.mShowingMenus.get(0).menu.close(false); } } } @Override // android.widget.PopupWindow.OnDismissListener public void onDismiss() { CascadingMenuInfo cascadingMenuInfo; int size = this.mShowingMenus.size(); int i = 0; while (true) { if (i >= size) { cascadingMenuInfo = null; break; } cascadingMenuInfo = this.mShowingMenus.get(i); if (!cascadingMenuInfo.window.isShowing()) { break; } i++; } if (cascadingMenuInfo != null) { cascadingMenuInfo.menu.close(false); } } @Override // android.view.View.OnKeyListener public boolean onKey(View view, int i, KeyEvent keyEvent) { if (keyEvent.getAction() != 1 || i != 82) { return false; } dismiss(); return true; } @Override // androidx.appcompat.view.menu.MenuPresenter public void onRestoreInstanceState(Parcelable parcelable) { } @Override // androidx.appcompat.view.menu.MenuPresenter public Parcelable onSaveInstanceState() { return null; } @Override // androidx.appcompat.view.menu.MenuPresenter public boolean onSubMenuSelected(SubMenuBuilder subMenuBuilder) { for (CascadingMenuInfo cascadingMenuInfo : this.mShowingMenus) { if (subMenuBuilder == cascadingMenuInfo.menu) { cascadingMenuInfo.getListView().requestFocus(); return true; } } if (!subMenuBuilder.hasVisibleItems()) { return false; } addMenu(subMenuBuilder); MenuPresenter.Callback callback = this.mPresenterCallback; if (callback != null) { callback.onOpenSubMenu(subMenuBuilder); } return true; } @Override // androidx.appcompat.view.menu.MenuPopup public void setAnchorView(@NonNull View view) { if (this.mAnchorView != view) { this.mAnchorView = view; this.mDropDownGravity = GravityCompat.getAbsoluteGravity(this.mRawDropDownGravity, ViewCompat.getLayoutDirection(view)); } } @Override // androidx.appcompat.view.menu.MenuPresenter public void setCallback(MenuPresenter.Callback callback) { this.mPresenterCallback = callback; } @Override // androidx.appcompat.view.menu.MenuPopup public void setForceShowIcon(boolean z2) { this.mForceShowIcon = z2; } @Override // androidx.appcompat.view.menu.MenuPopup public void setGravity(int i) { if (this.mRawDropDownGravity != i) { this.mRawDropDownGravity = i; this.mDropDownGravity = GravityCompat.getAbsoluteGravity(i, ViewCompat.getLayoutDirection(this.mAnchorView)); } } @Override // androidx.appcompat.view.menu.MenuPopup public void setHorizontalOffset(int i) { this.mHasXOffset = true; this.mXOffset = i; } @Override // androidx.appcompat.view.menu.MenuPopup public void setOnDismissListener(PopupWindow.OnDismissListener onDismissListener) { this.mOnDismissListener = onDismissListener; } @Override // androidx.appcompat.view.menu.MenuPopup public void setShowTitle(boolean z2) { this.mShowTitle = z2; } @Override // androidx.appcompat.view.menu.MenuPopup public void setVerticalOffset(int i) { this.mHasYOffset = true; this.mYOffset = i; } @Override // androidx.appcompat.view.menu.ShowableListMenu public void show() { if (!isShowing()) { for (MenuBuilder menuBuilder : this.mPendingMenus) { showMenu(menuBuilder); } this.mPendingMenus.clear(); View view = this.mAnchorView; this.mShownAnchorView = view; if (view != null) { boolean z2 = this.mTreeObserver == null; ViewTreeObserver viewTreeObserver = view.getViewTreeObserver(); this.mTreeObserver = viewTreeObserver; if (z2) { viewTreeObserver.addOnGlobalLayoutListener(this.mGlobalLayoutListener); } this.mShownAnchorView.addOnAttachStateChangeListener(this.mAttachStateChangeListener); } } } @Override // androidx.appcompat.view.menu.MenuPresenter public void updateMenuView(boolean z2) { for (CascadingMenuInfo cascadingMenuInfo : this.mShowingMenus) { MenuPopup.toMenuAdapter(cascadingMenuInfo.getListView().getAdapter()).notifyDataSetChanged(); } } }