116 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			116 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| 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.appcompat.R;
 | |
| import androidx.appcompat.app.AlertDialog;
 | |
| import androidx.appcompat.view.menu.MenuPresenter;
 | |
| import androidx.core.view.PointerIconCompat;
 | |
| 
 | |
| /* loaded from: classes.dex */
 | |
| class MenuDialogHelper implements DialogInterface.OnKeyListener, DialogInterface.OnClickListener, DialogInterface.OnDismissListener, MenuPresenter.Callback {
 | |
|     private AlertDialog mDialog;
 | |
|     private MenuBuilder mMenu;
 | |
|     ListMenuPresenter mPresenter;
 | |
|     private MenuPresenter.Callback mPresenterCallback;
 | |
| 
 | |
|     public void setPresenterCallback(MenuPresenter.Callback callback) {
 | |
|         this.mPresenterCallback = callback;
 | |
|     }
 | |
| 
 | |
|     public MenuDialogHelper(MenuBuilder menuBuilder) {
 | |
|         this.mMenu = menuBuilder;
 | |
|     }
 | |
| 
 | |
|     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();
 | |
|     }
 | |
| 
 | |
|     @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);
 | |
|     }
 | |
| 
 | |
|     public void dismiss() {
 | |
|         AlertDialog alertDialog = this.mDialog;
 | |
|         if (alertDialog != null) {
 | |
|             alertDialog.dismiss();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     @Override // android.content.DialogInterface.OnDismissListener
 | |
|     public void onDismiss(DialogInterface dialogInterface) {
 | |
|         this.mPresenter.onCloseMenu(this.mMenu, true);
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.appcompat.view.menu.MenuPresenter.Callback
 | |
|     public void onCloseMenu(MenuBuilder menuBuilder, boolean z) {
 | |
|         if (z || menuBuilder == this.mMenu) {
 | |
|             dismiss();
 | |
|         }
 | |
|         MenuPresenter.Callback callback = this.mPresenterCallback;
 | |
|         if (callback != null) {
 | |
|             callback.onCloseMenu(menuBuilder, z);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.appcompat.view.menu.MenuPresenter.Callback
 | |
|     public boolean onOpenSubMenu(MenuBuilder menuBuilder) {
 | |
|         MenuPresenter.Callback callback = this.mPresenterCallback;
 | |
|         if (callback != null) {
 | |
|             return callback.onOpenSubMenu(menuBuilder);
 | |
|         }
 | |
|         return false;
 | |
|     }
 | |
| 
 | |
|     @Override // android.content.DialogInterface.OnClickListener
 | |
|     public void onClick(DialogInterface dialogInterface, int i) {
 | |
|         this.mMenu.performItemAction((MenuItemImpl) this.mPresenter.getAdapter().getItem(i), 0);
 | |
|     }
 | |
| }
 |