package androidx.appcompat.view.menu; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Parcelable; import android.util.SparseArray; import android.view.ContextMenu; import android.view.KeyCharacterMap; import android.view.KeyEvent; import android.view.MenuItem; import android.view.SubMenu; import android.view.View; import android.view.ViewConfiguration; import androidx.annotation.NonNull; import androidx.annotation.RestrictTo; import androidx.core.content.ContextCompat; import androidx.core.internal.view.SupportMenu; import androidx.core.view.ActionProvider; import androidx.core.view.ViewConfigurationCompat; import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; @RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX}) public class MenuBuilder implements SupportMenu { private static final String ACTION_VIEW_STATES_KEY = "android:menu:actionviewstates"; private static final String EXPANDED_ACTION_VIEW_ID = "android:menu:expandedactionview"; private static final String PRESENTER_KEY = "android:menu:presenters"; private static final String TAG = "MenuBuilder"; private static final int[] sCategoryToOrder = {1, 4, 5, 3, 2, 0}; private ArrayList mActionItems; private Callback mCallback; private final Context mContext; private ContextMenu.ContextMenuInfo mCurrentMenuInfo; private int mDefaultShowAsAction = 0; private MenuItemImpl mExpandedItem; private boolean mGroupDividerEnabled = false; public Drawable mHeaderIcon; public CharSequence mHeaderTitle; public View mHeaderView; private boolean mIsActionItemsStale; private boolean mIsClosing = false; private boolean mIsVisibleItemsStale; private ArrayList mItems; private boolean mItemsChangedWhileDispatchPrevented = false; private ArrayList mNonActionItems; private boolean mOptionalIconsVisible = false; private boolean mOverrideVisibleItems; private CopyOnWriteArrayList> mPresenters = new CopyOnWriteArrayList<>(); private boolean mPreventDispatchingItemsChanged = false; private boolean mQwertyMode; private final Resources mResources; private boolean mShortcutsVisible; private boolean mStructureChangedWhileDispatchPrevented = false; private ArrayList mTempShortcutItemList = new ArrayList<>(); private ArrayList mVisibleItems; @RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX}) public interface Callback { boolean onMenuItemSelected(@NonNull MenuBuilder menuBuilder, @NonNull MenuItem menuItem); void onMenuModeChange(@NonNull MenuBuilder menuBuilder); } @RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX}) public interface ItemInvoker { boolean invokeItem(MenuItemImpl menuItemImpl); } public MenuBuilder(Context context) { this.mContext = context; this.mResources = context.getResources(); this.mItems = new ArrayList<>(); this.mVisibleItems = new ArrayList<>(); this.mIsVisibleItemsStale = true; this.mActionItems = new ArrayList<>(); this.mNonActionItems = new ArrayList<>(); this.mIsActionItemsStale = true; setShortcutsVisibleInner(true); } private MenuItemImpl createNewMenuItem(int i, int i2, int i3, int i4, CharSequence charSequence, int i5) { return new MenuItemImpl(this, i, i2, i3, i4, charSequence, i5); } private void dispatchPresenterUpdate(boolean z2) { if (!this.mPresenters.isEmpty()) { stopDispatchingItemsChanged(); Iterator> it = this.mPresenters.iterator(); while (it.hasNext()) { WeakReference next = it.next(); MenuPresenter menuPresenter = next.get(); if (menuPresenter == null) { this.mPresenters.remove(next); } else { menuPresenter.updateMenuView(z2); } } startDispatchingItemsChanged(); } } private void dispatchRestoreInstanceState(Bundle bundle) { Parcelable parcelable; SparseArray sparseParcelableArray = bundle.getSparseParcelableArray(PRESENTER_KEY); if (sparseParcelableArray != null && !this.mPresenters.isEmpty()) { Iterator> it = this.mPresenters.iterator(); while (it.hasNext()) { WeakReference next = it.next(); MenuPresenter menuPresenter = next.get(); if (menuPresenter == null) { this.mPresenters.remove(next); } else { int id2 = menuPresenter.getId(); if (id2 > 0 && (parcelable = (Parcelable) sparseParcelableArray.get(id2)) != null) { menuPresenter.onRestoreInstanceState(parcelable); } } } } } private void dispatchSaveInstanceState(Bundle bundle) { Parcelable onSaveInstanceState; if (!this.mPresenters.isEmpty()) { SparseArray sparseArray = new SparseArray<>(); Iterator> it = this.mPresenters.iterator(); while (it.hasNext()) { WeakReference next = it.next(); MenuPresenter menuPresenter = next.get(); if (menuPresenter == null) { this.mPresenters.remove(next); } else { int id2 = menuPresenter.getId(); if (id2 > 0 && (onSaveInstanceState = menuPresenter.onSaveInstanceState()) != null) { sparseArray.put(id2, onSaveInstanceState); } } } bundle.putSparseParcelableArray(PRESENTER_KEY, sparseArray); } } private boolean dispatchSubMenuSelected(SubMenuBuilder subMenuBuilder, MenuPresenter menuPresenter) { boolean z2 = false; if (this.mPresenters.isEmpty()) { return false; } if (menuPresenter != null) { z2 = menuPresenter.onSubMenuSelected(subMenuBuilder); } Iterator> it = this.mPresenters.iterator(); while (it.hasNext()) { WeakReference next = it.next(); MenuPresenter menuPresenter2 = next.get(); if (menuPresenter2 == null) { this.mPresenters.remove(next); } else if (!z2) { z2 = menuPresenter2.onSubMenuSelected(subMenuBuilder); } } return z2; } private static int findInsertIndex(ArrayList arrayList, int i) { for (int size = arrayList.size() - 1; size >= 0; size--) { if (arrayList.get(size).getOrdering() <= i) { return size + 1; } } return 0; } private static int getOrdering(int i) { int i2 = (-65536 & i) >> 16; if (i2 >= 0) { int[] iArr = sCategoryToOrder; if (i2 < iArr.length) { return (i & 65535) | (iArr[i2] << 16); } } throw new IllegalArgumentException("order does not contain a valid category."); } private void removeItemAtInt(int i, boolean z2) { if (i >= 0 && i < this.mItems.size()) { this.mItems.remove(i); if (z2) { onItemsChanged(true); } } } private void setHeaderInternal(int i, CharSequence charSequence, int i2, Drawable drawable, View view) { Resources resources = getResources(); if (view != null) { this.mHeaderView = view; this.mHeaderTitle = null; this.mHeaderIcon = null; } else { if (i > 0) { this.mHeaderTitle = resources.getText(i); } else if (charSequence != null) { this.mHeaderTitle = charSequence; } if (i2 > 0) { this.mHeaderIcon = ContextCompat.getDrawable(getContext(), i2); } else if (drawable != null) { this.mHeaderIcon = drawable; } this.mHeaderView = null; } onItemsChanged(false); } private void setShortcutsVisibleInner(boolean z2) { boolean z3 = true; if (!z2 || this.mResources.getConfiguration().keyboard == 1 || !ViewConfigurationCompat.shouldShowMenuShortcutsWhenKeyboardPresent(ViewConfiguration.get(this.mContext), this.mContext)) { z3 = false; } this.mShortcutsVisible = z3; } @Override // android.view.Menu public MenuItem add(int i) { return addInternal(0, 0, 0, this.mResources.getString(i)); } @Override // android.view.Menu public MenuItem add(int i, int i2, int i3, int i4) { return addInternal(i, i2, i3, this.mResources.getString(i4)); } @Override // android.view.Menu public MenuItem add(int i, int i2, int i3, CharSequence charSequence) { return addInternal(i, i2, i3, charSequence); } @Override // android.view.Menu public MenuItem add(CharSequence charSequence) { return addInternal(0, 0, 0, charSequence); } @Override // android.view.Menu public int addIntentOptions(int i, int i2, int i3, ComponentName componentName, Intent[] intentArr, Intent intent, int i4, MenuItem[] menuItemArr) { int i5; PackageManager packageManager = this.mContext.getPackageManager(); List queryIntentActivityOptions = packageManager.queryIntentActivityOptions(componentName, intentArr, intent, 0); int size = queryIntentActivityOptions != null ? queryIntentActivityOptions.size() : 0; if ((i4 & 1) == 0) { removeGroup(i); } for (int i6 = 0; i6 < size; i6++) { ResolveInfo resolveInfo = queryIntentActivityOptions.get(i6); int i7 = resolveInfo.specificIndex; Intent intent2 = new Intent(i7 < 0 ? intent : intentArr[i7]); ActivityInfo activityInfo = resolveInfo.activityInfo; intent2.setComponent(new ComponentName(activityInfo.applicationInfo.packageName, activityInfo.name)); MenuItem intent3 = add(i, i2, i3, resolveInfo.loadLabel(packageManager)).setIcon(resolveInfo.loadIcon(packageManager)).setIntent(intent2); if (menuItemArr != null && (i5 = resolveInfo.specificIndex) >= 0) { menuItemArr[i5] = intent3; } } return size; } public MenuItem addInternal(int i, int i2, int i3, CharSequence charSequence) { int ordering = getOrdering(i3); MenuItemImpl createNewMenuItem = createNewMenuItem(i, i2, i3, ordering, charSequence, this.mDefaultShowAsAction); ContextMenu.ContextMenuInfo contextMenuInfo = this.mCurrentMenuInfo; if (contextMenuInfo != null) { createNewMenuItem.setMenuInfo(contextMenuInfo); } ArrayList arrayList = this.mItems; arrayList.add(findInsertIndex(arrayList, ordering), createNewMenuItem); onItemsChanged(true); return createNewMenuItem; } public void addMenuPresenter(MenuPresenter menuPresenter) { addMenuPresenter(menuPresenter, this.mContext); } public void addMenuPresenter(MenuPresenter menuPresenter, Context context) { this.mPresenters.add(new WeakReference<>(menuPresenter)); menuPresenter.initForMenu(context, this); this.mIsActionItemsStale = true; } @Override // android.view.Menu public SubMenu addSubMenu(int i) { return addSubMenu(0, 0, 0, this.mResources.getString(i)); } @Override // android.view.Menu public SubMenu addSubMenu(int i, int i2, int i3, int i4) { return addSubMenu(i, i2, i3, this.mResources.getString(i4)); } @Override // android.view.Menu public SubMenu addSubMenu(int i, int i2, int i3, CharSequence charSequence) { MenuItemImpl menuItemImpl = (MenuItemImpl) addInternal(i, i2, i3, charSequence); SubMenuBuilder subMenuBuilder = new SubMenuBuilder(this.mContext, this, menuItemImpl); menuItemImpl.setSubMenu(subMenuBuilder); return subMenuBuilder; } @Override // android.view.Menu public SubMenu addSubMenu(CharSequence charSequence) { return addSubMenu(0, 0, 0, charSequence); } public void changeMenuMode() { Callback callback = this.mCallback; if (callback != null) { callback.onMenuModeChange(this); } } @Override // android.view.Menu public void clear() { MenuItemImpl menuItemImpl = this.mExpandedItem; if (menuItemImpl != null) { collapseItemActionView(menuItemImpl); } this.mItems.clear(); onItemsChanged(true); } public void clearAll() { this.mPreventDispatchingItemsChanged = true; clear(); clearHeader(); this.mPresenters.clear(); this.mPreventDispatchingItemsChanged = false; this.mItemsChangedWhileDispatchPrevented = false; this.mStructureChangedWhileDispatchPrevented = false; onItemsChanged(true); } public void clearHeader() { this.mHeaderIcon = null; this.mHeaderTitle = null; this.mHeaderView = null; onItemsChanged(false); } @Override // android.view.Menu public void close() { close(true); } public final void close(boolean z2) { if (!this.mIsClosing) { this.mIsClosing = true; Iterator> it = this.mPresenters.iterator(); while (it.hasNext()) { WeakReference next = it.next(); MenuPresenter menuPresenter = next.get(); if (menuPresenter == null) { this.mPresenters.remove(next); } else { menuPresenter.onCloseMenu(this, z2); } } this.mIsClosing = false; } } public boolean collapseItemActionView(MenuItemImpl menuItemImpl) { boolean z2 = false; if (!this.mPresenters.isEmpty() && this.mExpandedItem == menuItemImpl) { stopDispatchingItemsChanged(); Iterator> it = this.mPresenters.iterator(); while (it.hasNext()) { WeakReference next = it.next(); MenuPresenter menuPresenter = next.get(); if (menuPresenter == null) { this.mPresenters.remove(next); } else { z2 = menuPresenter.collapseItemActionView(this, menuItemImpl); if (z2) { break; } } } startDispatchingItemsChanged(); if (z2) { this.mExpandedItem = null; } } return z2; } public boolean dispatchMenuItemSelected(@NonNull MenuBuilder menuBuilder, @NonNull MenuItem menuItem) { Callback callback = this.mCallback; return callback != null && callback.onMenuItemSelected(menuBuilder, menuItem); } public boolean expandItemActionView(MenuItemImpl menuItemImpl) { boolean z2 = false; if (this.mPresenters.isEmpty()) { return false; } stopDispatchingItemsChanged(); Iterator> it = this.mPresenters.iterator(); while (it.hasNext()) { WeakReference next = it.next(); MenuPresenter menuPresenter = next.get(); if (menuPresenter == null) { this.mPresenters.remove(next); } else { z2 = menuPresenter.expandItemActionView(this, menuItemImpl); if (z2) { break; } } } startDispatchingItemsChanged(); if (z2) { this.mExpandedItem = menuItemImpl; } return z2; } public int findGroupIndex(int i) { return findGroupIndex(i, 0); } public int findGroupIndex(int i, int i2) { int size = size(); if (i2 < 0) { i2 = 0; } while (i2 < size) { if (this.mItems.get(i2).getGroupId() == i) { return i2; } i2++; } return -1; } @Override // android.view.Menu public MenuItem findItem(int i) { MenuItem findItem; int size = size(); for (int i2 = 0; i2 < size; i2++) { MenuItemImpl menuItemImpl = this.mItems.get(i2); if (menuItemImpl.getItemId() == i) { return menuItemImpl; } if (menuItemImpl.hasSubMenu() && (findItem = menuItemImpl.getSubMenu().findItem(i)) != null) { return findItem; } } return null; } public int findItemIndex(int i) { int size = size(); for (int i2 = 0; i2 < size; i2++) { if (this.mItems.get(i2).getItemId() == i) { return i2; } } return -1; } public MenuItemImpl findItemWithShortcutForKey(int i, KeyEvent keyEvent) { ArrayList arrayList = this.mTempShortcutItemList; arrayList.clear(); findItemsWithShortcutForKey(arrayList, i, keyEvent); if (arrayList.isEmpty()) { return null; } int metaState = keyEvent.getMetaState(); KeyCharacterMap.KeyData keyData = new KeyCharacterMap.KeyData(); keyEvent.getKeyData(keyData); int size = arrayList.size(); if (size == 1) { return arrayList.get(0); } boolean isQwertyMode = isQwertyMode(); for (int i2 = 0; i2 < size; i2++) { MenuItemImpl menuItemImpl = arrayList.get(i2); char alphabeticShortcut = isQwertyMode ? menuItemImpl.getAlphabeticShortcut() : menuItemImpl.getNumericShortcut(); char[] cArr = keyData.meta; if ((alphabeticShortcut == cArr[0] && (metaState & 2) == 0) || ((alphabeticShortcut == cArr[2] && (metaState & 2) != 0) || (isQwertyMode && alphabeticShortcut == '\b' && i == 67))) { return menuItemImpl; } } return null; } public void findItemsWithShortcutForKey(List list, int i, KeyEvent keyEvent) { boolean isQwertyMode = isQwertyMode(); int modifiers = keyEvent.getModifiers(); KeyCharacterMap.KeyData keyData = new KeyCharacterMap.KeyData(); if (keyEvent.getKeyData(keyData) || i == 67) { int size = this.mItems.size(); for (int i2 = 0; i2 < size; i2++) { MenuItemImpl menuItemImpl = this.mItems.get(i2); if (menuItemImpl.hasSubMenu()) { ((MenuBuilder) menuItemImpl.getSubMenu()).findItemsWithShortcutForKey(list, i, keyEvent); } char alphabeticShortcut = isQwertyMode ? menuItemImpl.getAlphabeticShortcut() : menuItemImpl.getNumericShortcut(); if (((modifiers & SupportMenu.SUPPORTED_MODIFIERS_MASK) == ((isQwertyMode ? menuItemImpl.getAlphabeticModifiers() : menuItemImpl.getNumericModifiers()) & SupportMenu.SUPPORTED_MODIFIERS_MASK)) && alphabeticShortcut != 0) { char[] cArr = keyData.meta; if ((alphabeticShortcut == cArr[0] || alphabeticShortcut == cArr[2] || (isQwertyMode && alphabeticShortcut == '\b' && i == 67)) && menuItemImpl.isEnabled()) { list.add(menuItemImpl); } } } } } public void flagActionItems() { ArrayList visibleItems = getVisibleItems(); if (this.mIsActionItemsStale) { Iterator> it = this.mPresenters.iterator(); boolean z2 = false; while (it.hasNext()) { WeakReference next = it.next(); MenuPresenter menuPresenter = next.get(); if (menuPresenter == null) { this.mPresenters.remove(next); } else { z2 |= menuPresenter.flagActionItems(); } } if (z2) { this.mActionItems.clear(); this.mNonActionItems.clear(); int size = visibleItems.size(); for (int i = 0; i < size; i++) { MenuItemImpl menuItemImpl = visibleItems.get(i); if (menuItemImpl.isActionButton()) { this.mActionItems.add(menuItemImpl); } else { this.mNonActionItems.add(menuItemImpl); } } } else { this.mActionItems.clear(); this.mNonActionItems.clear(); this.mNonActionItems.addAll(getVisibleItems()); } this.mIsActionItemsStale = false; } } public ArrayList getActionItems() { flagActionItems(); return this.mActionItems; } public String getActionViewStatesKey() { return ACTION_VIEW_STATES_KEY; } public Context getContext() { return this.mContext; } public MenuItemImpl getExpandedItem() { return this.mExpandedItem; } public Drawable getHeaderIcon() { return this.mHeaderIcon; } public CharSequence getHeaderTitle() { return this.mHeaderTitle; } public View getHeaderView() { return this.mHeaderView; } @Override // android.view.Menu public MenuItem getItem(int i) { return this.mItems.get(i); } public ArrayList getNonActionItems() { flagActionItems(); return this.mNonActionItems; } public boolean getOptionalIconsVisible() { return this.mOptionalIconsVisible; } public Resources getResources() { return this.mResources; } public MenuBuilder getRootMenu() { return this; } @NonNull public ArrayList getVisibleItems() { if (!this.mIsVisibleItemsStale) { return this.mVisibleItems; } this.mVisibleItems.clear(); int size = this.mItems.size(); for (int i = 0; i < size; i++) { MenuItemImpl menuItemImpl = this.mItems.get(i); if (menuItemImpl.isVisible()) { this.mVisibleItems.add(menuItemImpl); } } this.mIsVisibleItemsStale = false; this.mIsActionItemsStale = true; return this.mVisibleItems; } @Override // android.view.Menu public boolean hasVisibleItems() { if (this.mOverrideVisibleItems) { return true; } int size = size(); for (int i = 0; i < size; i++) { if (this.mItems.get(i).isVisible()) { return true; } } return false; } public boolean isGroupDividerEnabled() { return this.mGroupDividerEnabled; } public boolean isQwertyMode() { return this.mQwertyMode; } @Override // android.view.Menu public boolean isShortcutKey(int i, KeyEvent keyEvent) { return findItemWithShortcutForKey(i, keyEvent) != null; } public boolean isShortcutsVisible() { return this.mShortcutsVisible; } public void onItemActionRequestChanged(MenuItemImpl menuItemImpl) { this.mIsActionItemsStale = true; onItemsChanged(true); } public void onItemVisibleChanged(MenuItemImpl menuItemImpl) { this.mIsVisibleItemsStale = true; onItemsChanged(true); } public void onItemsChanged(boolean z2) { if (!this.mPreventDispatchingItemsChanged) { if (z2) { this.mIsVisibleItemsStale = true; this.mIsActionItemsStale = true; } dispatchPresenterUpdate(z2); return; } this.mItemsChangedWhileDispatchPrevented = true; if (z2) { this.mStructureChangedWhileDispatchPrevented = true; } } @Override // android.view.Menu public boolean performIdentifierAction(int i, int i2) { return performItemAction(findItem(i), i2); } public boolean performItemAction(MenuItem menuItem, int i) { return performItemAction(menuItem, null, i); } public boolean performItemAction(MenuItem menuItem, MenuPresenter menuPresenter, int i) { MenuItemImpl menuItemImpl = (MenuItemImpl) menuItem; if (menuItemImpl == null || !menuItemImpl.isEnabled()) { return false; } boolean invoke = menuItemImpl.invoke(); ActionProvider supportActionProvider = menuItemImpl.getSupportActionProvider(); boolean z2 = supportActionProvider != null && supportActionProvider.hasSubMenu(); if (menuItemImpl.hasCollapsibleActionView()) { invoke |= menuItemImpl.expandActionView(); if (invoke) { close(true); } } else if (menuItemImpl.hasSubMenu() || z2) { if ((i & 4) == 0) { close(false); } if (!menuItemImpl.hasSubMenu()) { menuItemImpl.setSubMenu(new SubMenuBuilder(getContext(), this, menuItemImpl)); } SubMenuBuilder subMenuBuilder = (SubMenuBuilder) menuItemImpl.getSubMenu(); if (z2) { supportActionProvider.onPrepareSubMenu(subMenuBuilder); } invoke |= dispatchSubMenuSelected(subMenuBuilder, menuPresenter); if (!invoke) { close(true); } } else if ((i & 1) == 0) { close(true); } return invoke; } @Override // android.view.Menu public boolean performShortcut(int i, KeyEvent keyEvent, int i2) { MenuItemImpl findItemWithShortcutForKey = findItemWithShortcutForKey(i, keyEvent); boolean performItemAction = findItemWithShortcutForKey != null ? performItemAction(findItemWithShortcutForKey, i2) : false; if ((i2 & 2) != 0) { close(true); } return performItemAction; } @Override // android.view.Menu public void removeGroup(int i) { int findGroupIndex = findGroupIndex(i); if (findGroupIndex >= 0) { int size = this.mItems.size() - findGroupIndex; int i2 = 0; while (true) { int i3 = i2 + 1; if (i2 >= size || this.mItems.get(findGroupIndex).getGroupId() != i) { break; } removeItemAtInt(findGroupIndex, false); i2 = i3; } onItemsChanged(true); } } @Override // android.view.Menu public void removeItem(int i) { removeItemAtInt(findItemIndex(i), true); } public void removeItemAt(int i) { removeItemAtInt(i, true); } public void removeMenuPresenter(MenuPresenter menuPresenter) { Iterator> it = this.mPresenters.iterator(); while (it.hasNext()) { WeakReference next = it.next(); MenuPresenter menuPresenter2 = next.get(); if (menuPresenter2 == null || menuPresenter2 == menuPresenter) { this.mPresenters.remove(next); } } } public void restoreActionViewStates(Bundle bundle) { MenuItem findItem; if (bundle != null) { SparseArray sparseParcelableArray = bundle.getSparseParcelableArray(getActionViewStatesKey()); int size = size(); for (int i = 0; i < size; i++) { MenuItem item = getItem(i); View actionView = item.getActionView(); if (!(actionView == null || actionView.getId() == -1)) { actionView.restoreHierarchyState(sparseParcelableArray); } if (item.hasSubMenu()) { ((SubMenuBuilder) item.getSubMenu()).restoreActionViewStates(bundle); } } int i2 = bundle.getInt(EXPANDED_ACTION_VIEW_ID); if (i2 > 0 && (findItem = findItem(i2)) != null) { findItem.expandActionView(); } } } public void restorePresenterStates(Bundle bundle) { dispatchRestoreInstanceState(bundle); } public void saveActionViewStates(Bundle bundle) { int size = size(); SparseArray sparseArray = null; for (int i = 0; i < size; i++) { MenuItem item = getItem(i); View actionView = item.getActionView(); if (!(actionView == null || actionView.getId() == -1)) { if (sparseArray == null) { sparseArray = new SparseArray<>(); } actionView.saveHierarchyState(sparseArray); if (item.isActionViewExpanded()) { bundle.putInt(EXPANDED_ACTION_VIEW_ID, item.getItemId()); } } if (item.hasSubMenu()) { ((SubMenuBuilder) item.getSubMenu()).saveActionViewStates(bundle); } } if (sparseArray != null) { bundle.putSparseParcelableArray(getActionViewStatesKey(), sparseArray); } } public void savePresenterStates(Bundle bundle) { dispatchSaveInstanceState(bundle); } public void setCallback(Callback callback) { this.mCallback = callback; } public void setCurrentMenuInfo(ContextMenu.ContextMenuInfo contextMenuInfo) { this.mCurrentMenuInfo = contextMenuInfo; } public MenuBuilder setDefaultShowAsAction(int i) { this.mDefaultShowAsAction = i; return this; } public void setExclusiveItemChecked(MenuItem menuItem) { int groupId = menuItem.getGroupId(); int size = this.mItems.size(); stopDispatchingItemsChanged(); for (int i = 0; i < size; i++) { MenuItemImpl menuItemImpl = this.mItems.get(i); if (menuItemImpl.getGroupId() == groupId && menuItemImpl.isExclusiveCheckable() && menuItemImpl.isCheckable()) { menuItemImpl.setCheckedInt(menuItemImpl == menuItem); } } startDispatchingItemsChanged(); } @Override // android.view.Menu public void setGroupCheckable(int i, boolean z2, boolean z3) { int size = this.mItems.size(); for (int i2 = 0; i2 < size; i2++) { MenuItemImpl menuItemImpl = this.mItems.get(i2); if (menuItemImpl.getGroupId() == i) { menuItemImpl.setExclusiveCheckable(z3); menuItemImpl.setCheckable(z2); } } } @Override // androidx.core.internal.view.SupportMenu, android.view.Menu public void setGroupDividerEnabled(boolean z2) { this.mGroupDividerEnabled = z2; } @Override // android.view.Menu public void setGroupEnabled(int i, boolean z2) { int size = this.mItems.size(); for (int i2 = 0; i2 < size; i2++) { MenuItemImpl menuItemImpl = this.mItems.get(i2); if (menuItemImpl.getGroupId() == i) { menuItemImpl.setEnabled(z2); } } } @Override // android.view.Menu public void setGroupVisible(int i, boolean z2) { int size = this.mItems.size(); boolean z3 = false; for (int i2 = 0; i2 < size; i2++) { MenuItemImpl menuItemImpl = this.mItems.get(i2); if (menuItemImpl.getGroupId() == i && menuItemImpl.setVisibleInt(z2)) { z3 = true; } } if (z3) { onItemsChanged(true); } } public MenuBuilder setHeaderIconInt(int i) { setHeaderInternal(0, null, i, null, null); return this; } public MenuBuilder setHeaderIconInt(Drawable drawable) { setHeaderInternal(0, null, 0, drawable, null); return this; } public MenuBuilder setHeaderTitleInt(int i) { setHeaderInternal(i, null, 0, null, null); return this; } public MenuBuilder setHeaderTitleInt(CharSequence charSequence) { setHeaderInternal(0, charSequence, 0, null, null); return this; } public MenuBuilder setHeaderViewInt(View view) { setHeaderInternal(0, null, 0, null, view); return this; } public void setOptionalIconsVisible(boolean z2) { this.mOptionalIconsVisible = z2; } public void setOverrideVisibleItems(boolean z2) { this.mOverrideVisibleItems = z2; } @Override // android.view.Menu public void setQwertyMode(boolean z2) { this.mQwertyMode = z2; onItemsChanged(false); } public void setShortcutsVisible(boolean z2) { if (this.mShortcutsVisible != z2) { setShortcutsVisibleInner(z2); onItemsChanged(false); } } @Override // android.view.Menu public int size() { return this.mItems.size(); } public void startDispatchingItemsChanged() { this.mPreventDispatchingItemsChanged = false; if (this.mItemsChangedWhileDispatchPrevented) { this.mItemsChangedWhileDispatchPrevented = false; onItemsChanged(this.mStructureChangedWhileDispatchPrevented); } } public void stopDispatchingItemsChanged() { if (!this.mPreventDispatchingItemsChanged) { this.mPreventDispatchingItemsChanged = true; this.mItemsChangedWhileDispatchPrevented = false; this.mStructureChangedWhileDispatchPrevented = false; } } }