jimu-decompiled/sources/androidx/appcompat/view/menu/StandardMenuPopup.java
2025-05-13 19:24:51 +02:00

285 lines
9.3 KiB
Java

package androidx.appcompat.view.menu;
import android.R;
import android.content.Context;
import android.content.res.Resources;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.widget.AdapterView;
import android.widget.FrameLayout;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.TextView;
import androidx.appcompat.R$dimen;
import androidx.appcompat.R$layout;
import androidx.appcompat.view.menu.MenuPresenter;
import androidx.appcompat.widget.MenuPopupWindow;
import androidx.core.view.ViewCompat;
/* loaded from: classes.dex */
final class StandardMenuPopup extends MenuPopup implements PopupWindow.OnDismissListener, AdapterView.OnItemClickListener, MenuPresenter, View.OnKeyListener {
private static final int v = R$layout.abc_popup_menu_item_layout;
private final Context b;
private final MenuBuilder c;
private final MenuAdapter d;
private final boolean e;
private final int f;
private final int g;
private final int h;
final MenuPopupWindow i;
private PopupWindow.OnDismissListener l;
private View m;
View n;
private MenuPresenter.Callback o;
ViewTreeObserver p;
private boolean q;
private boolean r;
private int s;
private boolean u;
final ViewTreeObserver.OnGlobalLayoutListener j = new ViewTreeObserver.OnGlobalLayoutListener() { // from class: androidx.appcompat.view.menu.StandardMenuPopup.1
@Override // android.view.ViewTreeObserver.OnGlobalLayoutListener
public void onGlobalLayout() {
if (!StandardMenuPopup.this.c() || StandardMenuPopup.this.i.k()) {
return;
}
View view = StandardMenuPopup.this.n;
if (view == null || !view.isShown()) {
StandardMenuPopup.this.dismiss();
} else {
StandardMenuPopup.this.i.a();
}
}
};
private final View.OnAttachStateChangeListener k = new View.OnAttachStateChangeListener() { // from class: androidx.appcompat.view.menu.StandardMenuPopup.2
@Override // android.view.View.OnAttachStateChangeListener
public void onViewAttachedToWindow(View view) {
}
@Override // android.view.View.OnAttachStateChangeListener
public void onViewDetachedFromWindow(View view) {
ViewTreeObserver viewTreeObserver = StandardMenuPopup.this.p;
if (viewTreeObserver != null) {
if (!viewTreeObserver.isAlive()) {
StandardMenuPopup.this.p = view.getViewTreeObserver();
}
StandardMenuPopup standardMenuPopup = StandardMenuPopup.this;
standardMenuPopup.p.removeGlobalOnLayoutListener(standardMenuPopup.j);
}
view.removeOnAttachStateChangeListener(this);
}
};
private int t = 0;
public StandardMenuPopup(Context context, MenuBuilder menuBuilder, View view, int i, int i2, boolean z) {
this.b = context;
this.c = menuBuilder;
this.e = z;
this.d = new MenuAdapter(menuBuilder, LayoutInflater.from(context), this.e, v);
this.g = i;
this.h = i2;
Resources resources = context.getResources();
this.f = Math.max(resources.getDisplayMetrics().widthPixels / 2, resources.getDimensionPixelSize(R$dimen.abc_config_prefDialogWidth));
this.m = view;
this.i = new MenuPopupWindow(this.b, null, this.g, this.h);
menuBuilder.a(this, context);
}
private boolean g() {
View view;
if (c()) {
return true;
}
if (this.q || (view = this.m) == null) {
return false;
}
this.n = view;
this.i.a((PopupWindow.OnDismissListener) this);
this.i.a((AdapterView.OnItemClickListener) this);
this.i.a(true);
View view2 = this.n;
boolean z = this.p == null;
this.p = view2.getViewTreeObserver();
if (z) {
this.p.addOnGlobalLayoutListener(this.j);
}
view2.addOnAttachStateChangeListener(this.k);
this.i.a(view2);
this.i.c(this.t);
if (!this.r) {
this.s = MenuPopup.a(this.d, null, this.b, this.f);
this.r = true;
}
this.i.b(this.s);
this.i.e(2);
this.i.a(f());
this.i.a();
ListView d = this.i.d();
d.setOnKeyListener(this);
if (this.u && this.c.h() != null) {
FrameLayout frameLayout = (FrameLayout) LayoutInflater.from(this.b).inflate(R$layout.abc_popup_menu_header_item_layout, (ViewGroup) d, false);
TextView textView = (TextView) frameLayout.findViewById(R.id.title);
if (textView != null) {
textView.setText(this.c.h());
}
frameLayout.setEnabled(false);
d.addHeaderView(frameLayout, null, false);
}
this.i.a((ListAdapter) this.d);
this.i.a();
return true;
}
@Override // androidx.appcompat.view.menu.MenuPopup
public void a(int i) {
this.t = i;
}
@Override // androidx.appcompat.view.menu.MenuPopup
public void a(MenuBuilder menuBuilder) {
}
@Override // androidx.appcompat.view.menu.MenuPopup
public void b(boolean z) {
this.d.a(z);
}
@Override // androidx.appcompat.view.menu.MenuPresenter
public boolean b() {
return false;
}
@Override // androidx.appcompat.view.menu.ShowableListMenu
public boolean c() {
return !this.q && this.i.c();
}
@Override // androidx.appcompat.view.menu.ShowableListMenu
public ListView d() {
return this.i.d();
}
@Override // androidx.appcompat.view.menu.ShowableListMenu
public void dismiss() {
if (c()) {
this.i.dismiss();
}
}
@Override // android.widget.PopupWindow.OnDismissListener
public void onDismiss() {
this.q = true;
this.c.close();
ViewTreeObserver viewTreeObserver = this.p;
if (viewTreeObserver != null) {
if (!viewTreeObserver.isAlive()) {
this.p = this.n.getViewTreeObserver();
}
this.p.removeGlobalOnLayoutListener(this.j);
this.p = null;
}
this.n.removeOnAttachStateChangeListener(this.k);
PopupWindow.OnDismissListener onDismissListener = this.l;
if (onDismissListener != null) {
onDismissListener.onDismiss();
}
}
@Override // android.view.View.OnKeyListener
public boolean onKey(View view, int i, KeyEvent keyEvent) {
if (keyEvent.getAction() != 1 || i != 82) {
return false;
}
dismiss();
return true;
}
@Override // androidx.appcompat.view.menu.ShowableListMenu
public void a() {
if (!g()) {
throw new IllegalStateException("StandardMenuPopup cannot be used without an anchor");
}
}
@Override // androidx.appcompat.view.menu.MenuPopup
public void b(int i) {
this.i.d(i);
}
@Override // androidx.appcompat.view.menu.MenuPopup
public void c(int i) {
this.i.h(i);
}
@Override // androidx.appcompat.view.menu.MenuPopup
public void c(boolean z) {
this.u = z;
}
@Override // androidx.appcompat.view.menu.MenuPresenter
public void a(boolean z) {
this.r = false;
MenuAdapter menuAdapter = this.d;
if (menuAdapter != null) {
menuAdapter.notifyDataSetChanged();
}
}
@Override // androidx.appcompat.view.menu.MenuPresenter
public void a(MenuPresenter.Callback callback) {
this.o = callback;
}
@Override // androidx.appcompat.view.menu.MenuPresenter
public boolean a(SubMenuBuilder subMenuBuilder) {
if (subMenuBuilder.hasVisibleItems()) {
MenuPopupHelper menuPopupHelper = new MenuPopupHelper(this.b, subMenuBuilder, this.n, this.e, this.g, this.h);
menuPopupHelper.a(this.o);
menuPopupHelper.a(MenuPopup.b(subMenuBuilder));
menuPopupHelper.a(this.l);
this.l = null;
this.c.a(false);
int g = this.i.g();
int h = this.i.h();
if ((Gravity.getAbsoluteGravity(this.t, ViewCompat.k(this.m)) & 7) == 5) {
g += this.m.getWidth();
}
if (menuPopupHelper.a(g, h)) {
MenuPresenter.Callback callback = this.o;
if (callback == null) {
return true;
}
callback.a(subMenuBuilder);
return true;
}
}
return false;
}
@Override // androidx.appcompat.view.menu.MenuPresenter
public void a(MenuBuilder menuBuilder, boolean z) {
if (menuBuilder != this.c) {
return;
}
dismiss();
MenuPresenter.Callback callback = this.o;
if (callback != null) {
callback.a(menuBuilder, z);
}
}
@Override // androidx.appcompat.view.menu.MenuPopup
public void a(View view) {
this.m = view;
}
@Override // androidx.appcompat.view.menu.MenuPopup
public void a(PopupWindow.OnDismissListener onDismissListener) {
this.l = onDismissListener;
}
}