package androidx.appcompat.view.menu; import android.content.DialogInterface; import android.os.IBinder; import android.view.KeyEvent; import android.view.View; import android.view.Window; import android.view.WindowManager; import androidx.annotation.NonNull; import androidx.appcompat.R; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.view.menu.MenuPresenter; import androidx.core.view.PointerIconCompat; public class MenuDialogHelper implements DialogInterface.OnKeyListener, DialogInterface.OnClickListener, DialogInterface.OnDismissListener, MenuPresenter.Callback { private AlertDialog mDialog; private MenuBuilder mMenu; public ListMenuPresenter mPresenter; private MenuPresenter.Callback mPresenterCallback; public MenuDialogHelper(MenuBuilder menuBuilder) { this.mMenu = menuBuilder; } public void dismiss() { AlertDialog alertDialog = this.mDialog; if (alertDialog != null) { alertDialog.dismiss(); } } @Override // android.content.DialogInterface.OnClickListener public void onClick(DialogInterface dialogInterface, int i) { this.mMenu.performItemAction((MenuItemImpl) this.mPresenter.getAdapter().getItem(i), 0); } @Override // androidx.appcompat.view.menu.MenuPresenter.Callback public void onCloseMenu(@NonNull MenuBuilder menuBuilder, boolean z2) { if (z2 || menuBuilder == this.mMenu) { dismiss(); } MenuPresenter.Callback callback = this.mPresenterCallback; if (callback != null) { callback.onCloseMenu(menuBuilder, z2); } } @Override // android.content.DialogInterface.OnDismissListener public void onDismiss(DialogInterface dialogInterface) { this.mPresenter.onCloseMenu(this.mMenu, true); } @Override // android.content.DialogInterface.OnKeyListener public boolean onKey(DialogInterface dialogInterface, int i, KeyEvent keyEvent) { Window window; View decorView; KeyEvent.DispatcherState keyDispatcherState; View decorView2; KeyEvent.DispatcherState keyDispatcherState2; if (i == 82 || i == 4) { if (keyEvent.getAction() == 0 && keyEvent.getRepeatCount() == 0) { Window window2 = this.mDialog.getWindow(); if (!(window2 == null || (decorView2 = window2.getDecorView()) == null || (keyDispatcherState2 = decorView2.getKeyDispatcherState()) == null)) { keyDispatcherState2.startTracking(keyEvent, this); return true; } } else if (keyEvent.getAction() == 1 && !keyEvent.isCanceled() && (window = this.mDialog.getWindow()) != null && (decorView = window.getDecorView()) != null && (keyDispatcherState = decorView.getKeyDispatcherState()) != null && keyDispatcherState.isTracking(keyEvent)) { this.mMenu.close(true); dialogInterface.dismiss(); return true; } } return this.mMenu.performShortcut(i, keyEvent, 0); } @Override // androidx.appcompat.view.menu.MenuPresenter.Callback public boolean onOpenSubMenu(@NonNull MenuBuilder menuBuilder) { MenuPresenter.Callback callback = this.mPresenterCallback; if (callback != null) { return callback.onOpenSubMenu(menuBuilder); } return false; } public void setPresenterCallback(MenuPresenter.Callback callback) { this.mPresenterCallback = callback; } public void show(IBinder iBinder) { MenuBuilder menuBuilder = this.mMenu; AlertDialog.Builder builder = new AlertDialog.Builder(menuBuilder.getContext()); ListMenuPresenter listMenuPresenter = new ListMenuPresenter(builder.getContext(), R.layout.abc_list_menu_item_layout); this.mPresenter = listMenuPresenter; listMenuPresenter.setCallback(this); this.mMenu.addMenuPresenter(this.mPresenter); builder.setAdapter(this.mPresenter.getAdapter(), this); View headerView = menuBuilder.getHeaderView(); if (headerView != null) { builder.setCustomTitle(headerView); } else { builder.setIcon(menuBuilder.getHeaderIcon()).setTitle(menuBuilder.getHeaderTitle()); } builder.setOnKeyListener(this); AlertDialog create = builder.create(); this.mDialog = create; create.setOnDismissListener(this); WindowManager.LayoutParams attributes = this.mDialog.getWindow().getAttributes(); attributes.type = PointerIconCompat.TYPE_HELP; if (iBinder != null) { attributes.token = iBinder; } attributes.flags |= 131072; this.mDialog.show(); } }