ADD week 5
This commit is contained in:
		| @@ -0,0 +1,200 @@ | ||||
| package androidx.appcompat.view.menu; | ||||
|  | ||||
| import android.content.Context; | ||||
| import android.graphics.Point; | ||||
| import android.graphics.Rect; | ||||
| import android.view.Display; | ||||
| import android.view.View; | ||||
| import android.view.WindowManager; | ||||
| import android.widget.ListView; | ||||
| import android.widget.PopupWindow; | ||||
| import androidx.appcompat.R; | ||||
| import androidx.appcompat.view.menu.MenuPresenter; | ||||
| import androidx.core.view.GravityCompat; | ||||
| import androidx.core.view.ViewCompat; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| public class MenuPopupHelper implements MenuHelper { | ||||
|     private static final int TOUCH_EPICENTER_SIZE_DP = 48; | ||||
|     private View mAnchorView; | ||||
|     private final Context mContext; | ||||
|     private int mDropDownGravity; | ||||
|     private boolean mForceShowIcon; | ||||
|     private final PopupWindow.OnDismissListener mInternalOnDismissListener; | ||||
|     private final MenuBuilder mMenu; | ||||
|     private PopupWindow.OnDismissListener mOnDismissListener; | ||||
|     private final boolean mOverflowOnly; | ||||
|     private MenuPopup mPopup; | ||||
|     private final int mPopupStyleAttr; | ||||
|     private final int mPopupStyleRes; | ||||
|     private MenuPresenter.Callback mPresenterCallback; | ||||
|  | ||||
|     public int getGravity() { | ||||
|         return this.mDropDownGravity; | ||||
|     } | ||||
|  | ||||
|     public void setAnchorView(View view) { | ||||
|         this.mAnchorView = view; | ||||
|     } | ||||
|  | ||||
|     public void setGravity(int i) { | ||||
|         this.mDropDownGravity = i; | ||||
|     } | ||||
|  | ||||
|     public void setOnDismissListener(PopupWindow.OnDismissListener onDismissListener) { | ||||
|         this.mOnDismissListener = onDismissListener; | ||||
|     } | ||||
|  | ||||
|     public MenuPopupHelper(Context context, MenuBuilder menuBuilder) { | ||||
|         this(context, menuBuilder, null, false, R.attr.popupMenuStyle, 0); | ||||
|     } | ||||
|  | ||||
|     public MenuPopupHelper(Context context, MenuBuilder menuBuilder, View view) { | ||||
|         this(context, menuBuilder, view, false, R.attr.popupMenuStyle, 0); | ||||
|     } | ||||
|  | ||||
|     public MenuPopupHelper(Context context, MenuBuilder menuBuilder, View view, boolean z, int i) { | ||||
|         this(context, menuBuilder, view, z, i, 0); | ||||
|     } | ||||
|  | ||||
|     public MenuPopupHelper(Context context, MenuBuilder menuBuilder, View view, boolean z, int i, int i2) { | ||||
|         this.mDropDownGravity = GravityCompat.START; | ||||
|         this.mInternalOnDismissListener = new PopupWindow.OnDismissListener() { // from class: androidx.appcompat.view.menu.MenuPopupHelper.1 | ||||
|             @Override // android.widget.PopupWindow.OnDismissListener | ||||
|             public void onDismiss() { | ||||
|                 MenuPopupHelper.this.onDismiss(); | ||||
|             } | ||||
|         }; | ||||
|         this.mContext = context; | ||||
|         this.mMenu = menuBuilder; | ||||
|         this.mAnchorView = view; | ||||
|         this.mOverflowOnly = z; | ||||
|         this.mPopupStyleAttr = i; | ||||
|         this.mPopupStyleRes = i2; | ||||
|     } | ||||
|  | ||||
|     public void setForceShowIcon(boolean z) { | ||||
|         this.mForceShowIcon = z; | ||||
|         MenuPopup menuPopup = this.mPopup; | ||||
|         if (menuPopup != null) { | ||||
|             menuPopup.setForceShowIcon(z); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public void show() { | ||||
|         if (!tryShow()) { | ||||
|             throw new IllegalStateException("MenuPopupHelper cannot be used without an anchor"); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public void show(int i, int i2) { | ||||
|         if (!tryShow(i, i2)) { | ||||
|             throw new IllegalStateException("MenuPopupHelper cannot be used without an anchor"); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public MenuPopup getPopup() { | ||||
|         if (this.mPopup == null) { | ||||
|             this.mPopup = createPopup(); | ||||
|         } | ||||
|         return this.mPopup; | ||||
|     } | ||||
|  | ||||
|     public boolean tryShow() { | ||||
|         if (isShowing()) { | ||||
|             return true; | ||||
|         } | ||||
|         if (this.mAnchorView == null) { | ||||
|             return false; | ||||
|         } | ||||
|         showPopup(0, 0, false, false); | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     public boolean tryShow(int i, int i2) { | ||||
|         if (isShowing()) { | ||||
|             return true; | ||||
|         } | ||||
|         if (this.mAnchorView == null) { | ||||
|             return false; | ||||
|         } | ||||
|         showPopup(i, i2, true, true); | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     private MenuPopup createPopup() { | ||||
|         MenuPopup standardMenuPopup; | ||||
|         Display defaultDisplay = ((WindowManager) this.mContext.getSystemService("window")).getDefaultDisplay(); | ||||
|         Point point = new Point(); | ||||
|         Api17Impl.getRealSize(defaultDisplay, point); | ||||
|         if (Math.min(point.x, point.y) >= this.mContext.getResources().getDimensionPixelSize(R.dimen.abc_cascading_menus_min_smallest_width)) { | ||||
|             standardMenuPopup = new CascadingMenuPopup(this.mContext, this.mAnchorView, this.mPopupStyleAttr, this.mPopupStyleRes, this.mOverflowOnly); | ||||
|         } else { | ||||
|             standardMenuPopup = new StandardMenuPopup(this.mContext, this.mMenu, this.mAnchorView, this.mPopupStyleAttr, this.mPopupStyleRes, this.mOverflowOnly); | ||||
|         } | ||||
|         standardMenuPopup.addMenu(this.mMenu); | ||||
|         standardMenuPopup.setOnDismissListener(this.mInternalOnDismissListener); | ||||
|         standardMenuPopup.setAnchorView(this.mAnchorView); | ||||
|         standardMenuPopup.setCallback(this.mPresenterCallback); | ||||
|         standardMenuPopup.setForceShowIcon(this.mForceShowIcon); | ||||
|         standardMenuPopup.setGravity(this.mDropDownGravity); | ||||
|         return standardMenuPopup; | ||||
|     } | ||||
|  | ||||
|     private void showPopup(int i, int i2, boolean z, boolean z2) { | ||||
|         MenuPopup popup = getPopup(); | ||||
|         popup.setShowTitle(z2); | ||||
|         if (z) { | ||||
|             if ((GravityCompat.getAbsoluteGravity(this.mDropDownGravity, ViewCompat.getLayoutDirection(this.mAnchorView)) & 7) == 5) { | ||||
|                 i -= this.mAnchorView.getWidth(); | ||||
|             } | ||||
|             popup.setHorizontalOffset(i); | ||||
|             popup.setVerticalOffset(i2); | ||||
|             int i3 = (int) ((this.mContext.getResources().getDisplayMetrics().density * 48.0f) / 2.0f); | ||||
|             popup.setEpicenterBounds(new Rect(i - i3, i2 - i3, i + i3, i2 + i3)); | ||||
|         } | ||||
|         popup.show(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.view.menu.MenuHelper | ||||
|     public void dismiss() { | ||||
|         if (isShowing()) { | ||||
|             this.mPopup.dismiss(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     protected void onDismiss() { | ||||
|         this.mPopup = null; | ||||
|         PopupWindow.OnDismissListener onDismissListener = this.mOnDismissListener; | ||||
|         if (onDismissListener != null) { | ||||
|             onDismissListener.onDismiss(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public boolean isShowing() { | ||||
|         MenuPopup menuPopup = this.mPopup; | ||||
|         return menuPopup != null && menuPopup.isShowing(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.view.menu.MenuHelper | ||||
|     public void setPresenterCallback(MenuPresenter.Callback callback) { | ||||
|         this.mPresenterCallback = callback; | ||||
|         MenuPopup menuPopup = this.mPopup; | ||||
|         if (menuPopup != null) { | ||||
|             menuPopup.setCallback(callback); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public ListView getListView() { | ||||
|         return getPopup().getListView(); | ||||
|     } | ||||
|  | ||||
|     static class Api17Impl { | ||||
|         private Api17Impl() { | ||||
|         } | ||||
|  | ||||
|         static void getRealSize(Display display, Point point) { | ||||
|             display.getRealSize(point); | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user