mirror of
https://github.com/Pinball3D/Rabbit-R1.git
synced 2025-01-09 13:43:22 +00:00
998 lines
35 KiB
Java
998 lines
35 KiB
Java
|
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;
|
||
|
}
|
||
|
}
|