Rabbit-R1/original r1/java/sources/androidx/appcompat/view/menu/MenuBuilder.java

998 lines
35 KiB
Java
Raw Normal View History

2024-05-21 21:08:36 +00:00
package androidx.appcompat.view.menu;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
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 androidx.core.content.ContextCompat;
import androidx.core.internal.view.SupportMenu;
import androidx.core.view.ActionProvider;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
/* loaded from: classes.dex */
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 Callback mCallback;
private final Context mContext;
private ContextMenu.ContextMenuInfo mCurrentMenuInfo;
private MenuItemImpl mExpandedItem;
Drawable mHeaderIcon;
CharSequence mHeaderTitle;
View mHeaderView;
private boolean mOverrideVisibleItems;
private boolean mQwertyMode;
private final Resources mResources;
private boolean mShortcutsVisible;
private int mDefaultShowAsAction = 0;
private boolean mPreventDispatchingItemsChanged = false;
private boolean mItemsChangedWhileDispatchPrevented = false;
private boolean mStructureChangedWhileDispatchPrevented = false;
private boolean mOptionalIconsVisible = false;
private boolean mIsClosing = false;
private ArrayList<MenuItemImpl> mTempShortcutItemList = new ArrayList<>();
private CopyOnWriteArrayList<WeakReference<MenuPresenter>> mPresenters = new CopyOnWriteArrayList<>();
private boolean mGroupDividerEnabled = false;
private ArrayList<MenuItemImpl> mItems = new ArrayList<>();
private ArrayList<MenuItemImpl> mVisibleItems = new ArrayList<>();
private boolean mIsVisibleItemsStale = true;
private ArrayList<MenuItemImpl> mActionItems = new ArrayList<>();
private ArrayList<MenuItemImpl> mNonActionItems = new ArrayList<>();
private boolean mIsActionItemsStale = true;
/* loaded from: classes.dex */
public interface Callback {
boolean onMenuItemSelected(MenuBuilder menuBuilder, MenuItem menuItem);
void onMenuModeChange(MenuBuilder menuBuilder);
}
/* loaded from: classes.dex */
public interface ItemInvoker {
boolean invokeItem(MenuItemImpl menuItemImpl);
}
/* JADX INFO: Access modifiers changed from: protected */
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;
}
/* JADX INFO: Access modifiers changed from: package-private */
public boolean getOptionalIconsVisible() {
return this.mOptionalIconsVisible;
}
Resources getResources() {
return this.mResources;
}
public MenuBuilder getRootMenu() {
return this;
}
public boolean isGroupDividerEnabled() {
return this.mGroupDividerEnabled;
}
/* JADX INFO: Access modifiers changed from: package-private */
public boolean isQwertyMode() {
return this.mQwertyMode;
}
public boolean isShortcutsVisible() {
return this.mShortcutsVisible;
}
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;
}
@Override // androidx.core.internal.view.SupportMenu, android.view.Menu
public void setGroupDividerEnabled(boolean z) {
this.mGroupDividerEnabled = z;
}
public void setOptionalIconsVisible(boolean z) {
this.mOptionalIconsVisible = z;
}
public void setOverrideVisibleItems(boolean z) {
this.mOverrideVisibleItems = z;
}
public void stopDispatchingItemsChanged() {
if (this.mPreventDispatchingItemsChanged) {
return;
}
this.mPreventDispatchingItemsChanged = true;
this.mItemsChangedWhileDispatchPrevented = false;
this.mStructureChangedWhileDispatchPrevented = false;
}
public MenuBuilder(Context context) {
this.mContext = context;
this.mResources = context.getResources();
setShortcutsVisibleInner(true);
}
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;
}
public void removeMenuPresenter(MenuPresenter menuPresenter) {
Iterator<WeakReference<MenuPresenter>> it = this.mPresenters.iterator();
while (it.hasNext()) {
WeakReference<MenuPresenter> next = it.next();
MenuPresenter menuPresenter2 = next.get();
if (menuPresenter2 == null || menuPresenter2 == menuPresenter) {
this.mPresenters.remove(next);
}
}
}
private void dispatchPresenterUpdate(boolean z) {
if (this.mPresenters.isEmpty()) {
return;
}
stopDispatchingItemsChanged();
Iterator<WeakReference<MenuPresenter>> it = this.mPresenters.iterator();
while (it.hasNext()) {
WeakReference<MenuPresenter> next = it.next();
MenuPresenter menuPresenter = next.get();
if (menuPresenter == null) {
this.mPresenters.remove(next);
} else {
menuPresenter.updateMenuView(z);
}
}
startDispatchingItemsChanged();
}
private boolean dispatchSubMenuSelected(SubMenuBuilder subMenuBuilder, MenuPresenter menuPresenter) {
if (this.mPresenters.isEmpty()) {
return false;
}
boolean onSubMenuSelected = menuPresenter != null ? menuPresenter.onSubMenuSelected(subMenuBuilder) : false;
Iterator<WeakReference<MenuPresenter>> it = this.mPresenters.iterator();
while (it.hasNext()) {
WeakReference<MenuPresenter> next = it.next();
MenuPresenter menuPresenter2 = next.get();
if (menuPresenter2 == null) {
this.mPresenters.remove(next);
} else if (!onSubMenuSelected) {
onSubMenuSelected = menuPresenter2.onSubMenuSelected(subMenuBuilder);
}
}
return onSubMenuSelected;
}
private void dispatchSaveInstanceState(Bundle bundle) {
Parcelable onSaveInstanceState;
if (this.mPresenters.isEmpty()) {
return;
}
SparseArray<? extends Parcelable> sparseArray = new SparseArray<>();
Iterator<WeakReference<MenuPresenter>> it = this.mPresenters.iterator();
while (it.hasNext()) {
WeakReference<MenuPresenter> next = it.next();
MenuPresenter menuPresenter = next.get();
if (menuPresenter == null) {
this.mPresenters.remove(next);
} else {
int id = menuPresenter.getId();
if (id > 0 && (onSaveInstanceState = menuPresenter.onSaveInstanceState()) != null) {
sparseArray.put(id, onSaveInstanceState);
}
}
}
bundle.putSparseParcelableArray(PRESENTER_KEY, sparseArray);
}
private void dispatchRestoreInstanceState(Bundle bundle) {
Parcelable parcelable;
SparseArray sparseParcelableArray = bundle.getSparseParcelableArray(PRESENTER_KEY);
if (sparseParcelableArray == null || this.mPresenters.isEmpty()) {
return;
}
Iterator<WeakReference<MenuPresenter>> it = this.mPresenters.iterator();
while (it.hasNext()) {
WeakReference<MenuPresenter> next = it.next();
MenuPresenter menuPresenter = next.get();
if (menuPresenter == null) {
this.mPresenters.remove(next);
} else {
int id = menuPresenter.getId();
if (id > 0 && (parcelable = (Parcelable) sparseParcelableArray.get(id)) != null) {
menuPresenter.onRestoreInstanceState(parcelable);
}
}
}
}
public void savePresenterStates(Bundle bundle) {
dispatchSaveInstanceState(bundle);
}
public void restorePresenterStates(Bundle bundle) {
dispatchRestoreInstanceState(bundle);
}
public void saveActionViewStates(Bundle bundle) {
int size = size();
SparseArray<? extends Parcelable> 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 restoreActionViewStates(Bundle bundle) {
MenuItem findItem;
if (bundle == null) {
return;
}
SparseArray<Parcelable> 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) {
return;
}
findItem.expandActionView();
}
/* JADX INFO: Access modifiers changed from: protected */
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<MenuItemImpl> arrayList = this.mItems;
arrayList.add(findInsertIndex(arrayList, ordering), createNewMenuItem);
onItemsChanged(true);
return createNewMenuItem;
}
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);
}
@Override // android.view.Menu
public MenuItem add(CharSequence charSequence) {
return addInternal(0, 0, 0, charSequence);
}
@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, CharSequence charSequence) {
return addInternal(i, i2, i3, charSequence);
}
@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 SubMenu addSubMenu(CharSequence charSequence) {
return addSubMenu(0, 0, 0, charSequence);
}
@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, 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(int i, int i2, int i3, int i4) {
return addSubMenu(i, i2, i3, this.mResources.getString(i4));
}
@Override // android.view.Menu
public int addIntentOptions(int i, int i2, int i3, ComponentName componentName, Intent[] intentArr, Intent intent, int i4, MenuItem[] menuItemArr) {
PackageManager packageManager = this.mContext.getPackageManager();
List<ResolveInfo> queryIntentActivityOptions = packageManager.queryIntentActivityOptions(componentName, intentArr, intent, 0);
int size = queryIntentActivityOptions != null ? queryIntentActivityOptions.size() : 0;
if ((i4 & 1) == 0) {
removeGroup(i);
}
for (int i5 = 0; i5 < size; i5++) {
ResolveInfo resolveInfo = queryIntentActivityOptions.get(i5);
Intent intent2 = new Intent(resolveInfo.specificIndex < 0 ? intent : intentArr[resolveInfo.specificIndex]);
intent2.setComponent(new ComponentName(resolveInfo.activityInfo.applicationInfo.packageName, resolveInfo.activityInfo.name));
MenuItem intent3 = add(i, i2, i3, resolveInfo.loadLabel(packageManager)).setIcon(resolveInfo.loadIcon(packageManager)).setIntent(intent2);
if (menuItemArr != null && resolveInfo.specificIndex >= 0) {
menuItemArr[resolveInfo.specificIndex] = intent3;
}
}
return size;
}
@Override // android.view.Menu
public void removeItem(int i) {
removeItemAtInt(findItemIndex(i), true);
}
@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);
}
}
private void removeItemAtInt(int i, boolean z) {
if (i < 0 || i >= this.mItems.size()) {
return;
}
this.mItems.remove(i);
if (z) {
onItemsChanged(true);
}
}
public void removeItemAt(int i) {
removeItemAtInt(i, true);
}
public void clearAll() {
this.mPreventDispatchingItemsChanged = true;
clear();
clearHeader();
this.mPresenters.clear();
this.mPreventDispatchingItemsChanged = false;
this.mItemsChangedWhileDispatchPrevented = false;
this.mStructureChangedWhileDispatchPrevented = false;
onItemsChanged(true);
}
@Override // android.view.Menu
public void clear() {
MenuItemImpl menuItemImpl = this.mExpandedItem;
if (menuItemImpl != null) {
collapseItemActionView(menuItemImpl);
}
this.mItems.clear();
onItemsChanged(true);
}
/* JADX INFO: Access modifiers changed from: package-private */
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 z, 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.setExclusiveCheckable(z2);
menuItemImpl.setCheckable(z);
}
}
}
@Override // android.view.Menu
public void setGroupVisible(int i, boolean z) {
int size = this.mItems.size();
boolean z2 = false;
for (int i2 = 0; i2 < size; i2++) {
MenuItemImpl menuItemImpl = this.mItems.get(i2);
if (menuItemImpl.getGroupId() == i && menuItemImpl.setVisibleInt(z)) {
z2 = true;
}
}
if (z2) {
onItemsChanged(true);
}
}
@Override // android.view.Menu
public void setGroupEnabled(int i, boolean z) {
int size = this.mItems.size();
for (int i2 = 0; i2 < size; i2++) {
MenuItemImpl menuItemImpl = this.mItems.get(i2);
if (menuItemImpl.getGroupId() == i) {
menuItemImpl.setEnabled(z);
}
}
}
@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;
}
@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 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 int size() {
return this.mItems.size();
}
@Override // android.view.Menu
public MenuItem getItem(int i) {
return this.mItems.get(i);
}
@Override // android.view.Menu
public boolean isShortcutKey(int i, KeyEvent keyEvent) {
return findItemWithShortcutForKey(i, keyEvent) != null;
}
@Override // android.view.Menu
public void setQwertyMode(boolean z) {
this.mQwertyMode = z;
onItemsChanged(false);
}
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.");
}
public void setShortcutsVisible(boolean z) {
if (this.mShortcutsVisible == z) {
return;
}
setShortcutsVisibleInner(z);
onItemsChanged(false);
}
/* JADX WARN: Code restructure failed: missing block: B:5:0x0019, code lost:
if (androidx.core.view.ViewConfigurationCompat.shouldShowMenuShortcutsWhenKeyboardPresent(android.view.ViewConfiguration.get(r2.mContext), r2.mContext) != false) goto L9;
*/
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
private void setShortcutsVisibleInner(boolean r3) {
/*
r2 = this;
if (r3 == 0) goto L1c
android.content.res.Resources r3 = r2.mResources
android.content.res.Configuration r3 = r3.getConfiguration()
int r3 = r3.keyboard
r0 = 1
if (r3 == r0) goto L1c
android.content.Context r3 = r2.mContext
android.view.ViewConfiguration r3 = android.view.ViewConfiguration.get(r3)
android.content.Context r1 = r2.mContext
boolean r3 = androidx.core.view.ViewConfigurationCompat.shouldShowMenuShortcutsWhenKeyboardPresent(r3, r1)
if (r3 == 0) goto L1c
goto L1d
L1c:
r0 = 0
L1d:
r2.mShortcutsVisible = r0
return
*/
throw new UnsupportedOperationException("Method not decompiled: androidx.appcompat.view.menu.MenuBuilder.setShortcutsVisibleInner(boolean):void");
}
/* JADX INFO: Access modifiers changed from: package-private */
public boolean dispatchMenuItemSelected(MenuBuilder menuBuilder, MenuItem menuItem) {
Callback callback = this.mCallback;
return callback != null && callback.onMenuItemSelected(menuBuilder, menuItem);
}
public void changeMenuMode() {
Callback callback = this.mCallback;
if (callback != null) {
callback.onMenuModeChange(this);
}
}
private static int findInsertIndex(ArrayList<MenuItemImpl> arrayList, int i) {
for (int size = arrayList.size() - 1; size >= 0; size--) {
if (arrayList.get(size).getOrdering() <= i) {
return size + 1;
}
}
return 0;
}
@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;
}
void findItemsWithShortcutForKey(List<MenuItemImpl> 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 && ((alphabeticShortcut == keyData.meta[0] || alphabeticShortcut == keyData.meta[2] || (isQwertyMode && alphabeticShortcut == '\b' && i == 67)) && menuItemImpl.isEnabled())) {
list.add(menuItemImpl);
}
}
}
}
MenuItemImpl findItemWithShortcutForKey(int i, KeyEvent keyEvent) {
char numericShortcut;
ArrayList<MenuItemImpl> 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);
if (isQwertyMode) {
numericShortcut = menuItemImpl.getAlphabeticShortcut();
} else {
numericShortcut = menuItemImpl.getNumericShortcut();
}
if ((numericShortcut == keyData.meta[0] && (metaState & 2) == 0) || ((numericShortcut == keyData.meta[2] && (metaState & 2) != 0) || (isQwertyMode && numericShortcut == '\b' && i == 67))) {
return menuItemImpl;
}
}
return null;
}
@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 z = supportActionProvider != null && supportActionProvider.hasSubMenu();
if (menuItemImpl.hasCollapsibleActionView()) {
invoke |= menuItemImpl.expandActionView();
if (invoke) {
close(true);
}
} else if (menuItemImpl.hasSubMenu() || z) {
if ((i & 4) == 0) {
close(false);
}
if (!menuItemImpl.hasSubMenu()) {
menuItemImpl.setSubMenu(new SubMenuBuilder(getContext(), this, menuItemImpl));
}
SubMenuBuilder subMenuBuilder = (SubMenuBuilder) menuItemImpl.getSubMenu();
if (z) {
supportActionProvider.onPrepareSubMenu(subMenuBuilder);
}
invoke |= dispatchSubMenuSelected(subMenuBuilder, menuPresenter);
if (!invoke) {
close(true);
}
} else if ((i & 1) == 0) {
close(true);
}
return invoke;
}
public final void close(boolean z) {
if (this.mIsClosing) {
return;
}
this.mIsClosing = true;
Iterator<WeakReference<MenuPresenter>> it = this.mPresenters.iterator();
while (it.hasNext()) {
WeakReference<MenuPresenter> next = it.next();
MenuPresenter menuPresenter = next.get();
if (menuPresenter == null) {
this.mPresenters.remove(next);
} else {
menuPresenter.onCloseMenu(this, z);
}
}
this.mIsClosing = false;
}
@Override // android.view.Menu
public void close() {
close(true);
}
public void onItemsChanged(boolean z) {
if (this.mPreventDispatchingItemsChanged) {
this.mItemsChangedWhileDispatchPrevented = true;
if (z) {
this.mStructureChangedWhileDispatchPrevented = true;
return;
}
return;
}
if (z) {
this.mIsVisibleItemsStale = true;
this.mIsActionItemsStale = true;
}
dispatchPresenterUpdate(z);
}
public void startDispatchingItemsChanged() {
this.mPreventDispatchingItemsChanged = false;
if (this.mItemsChangedWhileDispatchPrevented) {
this.mItemsChangedWhileDispatchPrevented = false;
onItemsChanged(this.mStructureChangedWhileDispatchPrevented);
}
}
/* JADX INFO: Access modifiers changed from: package-private */
public void onItemVisibleChanged(MenuItemImpl menuItemImpl) {
this.mIsVisibleItemsStale = true;
onItemsChanged(true);
}
/* JADX INFO: Access modifiers changed from: package-private */
public void onItemActionRequestChanged(MenuItemImpl menuItemImpl) {
this.mIsActionItemsStale = true;
onItemsChanged(true);
}
public ArrayList<MenuItemImpl> 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;
}
public void flagActionItems() {
ArrayList<MenuItemImpl> visibleItems = getVisibleItems();
if (this.mIsActionItemsStale) {
Iterator<WeakReference<MenuPresenter>> it = this.mPresenters.iterator();
boolean z = false;
while (it.hasNext()) {
WeakReference<MenuPresenter> next = it.next();
MenuPresenter menuPresenter = next.get();
if (menuPresenter == null) {
this.mPresenters.remove(next);
} else {
z |= menuPresenter.flagActionItems();
}
}
if (z) {
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<MenuItemImpl> getActionItems() {
flagActionItems();
return this.mActionItems;
}
public ArrayList<MenuItemImpl> getNonActionItems() {
flagActionItems();
return this.mNonActionItems;
}
public void clearHeader() {
this.mHeaderIcon = null;
this.mHeaderTitle = null;
this.mHeaderView = null;
onItemsChanged(false);
}
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);
}
/* JADX INFO: Access modifiers changed from: protected */
public MenuBuilder setHeaderTitleInt(CharSequence charSequence) {
setHeaderInternal(0, charSequence, 0, null, null);
return this;
}
/* JADX INFO: Access modifiers changed from: protected */
public MenuBuilder setHeaderTitleInt(int i) {
setHeaderInternal(i, null, 0, null, null);
return this;
}
/* JADX INFO: Access modifiers changed from: protected */
public MenuBuilder setHeaderIconInt(Drawable drawable) {
setHeaderInternal(0, null, 0, drawable, null);
return this;
}
/* JADX INFO: Access modifiers changed from: protected */
public MenuBuilder setHeaderIconInt(int i) {
setHeaderInternal(0, null, i, null, null);
return this;
}
/* JADX INFO: Access modifiers changed from: protected */
public MenuBuilder setHeaderViewInt(View view) {
setHeaderInternal(0, null, 0, null, view);
return this;
}
public boolean expandItemActionView(MenuItemImpl menuItemImpl) {
boolean z = false;
if (this.mPresenters.isEmpty()) {
return false;
}
stopDispatchingItemsChanged();
Iterator<WeakReference<MenuPresenter>> it = this.mPresenters.iterator();
while (it.hasNext()) {
WeakReference<MenuPresenter> next = it.next();
MenuPresenter menuPresenter = next.get();
if (menuPresenter == null) {
this.mPresenters.remove(next);
} else {
z = menuPresenter.expandItemActionView(this, menuItemImpl);
if (z) {
break;
}
}
}
startDispatchingItemsChanged();
if (z) {
this.mExpandedItem = menuItemImpl;
}
return z;
}
public boolean collapseItemActionView(MenuItemImpl menuItemImpl) {
boolean z = false;
if (!this.mPresenters.isEmpty() && this.mExpandedItem == menuItemImpl) {
stopDispatchingItemsChanged();
Iterator<WeakReference<MenuPresenter>> it = this.mPresenters.iterator();
while (it.hasNext()) {
WeakReference<MenuPresenter> next = it.next();
MenuPresenter menuPresenter = next.get();
if (menuPresenter == null) {
this.mPresenters.remove(next);
} else {
z = menuPresenter.collapseItemActionView(this, menuItemImpl);
if (z) {
break;
}
}
}
startDispatchingItemsChanged();
if (z) {
this.mExpandedItem = null;
}
}
return z;
}
}