1688 lines
		
	
	
		
			68 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			1688 lines
		
	
	
		
			68 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package androidx.appcompat.widget;
 | |
| 
 | |
| import android.content.Context;
 | |
| import android.content.res.ColorStateList;
 | |
| import android.graphics.drawable.Drawable;
 | |
| import android.os.Build;
 | |
| import android.os.Parcel;
 | |
| import android.os.Parcelable;
 | |
| import android.text.Layout;
 | |
| import android.text.TextUtils;
 | |
| import android.util.AttributeSet;
 | |
| import android.view.ContextThemeWrapper;
 | |
| import android.view.Menu;
 | |
| import android.view.MenuInflater;
 | |
| import android.view.MenuItem;
 | |
| import android.view.MotionEvent;
 | |
| import android.view.View;
 | |
| import android.view.ViewGroup;
 | |
| import android.view.ViewParent;
 | |
| import android.widget.ImageButton;
 | |
| import android.widget.ImageView;
 | |
| import android.widget.TextView;
 | |
| import android.window.OnBackInvokedCallback;
 | |
| import android.window.OnBackInvokedDispatcher;
 | |
| import androidx.appcompat.R;
 | |
| import androidx.appcompat.app.ActionBar;
 | |
| import androidx.appcompat.content.res.AppCompatResources;
 | |
| import androidx.appcompat.view.CollapsibleActionView;
 | |
| import androidx.appcompat.view.SupportMenuInflater;
 | |
| import androidx.appcompat.view.menu.MenuBuilder;
 | |
| import androidx.appcompat.view.menu.MenuItemImpl;
 | |
| import androidx.appcompat.view.menu.MenuPresenter;
 | |
| import androidx.appcompat.view.menu.MenuView;
 | |
| import androidx.appcompat.view.menu.SubMenuBuilder;
 | |
| import androidx.appcompat.widget.ActionMenuView;
 | |
| import androidx.constraintlayout.core.widgets.analyzer.BasicMeasure;
 | |
| import androidx.core.view.GravityCompat;
 | |
| import androidx.core.view.MarginLayoutParamsCompat;
 | |
| import androidx.core.view.MenuHost;
 | |
| import androidx.core.view.MenuHostHelper;
 | |
| import androidx.core.view.MenuProvider;
 | |
| import androidx.core.view.ViewCompat;
 | |
| import androidx.customview.view.AbsSavedState;
 | |
| import androidx.lifecycle.Lifecycle;
 | |
| import androidx.lifecycle.LifecycleOwner;
 | |
| import java.util.ArrayList;
 | |
| import java.util.Iterator;
 | |
| import java.util.List;
 | |
| import java.util.Objects;
 | |
| import kotlin.time.DurationKt;
 | |
| 
 | |
| /* loaded from: classes.dex */
 | |
| public class Toolbar extends ViewGroup implements MenuHost {
 | |
|     private static final String TAG = "Toolbar";
 | |
|     private MenuPresenter.Callback mActionMenuPresenterCallback;
 | |
|     private OnBackInvokedCallback mBackInvokedCallback;
 | |
|     private boolean mBackInvokedCallbackEnabled;
 | |
|     private OnBackInvokedDispatcher mBackInvokedDispatcher;
 | |
|     int mButtonGravity;
 | |
|     ImageButton mCollapseButtonView;
 | |
|     private CharSequence mCollapseDescription;
 | |
|     private Drawable mCollapseIcon;
 | |
|     private boolean mCollapsible;
 | |
|     private int mContentInsetEndWithActions;
 | |
|     private int mContentInsetStartWithNavigation;
 | |
|     private RtlSpacingHelper mContentInsets;
 | |
|     private boolean mEatingHover;
 | |
|     private boolean mEatingTouch;
 | |
|     View mExpandedActionView;
 | |
|     private ExpandedActionViewMenuPresenter mExpandedMenuPresenter;
 | |
|     private int mGravity;
 | |
|     private final ArrayList<View> mHiddenViews;
 | |
|     private ImageView mLogoView;
 | |
|     private int mMaxButtonHeight;
 | |
|     MenuBuilder.Callback mMenuBuilderCallback;
 | |
|     final MenuHostHelper mMenuHostHelper;
 | |
|     ActionMenuView mMenuView;
 | |
|     private final ActionMenuView.OnMenuItemClickListener mMenuViewItemClickListener;
 | |
|     private ImageButton mNavButtonView;
 | |
|     OnMenuItemClickListener mOnMenuItemClickListener;
 | |
|     private ActionMenuPresenter mOuterActionMenuPresenter;
 | |
|     private Context mPopupContext;
 | |
|     private int mPopupTheme;
 | |
|     private ArrayList<MenuItem> mProvidedMenuItems;
 | |
|     private final Runnable mShowOverflowMenuRunnable;
 | |
|     private CharSequence mSubtitleText;
 | |
|     private int mSubtitleTextAppearance;
 | |
|     private ColorStateList mSubtitleTextColor;
 | |
|     private TextView mSubtitleTextView;
 | |
|     private final int[] mTempMargins;
 | |
|     private final ArrayList<View> mTempViews;
 | |
|     private int mTitleMarginBottom;
 | |
|     private int mTitleMarginEnd;
 | |
|     private int mTitleMarginStart;
 | |
|     private int mTitleMarginTop;
 | |
|     private CharSequence mTitleText;
 | |
|     private int mTitleTextAppearance;
 | |
|     private ColorStateList mTitleTextColor;
 | |
|     private TextView mTitleTextView;
 | |
|     private ToolbarWidgetWrapper mWrapper;
 | |
| 
 | |
|     public interface OnMenuItemClickListener {
 | |
|         boolean onMenuItemClick(MenuItem menuItem);
 | |
|     }
 | |
| 
 | |
|     private int getChildVerticalGravity(int i) {
 | |
|         int i2 = i & 112;
 | |
|         return (i2 == 16 || i2 == 48 || i2 == 80) ? i2 : this.mGravity & 112;
 | |
|     }
 | |
| 
 | |
|     View getNavButtonView() {
 | |
|         return this.mNavButtonView;
 | |
|     }
 | |
| 
 | |
|     ActionMenuPresenter getOuterActionMenuPresenter() {
 | |
|         return this.mOuterActionMenuPresenter;
 | |
|     }
 | |
| 
 | |
|     Context getPopupContext() {
 | |
|         return this.mPopupContext;
 | |
|     }
 | |
| 
 | |
|     public int getPopupTheme() {
 | |
|         return this.mPopupTheme;
 | |
|     }
 | |
| 
 | |
|     public CharSequence getSubtitle() {
 | |
|         return this.mSubtitleText;
 | |
|     }
 | |
| 
 | |
|     final TextView getSubtitleTextView() {
 | |
|         return this.mSubtitleTextView;
 | |
|     }
 | |
| 
 | |
|     public CharSequence getTitle() {
 | |
|         return this.mTitleText;
 | |
|     }
 | |
| 
 | |
|     public int getTitleMarginBottom() {
 | |
|         return this.mTitleMarginBottom;
 | |
|     }
 | |
| 
 | |
|     public int getTitleMarginEnd() {
 | |
|         return this.mTitleMarginEnd;
 | |
|     }
 | |
| 
 | |
|     public int getTitleMarginStart() {
 | |
|         return this.mTitleMarginStart;
 | |
|     }
 | |
| 
 | |
|     public int getTitleMarginTop() {
 | |
|         return this.mTitleMarginTop;
 | |
|     }
 | |
| 
 | |
|     final TextView getTitleTextView() {
 | |
|         return this.mTitleTextView;
 | |
|     }
 | |
| 
 | |
|     public boolean isBackInvokedCallbackEnabled() {
 | |
|         return this.mBackInvokedCallbackEnabled;
 | |
|     }
 | |
| 
 | |
|     public void setOnMenuItemClickListener(OnMenuItemClickListener onMenuItemClickListener) {
 | |
|         this.mOnMenuItemClickListener = onMenuItemClickListener;
 | |
|     }
 | |
| 
 | |
|     public Toolbar(Context context) {
 | |
|         this(context, null);
 | |
|     }
 | |
| 
 | |
|     public Toolbar(Context context, AttributeSet attributeSet) {
 | |
|         this(context, attributeSet, R.attr.toolbarStyle);
 | |
|     }
 | |
| 
 | |
|     public Toolbar(Context context, AttributeSet attributeSet, int i) {
 | |
|         super(context, attributeSet, i);
 | |
|         this.mGravity = 8388627;
 | |
|         this.mTempViews = new ArrayList<>();
 | |
|         this.mHiddenViews = new ArrayList<>();
 | |
|         this.mTempMargins = new int[2];
 | |
|         this.mMenuHostHelper = new MenuHostHelper(new Runnable() { // from class: androidx.appcompat.widget.Toolbar$$ExternalSyntheticLambda0
 | |
|             @Override // java.lang.Runnable
 | |
|             public final void run() {
 | |
|                 Toolbar.this.invalidateMenu();
 | |
|             }
 | |
|         });
 | |
|         this.mProvidedMenuItems = new ArrayList<>();
 | |
|         this.mMenuViewItemClickListener = new ActionMenuView.OnMenuItemClickListener() { // from class: androidx.appcompat.widget.Toolbar.1
 | |
|             @Override // androidx.appcompat.widget.ActionMenuView.OnMenuItemClickListener
 | |
|             public boolean onMenuItemClick(MenuItem menuItem) {
 | |
|                 if (Toolbar.this.mMenuHostHelper.onMenuItemSelected(menuItem)) {
 | |
|                     return true;
 | |
|                 }
 | |
|                 if (Toolbar.this.mOnMenuItemClickListener != null) {
 | |
|                     return Toolbar.this.mOnMenuItemClickListener.onMenuItemClick(menuItem);
 | |
|                 }
 | |
|                 return false;
 | |
|             }
 | |
|         };
 | |
|         this.mShowOverflowMenuRunnable = new Runnable() { // from class: androidx.appcompat.widget.Toolbar.2
 | |
|             @Override // java.lang.Runnable
 | |
|             public void run() {
 | |
|                 Toolbar.this.showOverflowMenu();
 | |
|             }
 | |
|         };
 | |
|         TintTypedArray obtainStyledAttributes = TintTypedArray.obtainStyledAttributes(getContext(), attributeSet, R.styleable.Toolbar, i, 0);
 | |
|         ViewCompat.saveAttributeDataForStyleable(this, context, R.styleable.Toolbar, attributeSet, obtainStyledAttributes.getWrappedTypeArray(), i, 0);
 | |
|         this.mTitleTextAppearance = obtainStyledAttributes.getResourceId(R.styleable.Toolbar_titleTextAppearance, 0);
 | |
|         this.mSubtitleTextAppearance = obtainStyledAttributes.getResourceId(R.styleable.Toolbar_subtitleTextAppearance, 0);
 | |
|         this.mGravity = obtainStyledAttributes.getInteger(R.styleable.Toolbar_android_gravity, this.mGravity);
 | |
|         this.mButtonGravity = obtainStyledAttributes.getInteger(R.styleable.Toolbar_buttonGravity, 48);
 | |
|         int dimensionPixelOffset = obtainStyledAttributes.getDimensionPixelOffset(R.styleable.Toolbar_titleMargin, 0);
 | |
|         dimensionPixelOffset = obtainStyledAttributes.hasValue(R.styleable.Toolbar_titleMargins) ? obtainStyledAttributes.getDimensionPixelOffset(R.styleable.Toolbar_titleMargins, dimensionPixelOffset) : dimensionPixelOffset;
 | |
|         this.mTitleMarginBottom = dimensionPixelOffset;
 | |
|         this.mTitleMarginTop = dimensionPixelOffset;
 | |
|         this.mTitleMarginEnd = dimensionPixelOffset;
 | |
|         this.mTitleMarginStart = dimensionPixelOffset;
 | |
|         int dimensionPixelOffset2 = obtainStyledAttributes.getDimensionPixelOffset(R.styleable.Toolbar_titleMarginStart, -1);
 | |
|         if (dimensionPixelOffset2 >= 0) {
 | |
|             this.mTitleMarginStart = dimensionPixelOffset2;
 | |
|         }
 | |
|         int dimensionPixelOffset3 = obtainStyledAttributes.getDimensionPixelOffset(R.styleable.Toolbar_titleMarginEnd, -1);
 | |
|         if (dimensionPixelOffset3 >= 0) {
 | |
|             this.mTitleMarginEnd = dimensionPixelOffset3;
 | |
|         }
 | |
|         int dimensionPixelOffset4 = obtainStyledAttributes.getDimensionPixelOffset(R.styleable.Toolbar_titleMarginTop, -1);
 | |
|         if (dimensionPixelOffset4 >= 0) {
 | |
|             this.mTitleMarginTop = dimensionPixelOffset4;
 | |
|         }
 | |
|         int dimensionPixelOffset5 = obtainStyledAttributes.getDimensionPixelOffset(R.styleable.Toolbar_titleMarginBottom, -1);
 | |
|         if (dimensionPixelOffset5 >= 0) {
 | |
|             this.mTitleMarginBottom = dimensionPixelOffset5;
 | |
|         }
 | |
|         this.mMaxButtonHeight = obtainStyledAttributes.getDimensionPixelSize(R.styleable.Toolbar_maxButtonHeight, -1);
 | |
|         int dimensionPixelOffset6 = obtainStyledAttributes.getDimensionPixelOffset(R.styleable.Toolbar_contentInsetStart, Integer.MIN_VALUE);
 | |
|         int dimensionPixelOffset7 = obtainStyledAttributes.getDimensionPixelOffset(R.styleable.Toolbar_contentInsetEnd, Integer.MIN_VALUE);
 | |
|         int dimensionPixelSize = obtainStyledAttributes.getDimensionPixelSize(R.styleable.Toolbar_contentInsetLeft, 0);
 | |
|         int dimensionPixelSize2 = obtainStyledAttributes.getDimensionPixelSize(R.styleable.Toolbar_contentInsetRight, 0);
 | |
|         ensureContentInsets();
 | |
|         this.mContentInsets.setAbsolute(dimensionPixelSize, dimensionPixelSize2);
 | |
|         if (dimensionPixelOffset6 != Integer.MIN_VALUE || dimensionPixelOffset7 != Integer.MIN_VALUE) {
 | |
|             this.mContentInsets.setRelative(dimensionPixelOffset6, dimensionPixelOffset7);
 | |
|         }
 | |
|         this.mContentInsetStartWithNavigation = obtainStyledAttributes.getDimensionPixelOffset(R.styleable.Toolbar_contentInsetStartWithNavigation, Integer.MIN_VALUE);
 | |
|         this.mContentInsetEndWithActions = obtainStyledAttributes.getDimensionPixelOffset(R.styleable.Toolbar_contentInsetEndWithActions, Integer.MIN_VALUE);
 | |
|         this.mCollapseIcon = obtainStyledAttributes.getDrawable(R.styleable.Toolbar_collapseIcon);
 | |
|         this.mCollapseDescription = obtainStyledAttributes.getText(R.styleable.Toolbar_collapseContentDescription);
 | |
|         CharSequence text = obtainStyledAttributes.getText(R.styleable.Toolbar_title);
 | |
|         if (!TextUtils.isEmpty(text)) {
 | |
|             setTitle(text);
 | |
|         }
 | |
|         CharSequence text2 = obtainStyledAttributes.getText(R.styleable.Toolbar_subtitle);
 | |
|         if (!TextUtils.isEmpty(text2)) {
 | |
|             setSubtitle(text2);
 | |
|         }
 | |
|         this.mPopupContext = getContext();
 | |
|         setPopupTheme(obtainStyledAttributes.getResourceId(R.styleable.Toolbar_popupTheme, 0));
 | |
|         Drawable drawable = obtainStyledAttributes.getDrawable(R.styleable.Toolbar_navigationIcon);
 | |
|         if (drawable != null) {
 | |
|             setNavigationIcon(drawable);
 | |
|         }
 | |
|         CharSequence text3 = obtainStyledAttributes.getText(R.styleable.Toolbar_navigationContentDescription);
 | |
|         if (!TextUtils.isEmpty(text3)) {
 | |
|             setNavigationContentDescription(text3);
 | |
|         }
 | |
|         Drawable drawable2 = obtainStyledAttributes.getDrawable(R.styleable.Toolbar_logo);
 | |
|         if (drawable2 != null) {
 | |
|             setLogo(drawable2);
 | |
|         }
 | |
|         CharSequence text4 = obtainStyledAttributes.getText(R.styleable.Toolbar_logoDescription);
 | |
|         if (!TextUtils.isEmpty(text4)) {
 | |
|             setLogoDescription(text4);
 | |
|         }
 | |
|         if (obtainStyledAttributes.hasValue(R.styleable.Toolbar_titleTextColor)) {
 | |
|             setTitleTextColor(obtainStyledAttributes.getColorStateList(R.styleable.Toolbar_titleTextColor));
 | |
|         }
 | |
|         if (obtainStyledAttributes.hasValue(R.styleable.Toolbar_subtitleTextColor)) {
 | |
|             setSubtitleTextColor(obtainStyledAttributes.getColorStateList(R.styleable.Toolbar_subtitleTextColor));
 | |
|         }
 | |
|         if (obtainStyledAttributes.hasValue(R.styleable.Toolbar_menu)) {
 | |
|             inflateMenu(obtainStyledAttributes.getResourceId(R.styleable.Toolbar_menu, 0));
 | |
|         }
 | |
|         obtainStyledAttributes.recycle();
 | |
|     }
 | |
| 
 | |
|     public void setBackInvokedCallbackEnabled(boolean z) {
 | |
|         if (this.mBackInvokedCallbackEnabled != z) {
 | |
|             this.mBackInvokedCallbackEnabled = z;
 | |
|             updateBackInvokedCallbackState();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public void setPopupTheme(int i) {
 | |
|         if (this.mPopupTheme != i) {
 | |
|             this.mPopupTheme = i;
 | |
|             if (i == 0) {
 | |
|                 this.mPopupContext = getContext();
 | |
|             } else {
 | |
|                 this.mPopupContext = new ContextThemeWrapper(getContext(), i);
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public void setTitleMargin(int i, int i2, int i3, int i4) {
 | |
|         this.mTitleMarginStart = i;
 | |
|         this.mTitleMarginTop = i2;
 | |
|         this.mTitleMarginEnd = i3;
 | |
|         this.mTitleMarginBottom = i4;
 | |
|         requestLayout();
 | |
|     }
 | |
| 
 | |
|     public void setTitleMarginStart(int i) {
 | |
|         this.mTitleMarginStart = i;
 | |
|         requestLayout();
 | |
|     }
 | |
| 
 | |
|     public void setTitleMarginTop(int i) {
 | |
|         this.mTitleMarginTop = i;
 | |
|         requestLayout();
 | |
|     }
 | |
| 
 | |
|     public void setTitleMarginEnd(int i) {
 | |
|         this.mTitleMarginEnd = i;
 | |
|         requestLayout();
 | |
|     }
 | |
| 
 | |
|     public void setTitleMarginBottom(int i) {
 | |
|         this.mTitleMarginBottom = i;
 | |
|         requestLayout();
 | |
|     }
 | |
| 
 | |
|     @Override // android.view.View
 | |
|     public void onRtlPropertiesChanged(int i) {
 | |
|         super.onRtlPropertiesChanged(i);
 | |
|         ensureContentInsets();
 | |
|         this.mContentInsets.setDirection(i == 1);
 | |
|     }
 | |
| 
 | |
|     public void setLogo(int i) {
 | |
|         setLogo(AppCompatResources.getDrawable(getContext(), i));
 | |
|     }
 | |
| 
 | |
|     public boolean canShowOverflowMenu() {
 | |
|         ActionMenuView actionMenuView;
 | |
|         return getVisibility() == 0 && (actionMenuView = this.mMenuView) != null && actionMenuView.isOverflowReserved();
 | |
|     }
 | |
| 
 | |
|     public boolean isOverflowMenuShowing() {
 | |
|         ActionMenuView actionMenuView = this.mMenuView;
 | |
|         return actionMenuView != null && actionMenuView.isOverflowMenuShowing();
 | |
|     }
 | |
| 
 | |
|     public boolean isOverflowMenuShowPending() {
 | |
|         ActionMenuView actionMenuView = this.mMenuView;
 | |
|         return actionMenuView != null && actionMenuView.isOverflowMenuShowPending();
 | |
|     }
 | |
| 
 | |
|     public boolean showOverflowMenu() {
 | |
|         ActionMenuView actionMenuView = this.mMenuView;
 | |
|         return actionMenuView != null && actionMenuView.showOverflowMenu();
 | |
|     }
 | |
| 
 | |
|     public boolean hideOverflowMenu() {
 | |
|         ActionMenuView actionMenuView = this.mMenuView;
 | |
|         return actionMenuView != null && actionMenuView.hideOverflowMenu();
 | |
|     }
 | |
| 
 | |
|     public void setMenu(MenuBuilder menuBuilder, ActionMenuPresenter actionMenuPresenter) {
 | |
|         if (menuBuilder == null && this.mMenuView == null) {
 | |
|             return;
 | |
|         }
 | |
|         ensureMenuView();
 | |
|         MenuBuilder peekMenu = this.mMenuView.peekMenu();
 | |
|         if (peekMenu == menuBuilder) {
 | |
|             return;
 | |
|         }
 | |
|         if (peekMenu != null) {
 | |
|             peekMenu.removeMenuPresenter(this.mOuterActionMenuPresenter);
 | |
|             peekMenu.removeMenuPresenter(this.mExpandedMenuPresenter);
 | |
|         }
 | |
|         if (this.mExpandedMenuPresenter == null) {
 | |
|             this.mExpandedMenuPresenter = new ExpandedActionViewMenuPresenter();
 | |
|         }
 | |
|         actionMenuPresenter.setExpandedActionViewsExclusive(true);
 | |
|         if (menuBuilder != null) {
 | |
|             menuBuilder.addMenuPresenter(actionMenuPresenter, this.mPopupContext);
 | |
|             menuBuilder.addMenuPresenter(this.mExpandedMenuPresenter, this.mPopupContext);
 | |
|         } else {
 | |
|             actionMenuPresenter.initForMenu(this.mPopupContext, null);
 | |
|             this.mExpandedMenuPresenter.initForMenu(this.mPopupContext, null);
 | |
|             actionMenuPresenter.updateMenuView(true);
 | |
|             this.mExpandedMenuPresenter.updateMenuView(true);
 | |
|         }
 | |
|         this.mMenuView.setPopupTheme(this.mPopupTheme);
 | |
|         this.mMenuView.setPresenter(actionMenuPresenter);
 | |
|         this.mOuterActionMenuPresenter = actionMenuPresenter;
 | |
|         updateBackInvokedCallbackState();
 | |
|     }
 | |
| 
 | |
|     public void dismissPopupMenus() {
 | |
|         ActionMenuView actionMenuView = this.mMenuView;
 | |
|         if (actionMenuView != null) {
 | |
|             actionMenuView.dismissPopupMenus();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public boolean isTitleTruncated() {
 | |
|         Layout layout;
 | |
|         TextView textView = this.mTitleTextView;
 | |
|         if (textView == null || (layout = textView.getLayout()) == null) {
 | |
|             return false;
 | |
|         }
 | |
|         int lineCount = layout.getLineCount();
 | |
|         for (int i = 0; i < lineCount; i++) {
 | |
|             if (layout.getEllipsisCount(i) > 0) {
 | |
|                 return true;
 | |
|             }
 | |
|         }
 | |
|         return false;
 | |
|     }
 | |
| 
 | |
|     public void setLogo(Drawable drawable) {
 | |
|         if (drawable != null) {
 | |
|             ensureLogoView();
 | |
|             if (!isChildOrHidden(this.mLogoView)) {
 | |
|                 addSystemView(this.mLogoView, true);
 | |
|             }
 | |
|         } else {
 | |
|             ImageView imageView = this.mLogoView;
 | |
|             if (imageView != null && isChildOrHidden(imageView)) {
 | |
|                 removeView(this.mLogoView);
 | |
|                 this.mHiddenViews.remove(this.mLogoView);
 | |
|             }
 | |
|         }
 | |
|         ImageView imageView2 = this.mLogoView;
 | |
|         if (imageView2 != null) {
 | |
|             imageView2.setImageDrawable(drawable);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public Drawable getLogo() {
 | |
|         ImageView imageView = this.mLogoView;
 | |
|         if (imageView != null) {
 | |
|             return imageView.getDrawable();
 | |
|         }
 | |
|         return null;
 | |
|     }
 | |
| 
 | |
|     public void setLogoDescription(int i) {
 | |
|         setLogoDescription(getContext().getText(i));
 | |
|     }
 | |
| 
 | |
|     public void setLogoDescription(CharSequence charSequence) {
 | |
|         if (!TextUtils.isEmpty(charSequence)) {
 | |
|             ensureLogoView();
 | |
|         }
 | |
|         ImageView imageView = this.mLogoView;
 | |
|         if (imageView != null) {
 | |
|             imageView.setContentDescription(charSequence);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public CharSequence getLogoDescription() {
 | |
|         ImageView imageView = this.mLogoView;
 | |
|         if (imageView != null) {
 | |
|             return imageView.getContentDescription();
 | |
|         }
 | |
|         return null;
 | |
|     }
 | |
| 
 | |
|     private void ensureLogoView() {
 | |
|         if (this.mLogoView == null) {
 | |
|             this.mLogoView = new AppCompatImageView(getContext());
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public boolean hasExpandedActionView() {
 | |
|         ExpandedActionViewMenuPresenter expandedActionViewMenuPresenter = this.mExpandedMenuPresenter;
 | |
|         return (expandedActionViewMenuPresenter == null || expandedActionViewMenuPresenter.mCurrentExpandedItem == null) ? false : true;
 | |
|     }
 | |
| 
 | |
|     public void collapseActionView() {
 | |
|         ExpandedActionViewMenuPresenter expandedActionViewMenuPresenter = this.mExpandedMenuPresenter;
 | |
|         MenuItemImpl menuItemImpl = expandedActionViewMenuPresenter == null ? null : expandedActionViewMenuPresenter.mCurrentExpandedItem;
 | |
|         if (menuItemImpl != null) {
 | |
|             menuItemImpl.collapseActionView();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public void setTitle(int i) {
 | |
|         setTitle(getContext().getText(i));
 | |
|     }
 | |
| 
 | |
|     public void setTitle(CharSequence charSequence) {
 | |
|         if (!TextUtils.isEmpty(charSequence)) {
 | |
|             if (this.mTitleTextView == null) {
 | |
|                 Context context = getContext();
 | |
|                 AppCompatTextView appCompatTextView = new AppCompatTextView(context);
 | |
|                 this.mTitleTextView = appCompatTextView;
 | |
|                 appCompatTextView.setSingleLine();
 | |
|                 this.mTitleTextView.setEllipsize(TextUtils.TruncateAt.END);
 | |
|                 int i = this.mTitleTextAppearance;
 | |
|                 if (i != 0) {
 | |
|                     this.mTitleTextView.setTextAppearance(context, i);
 | |
|                 }
 | |
|                 ColorStateList colorStateList = this.mTitleTextColor;
 | |
|                 if (colorStateList != null) {
 | |
|                     this.mTitleTextView.setTextColor(colorStateList);
 | |
|                 }
 | |
|             }
 | |
|             if (!isChildOrHidden(this.mTitleTextView)) {
 | |
|                 addSystemView(this.mTitleTextView, true);
 | |
|             }
 | |
|         } else {
 | |
|             TextView textView = this.mTitleTextView;
 | |
|             if (textView != null && isChildOrHidden(textView)) {
 | |
|                 removeView(this.mTitleTextView);
 | |
|                 this.mHiddenViews.remove(this.mTitleTextView);
 | |
|             }
 | |
|         }
 | |
|         TextView textView2 = this.mTitleTextView;
 | |
|         if (textView2 != null) {
 | |
|             textView2.setText(charSequence);
 | |
|         }
 | |
|         this.mTitleText = charSequence;
 | |
|     }
 | |
| 
 | |
|     public void setSubtitle(int i) {
 | |
|         setSubtitle(getContext().getText(i));
 | |
|     }
 | |
| 
 | |
|     public void setSubtitle(CharSequence charSequence) {
 | |
|         if (!TextUtils.isEmpty(charSequence)) {
 | |
|             if (this.mSubtitleTextView == null) {
 | |
|                 Context context = getContext();
 | |
|                 AppCompatTextView appCompatTextView = new AppCompatTextView(context);
 | |
|                 this.mSubtitleTextView = appCompatTextView;
 | |
|                 appCompatTextView.setSingleLine();
 | |
|                 this.mSubtitleTextView.setEllipsize(TextUtils.TruncateAt.END);
 | |
|                 int i = this.mSubtitleTextAppearance;
 | |
|                 if (i != 0) {
 | |
|                     this.mSubtitleTextView.setTextAppearance(context, i);
 | |
|                 }
 | |
|                 ColorStateList colorStateList = this.mSubtitleTextColor;
 | |
|                 if (colorStateList != null) {
 | |
|                     this.mSubtitleTextView.setTextColor(colorStateList);
 | |
|                 }
 | |
|             }
 | |
|             if (!isChildOrHidden(this.mSubtitleTextView)) {
 | |
|                 addSystemView(this.mSubtitleTextView, true);
 | |
|             }
 | |
|         } else {
 | |
|             TextView textView = this.mSubtitleTextView;
 | |
|             if (textView != null && isChildOrHidden(textView)) {
 | |
|                 removeView(this.mSubtitleTextView);
 | |
|                 this.mHiddenViews.remove(this.mSubtitleTextView);
 | |
|             }
 | |
|         }
 | |
|         TextView textView2 = this.mSubtitleTextView;
 | |
|         if (textView2 != null) {
 | |
|             textView2.setText(charSequence);
 | |
|         }
 | |
|         this.mSubtitleText = charSequence;
 | |
|     }
 | |
| 
 | |
|     public void setTitleTextAppearance(Context context, int i) {
 | |
|         this.mTitleTextAppearance = i;
 | |
|         TextView textView = this.mTitleTextView;
 | |
|         if (textView != null) {
 | |
|             textView.setTextAppearance(context, i);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public void setSubtitleTextAppearance(Context context, int i) {
 | |
|         this.mSubtitleTextAppearance = i;
 | |
|         TextView textView = this.mSubtitleTextView;
 | |
|         if (textView != null) {
 | |
|             textView.setTextAppearance(context, i);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public void setTitleTextColor(int i) {
 | |
|         setTitleTextColor(ColorStateList.valueOf(i));
 | |
|     }
 | |
| 
 | |
|     public void setTitleTextColor(ColorStateList colorStateList) {
 | |
|         this.mTitleTextColor = colorStateList;
 | |
|         TextView textView = this.mTitleTextView;
 | |
|         if (textView != null) {
 | |
|             textView.setTextColor(colorStateList);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public void setSubtitleTextColor(int i) {
 | |
|         setSubtitleTextColor(ColorStateList.valueOf(i));
 | |
|     }
 | |
| 
 | |
|     public void setSubtitleTextColor(ColorStateList colorStateList) {
 | |
|         this.mSubtitleTextColor = colorStateList;
 | |
|         TextView textView = this.mSubtitleTextView;
 | |
|         if (textView != null) {
 | |
|             textView.setTextColor(colorStateList);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public CharSequence getNavigationContentDescription() {
 | |
|         ImageButton imageButton = this.mNavButtonView;
 | |
|         if (imageButton != null) {
 | |
|             return imageButton.getContentDescription();
 | |
|         }
 | |
|         return null;
 | |
|     }
 | |
| 
 | |
|     public void setNavigationContentDescription(int i) {
 | |
|         setNavigationContentDescription(i != 0 ? getContext().getText(i) : null);
 | |
|     }
 | |
| 
 | |
|     public void setNavigationContentDescription(CharSequence charSequence) {
 | |
|         if (!TextUtils.isEmpty(charSequence)) {
 | |
|             ensureNavButtonView();
 | |
|         }
 | |
|         ImageButton imageButton = this.mNavButtonView;
 | |
|         if (imageButton != null) {
 | |
|             imageButton.setContentDescription(charSequence);
 | |
|             TooltipCompat.setTooltipText(this.mNavButtonView, charSequence);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public void setNavigationIcon(int i) {
 | |
|         setNavigationIcon(AppCompatResources.getDrawable(getContext(), i));
 | |
|     }
 | |
| 
 | |
|     public void setNavigationIcon(Drawable drawable) {
 | |
|         if (drawable != null) {
 | |
|             ensureNavButtonView();
 | |
|             if (!isChildOrHidden(this.mNavButtonView)) {
 | |
|                 addSystemView(this.mNavButtonView, true);
 | |
|             }
 | |
|         } else {
 | |
|             ImageButton imageButton = this.mNavButtonView;
 | |
|             if (imageButton != null && isChildOrHidden(imageButton)) {
 | |
|                 removeView(this.mNavButtonView);
 | |
|                 this.mHiddenViews.remove(this.mNavButtonView);
 | |
|             }
 | |
|         }
 | |
|         ImageButton imageButton2 = this.mNavButtonView;
 | |
|         if (imageButton2 != null) {
 | |
|             imageButton2.setImageDrawable(drawable);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public Drawable getNavigationIcon() {
 | |
|         ImageButton imageButton = this.mNavButtonView;
 | |
|         if (imageButton != null) {
 | |
|             return imageButton.getDrawable();
 | |
|         }
 | |
|         return null;
 | |
|     }
 | |
| 
 | |
|     public void setNavigationOnClickListener(View.OnClickListener onClickListener) {
 | |
|         ensureNavButtonView();
 | |
|         this.mNavButtonView.setOnClickListener(onClickListener);
 | |
|     }
 | |
| 
 | |
|     public CharSequence getCollapseContentDescription() {
 | |
|         ImageButton imageButton = this.mCollapseButtonView;
 | |
|         if (imageButton != null) {
 | |
|             return imageButton.getContentDescription();
 | |
|         }
 | |
|         return null;
 | |
|     }
 | |
| 
 | |
|     public void setCollapseContentDescription(int i) {
 | |
|         setCollapseContentDescription(i != 0 ? getContext().getText(i) : null);
 | |
|     }
 | |
| 
 | |
|     public void setCollapseContentDescription(CharSequence charSequence) {
 | |
|         if (!TextUtils.isEmpty(charSequence)) {
 | |
|             ensureCollapseButtonView();
 | |
|         }
 | |
|         ImageButton imageButton = this.mCollapseButtonView;
 | |
|         if (imageButton != null) {
 | |
|             imageButton.setContentDescription(charSequence);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public Drawable getCollapseIcon() {
 | |
|         ImageButton imageButton = this.mCollapseButtonView;
 | |
|         if (imageButton != null) {
 | |
|             return imageButton.getDrawable();
 | |
|         }
 | |
|         return null;
 | |
|     }
 | |
| 
 | |
|     public void setCollapseIcon(int i) {
 | |
|         setCollapseIcon(AppCompatResources.getDrawable(getContext(), i));
 | |
|     }
 | |
| 
 | |
|     public void setCollapseIcon(Drawable drawable) {
 | |
|         if (drawable != null) {
 | |
|             ensureCollapseButtonView();
 | |
|             this.mCollapseButtonView.setImageDrawable(drawable);
 | |
|         } else {
 | |
|             ImageButton imageButton = this.mCollapseButtonView;
 | |
|             if (imageButton != null) {
 | |
|                 imageButton.setImageDrawable(this.mCollapseIcon);
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public Menu getMenu() {
 | |
|         ensureMenu();
 | |
|         return this.mMenuView.getMenu();
 | |
|     }
 | |
| 
 | |
|     public void setOverflowIcon(Drawable drawable) {
 | |
|         ensureMenu();
 | |
|         this.mMenuView.setOverflowIcon(drawable);
 | |
|     }
 | |
| 
 | |
|     public Drawable getOverflowIcon() {
 | |
|         ensureMenu();
 | |
|         return this.mMenuView.getOverflowIcon();
 | |
|     }
 | |
| 
 | |
|     private void ensureMenu() {
 | |
|         ensureMenuView();
 | |
|         if (this.mMenuView.peekMenu() == null) {
 | |
|             MenuBuilder menuBuilder = (MenuBuilder) this.mMenuView.getMenu();
 | |
|             if (this.mExpandedMenuPresenter == null) {
 | |
|                 this.mExpandedMenuPresenter = new ExpandedActionViewMenuPresenter();
 | |
|             }
 | |
|             this.mMenuView.setExpandedActionViewsExclusive(true);
 | |
|             menuBuilder.addMenuPresenter(this.mExpandedMenuPresenter, this.mPopupContext);
 | |
|             updateBackInvokedCallbackState();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private void ensureMenuView() {
 | |
|         if (this.mMenuView == null) {
 | |
|             ActionMenuView actionMenuView = new ActionMenuView(getContext());
 | |
|             this.mMenuView = actionMenuView;
 | |
|             actionMenuView.setPopupTheme(this.mPopupTheme);
 | |
|             this.mMenuView.setOnMenuItemClickListener(this.mMenuViewItemClickListener);
 | |
|             this.mMenuView.setMenuCallbacks(this.mActionMenuPresenterCallback, new MenuBuilder.Callback() { // from class: androidx.appcompat.widget.Toolbar.3
 | |
|                 @Override // androidx.appcompat.view.menu.MenuBuilder.Callback
 | |
|                 public boolean onMenuItemSelected(MenuBuilder menuBuilder, MenuItem menuItem) {
 | |
|                     return Toolbar.this.mMenuBuilderCallback != null && Toolbar.this.mMenuBuilderCallback.onMenuItemSelected(menuBuilder, menuItem);
 | |
|                 }
 | |
| 
 | |
|                 @Override // androidx.appcompat.view.menu.MenuBuilder.Callback
 | |
|                 public void onMenuModeChange(MenuBuilder menuBuilder) {
 | |
|                     if (!Toolbar.this.mMenuView.isOverflowMenuShowing()) {
 | |
|                         Toolbar.this.mMenuHostHelper.onPrepareMenu(menuBuilder);
 | |
|                     }
 | |
|                     if (Toolbar.this.mMenuBuilderCallback != null) {
 | |
|                         Toolbar.this.mMenuBuilderCallback.onMenuModeChange(menuBuilder);
 | |
|                     }
 | |
|                 }
 | |
|             });
 | |
|             LayoutParams generateDefaultLayoutParams = generateDefaultLayoutParams();
 | |
|             generateDefaultLayoutParams.gravity = (this.mButtonGravity & 112) | GravityCompat.END;
 | |
|             this.mMenuView.setLayoutParams(generateDefaultLayoutParams);
 | |
|             addSystemView(this.mMenuView, false);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private MenuInflater getMenuInflater() {
 | |
|         return new SupportMenuInflater(getContext());
 | |
|     }
 | |
| 
 | |
|     public void inflateMenu(int i) {
 | |
|         getMenuInflater().inflate(i, getMenu());
 | |
|     }
 | |
| 
 | |
|     public void setContentInsetsRelative(int i, int i2) {
 | |
|         ensureContentInsets();
 | |
|         this.mContentInsets.setRelative(i, i2);
 | |
|     }
 | |
| 
 | |
|     public int getContentInsetStart() {
 | |
|         RtlSpacingHelper rtlSpacingHelper = this.mContentInsets;
 | |
|         if (rtlSpacingHelper != null) {
 | |
|             return rtlSpacingHelper.getStart();
 | |
|         }
 | |
|         return 0;
 | |
|     }
 | |
| 
 | |
|     public int getContentInsetEnd() {
 | |
|         RtlSpacingHelper rtlSpacingHelper = this.mContentInsets;
 | |
|         if (rtlSpacingHelper != null) {
 | |
|             return rtlSpacingHelper.getEnd();
 | |
|         }
 | |
|         return 0;
 | |
|     }
 | |
| 
 | |
|     public void setContentInsetsAbsolute(int i, int i2) {
 | |
|         ensureContentInsets();
 | |
|         this.mContentInsets.setAbsolute(i, i2);
 | |
|     }
 | |
| 
 | |
|     public int getContentInsetLeft() {
 | |
|         RtlSpacingHelper rtlSpacingHelper = this.mContentInsets;
 | |
|         if (rtlSpacingHelper != null) {
 | |
|             return rtlSpacingHelper.getLeft();
 | |
|         }
 | |
|         return 0;
 | |
|     }
 | |
| 
 | |
|     public int getContentInsetRight() {
 | |
|         RtlSpacingHelper rtlSpacingHelper = this.mContentInsets;
 | |
|         if (rtlSpacingHelper != null) {
 | |
|             return rtlSpacingHelper.getRight();
 | |
|         }
 | |
|         return 0;
 | |
|     }
 | |
| 
 | |
|     public int getContentInsetStartWithNavigation() {
 | |
|         int i = this.mContentInsetStartWithNavigation;
 | |
|         return i != Integer.MIN_VALUE ? i : getContentInsetStart();
 | |
|     }
 | |
| 
 | |
|     public void setContentInsetStartWithNavigation(int i) {
 | |
|         if (i < 0) {
 | |
|             i = Integer.MIN_VALUE;
 | |
|         }
 | |
|         if (i != this.mContentInsetStartWithNavigation) {
 | |
|             this.mContentInsetStartWithNavigation = i;
 | |
|             if (getNavigationIcon() != null) {
 | |
|                 requestLayout();
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public int getContentInsetEndWithActions() {
 | |
|         int i = this.mContentInsetEndWithActions;
 | |
|         return i != Integer.MIN_VALUE ? i : getContentInsetEnd();
 | |
|     }
 | |
| 
 | |
|     public void setContentInsetEndWithActions(int i) {
 | |
|         if (i < 0) {
 | |
|             i = Integer.MIN_VALUE;
 | |
|         }
 | |
|         if (i != this.mContentInsetEndWithActions) {
 | |
|             this.mContentInsetEndWithActions = i;
 | |
|             if (getNavigationIcon() != null) {
 | |
|                 requestLayout();
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public int getCurrentContentInsetStart() {
 | |
|         if (getNavigationIcon() != null) {
 | |
|             return Math.max(getContentInsetStart(), Math.max(this.mContentInsetStartWithNavigation, 0));
 | |
|         }
 | |
|         return getContentInsetStart();
 | |
|     }
 | |
| 
 | |
|     public int getCurrentContentInsetEnd() {
 | |
|         MenuBuilder peekMenu;
 | |
|         ActionMenuView actionMenuView = this.mMenuView;
 | |
|         if (actionMenuView != null && (peekMenu = actionMenuView.peekMenu()) != null && peekMenu.hasVisibleItems()) {
 | |
|             return Math.max(getContentInsetEnd(), Math.max(this.mContentInsetEndWithActions, 0));
 | |
|         }
 | |
|         return getContentInsetEnd();
 | |
|     }
 | |
| 
 | |
|     public int getCurrentContentInsetLeft() {
 | |
|         if (ViewCompat.getLayoutDirection(this) == 1) {
 | |
|             return getCurrentContentInsetEnd();
 | |
|         }
 | |
|         return getCurrentContentInsetStart();
 | |
|     }
 | |
| 
 | |
|     public int getCurrentContentInsetRight() {
 | |
|         if (ViewCompat.getLayoutDirection(this) == 1) {
 | |
|             return getCurrentContentInsetStart();
 | |
|         }
 | |
|         return getCurrentContentInsetEnd();
 | |
|     }
 | |
| 
 | |
|     private void ensureNavButtonView() {
 | |
|         if (this.mNavButtonView == null) {
 | |
|             this.mNavButtonView = new AppCompatImageButton(getContext(), null, R.attr.toolbarNavigationButtonStyle);
 | |
|             LayoutParams generateDefaultLayoutParams = generateDefaultLayoutParams();
 | |
|             generateDefaultLayoutParams.gravity = (this.mButtonGravity & 112) | GravityCompat.START;
 | |
|             this.mNavButtonView.setLayoutParams(generateDefaultLayoutParams);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     void ensureCollapseButtonView() {
 | |
|         if (this.mCollapseButtonView == null) {
 | |
|             AppCompatImageButton appCompatImageButton = new AppCompatImageButton(getContext(), null, R.attr.toolbarNavigationButtonStyle);
 | |
|             this.mCollapseButtonView = appCompatImageButton;
 | |
|             appCompatImageButton.setImageDrawable(this.mCollapseIcon);
 | |
|             this.mCollapseButtonView.setContentDescription(this.mCollapseDescription);
 | |
|             LayoutParams generateDefaultLayoutParams = generateDefaultLayoutParams();
 | |
|             generateDefaultLayoutParams.gravity = (this.mButtonGravity & 112) | GravityCompat.START;
 | |
|             generateDefaultLayoutParams.mViewType = 2;
 | |
|             this.mCollapseButtonView.setLayoutParams(generateDefaultLayoutParams);
 | |
|             this.mCollapseButtonView.setOnClickListener(new View.OnClickListener() { // from class: androidx.appcompat.widget.Toolbar.4
 | |
|                 @Override // android.view.View.OnClickListener
 | |
|                 public void onClick(View view) {
 | |
|                     Toolbar.this.collapseActionView();
 | |
|                 }
 | |
|             });
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private void addSystemView(View view, boolean z) {
 | |
|         LayoutParams layoutParams;
 | |
|         ViewGroup.LayoutParams layoutParams2 = view.getLayoutParams();
 | |
|         if (layoutParams2 == null) {
 | |
|             layoutParams = generateDefaultLayoutParams();
 | |
|         } else if (!checkLayoutParams(layoutParams2)) {
 | |
|             layoutParams = generateLayoutParams(layoutParams2);
 | |
|         } else {
 | |
|             layoutParams = (LayoutParams) layoutParams2;
 | |
|         }
 | |
|         layoutParams.mViewType = 1;
 | |
|         if (z && this.mExpandedActionView != null) {
 | |
|             view.setLayoutParams(layoutParams);
 | |
|             this.mHiddenViews.add(view);
 | |
|         } else {
 | |
|             addView(view, layoutParams);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     @Override // android.view.View
 | |
|     protected Parcelable onSaveInstanceState() {
 | |
|         SavedState savedState = new SavedState(super.onSaveInstanceState());
 | |
|         ExpandedActionViewMenuPresenter expandedActionViewMenuPresenter = this.mExpandedMenuPresenter;
 | |
|         if (expandedActionViewMenuPresenter != null && expandedActionViewMenuPresenter.mCurrentExpandedItem != null) {
 | |
|             savedState.expandedMenuItemId = this.mExpandedMenuPresenter.mCurrentExpandedItem.getItemId();
 | |
|         }
 | |
|         savedState.isOverflowOpen = isOverflowMenuShowing();
 | |
|         return savedState;
 | |
|     }
 | |
| 
 | |
|     @Override // android.view.View
 | |
|     protected void onRestoreInstanceState(Parcelable parcelable) {
 | |
|         MenuItem findItem;
 | |
|         if (!(parcelable instanceof SavedState)) {
 | |
|             super.onRestoreInstanceState(parcelable);
 | |
|             return;
 | |
|         }
 | |
|         SavedState savedState = (SavedState) parcelable;
 | |
|         super.onRestoreInstanceState(savedState.getSuperState());
 | |
|         ActionMenuView actionMenuView = this.mMenuView;
 | |
|         MenuBuilder peekMenu = actionMenuView != null ? actionMenuView.peekMenu() : null;
 | |
|         if (savedState.expandedMenuItemId != 0 && this.mExpandedMenuPresenter != null && peekMenu != null && (findItem = peekMenu.findItem(savedState.expandedMenuItemId)) != null) {
 | |
|             findItem.expandActionView();
 | |
|         }
 | |
|         if (savedState.isOverflowOpen) {
 | |
|             postShowOverflowMenu();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private void postShowOverflowMenu() {
 | |
|         removeCallbacks(this.mShowOverflowMenuRunnable);
 | |
|         post(this.mShowOverflowMenuRunnable);
 | |
|     }
 | |
| 
 | |
|     @Override // android.view.ViewGroup, android.view.View
 | |
|     protected void onDetachedFromWindow() {
 | |
|         super.onDetachedFromWindow();
 | |
|         removeCallbacks(this.mShowOverflowMenuRunnable);
 | |
|         updateBackInvokedCallbackState();
 | |
|     }
 | |
| 
 | |
|     @Override // android.view.ViewGroup, android.view.View
 | |
|     protected void onAttachedToWindow() {
 | |
|         super.onAttachedToWindow();
 | |
|         updateBackInvokedCallbackState();
 | |
|     }
 | |
| 
 | |
|     @Override // android.view.View
 | |
|     public boolean onTouchEvent(MotionEvent motionEvent) {
 | |
|         int actionMasked = motionEvent.getActionMasked();
 | |
|         if (actionMasked == 0) {
 | |
|             this.mEatingTouch = false;
 | |
|         }
 | |
|         if (!this.mEatingTouch) {
 | |
|             boolean onTouchEvent = super.onTouchEvent(motionEvent);
 | |
|             if (actionMasked == 0 && !onTouchEvent) {
 | |
|                 this.mEatingTouch = true;
 | |
|             }
 | |
|         }
 | |
|         if (actionMasked == 1 || actionMasked == 3) {
 | |
|             this.mEatingTouch = false;
 | |
|         }
 | |
|         return true;
 | |
|     }
 | |
| 
 | |
|     @Override // android.view.View
 | |
|     public boolean onHoverEvent(MotionEvent motionEvent) {
 | |
|         int actionMasked = motionEvent.getActionMasked();
 | |
|         if (actionMasked == 9) {
 | |
|             this.mEatingHover = false;
 | |
|         }
 | |
|         if (!this.mEatingHover) {
 | |
|             boolean onHoverEvent = super.onHoverEvent(motionEvent);
 | |
|             if (actionMasked == 9 && !onHoverEvent) {
 | |
|                 this.mEatingHover = true;
 | |
|             }
 | |
|         }
 | |
|         if (actionMasked == 10 || actionMasked == 3) {
 | |
|             this.mEatingHover = false;
 | |
|         }
 | |
|         return true;
 | |
|     }
 | |
| 
 | |
|     private void measureChildConstrained(View view, int i, int i2, int i3, int i4, int i5) {
 | |
|         ViewGroup.MarginLayoutParams marginLayoutParams = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
 | |
|         int childMeasureSpec = getChildMeasureSpec(i, getPaddingLeft() + getPaddingRight() + marginLayoutParams.leftMargin + marginLayoutParams.rightMargin + i2, marginLayoutParams.width);
 | |
|         int childMeasureSpec2 = getChildMeasureSpec(i3, getPaddingTop() + getPaddingBottom() + marginLayoutParams.topMargin + marginLayoutParams.bottomMargin + i4, marginLayoutParams.height);
 | |
|         int mode = View.MeasureSpec.getMode(childMeasureSpec2);
 | |
|         if (mode != 1073741824 && i5 >= 0) {
 | |
|             if (mode != 0) {
 | |
|                 i5 = Math.min(View.MeasureSpec.getSize(childMeasureSpec2), i5);
 | |
|             }
 | |
|             childMeasureSpec2 = View.MeasureSpec.makeMeasureSpec(i5, BasicMeasure.EXACTLY);
 | |
|         }
 | |
|         view.measure(childMeasureSpec, childMeasureSpec2);
 | |
|     }
 | |
| 
 | |
|     private int measureChildCollapseMargins(View view, int i, int i2, int i3, int i4, int[] iArr) {
 | |
|         ViewGroup.MarginLayoutParams marginLayoutParams = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
 | |
|         int i5 = marginLayoutParams.leftMargin - iArr[0];
 | |
|         int i6 = marginLayoutParams.rightMargin - iArr[1];
 | |
|         int max = Math.max(0, i5) + Math.max(0, i6);
 | |
|         iArr[0] = Math.max(0, -i5);
 | |
|         iArr[1] = Math.max(0, -i6);
 | |
|         view.measure(getChildMeasureSpec(i, getPaddingLeft() + getPaddingRight() + max + i2, marginLayoutParams.width), getChildMeasureSpec(i3, getPaddingTop() + getPaddingBottom() + marginLayoutParams.topMargin + marginLayoutParams.bottomMargin + i4, marginLayoutParams.height));
 | |
|         return view.getMeasuredWidth() + max;
 | |
|     }
 | |
| 
 | |
|     private boolean shouldCollapse() {
 | |
|         if (!this.mCollapsible) {
 | |
|             return false;
 | |
|         }
 | |
|         int childCount = getChildCount();
 | |
|         for (int i = 0; i < childCount; i++) {
 | |
|             View childAt = getChildAt(i);
 | |
|             if (shouldLayout(childAt) && childAt.getMeasuredWidth() > 0 && childAt.getMeasuredHeight() > 0) {
 | |
|                 return false;
 | |
|             }
 | |
|         }
 | |
|         return true;
 | |
|     }
 | |
| 
 | |
|     @Override // android.view.View
 | |
|     protected void onMeasure(int i, int i2) {
 | |
|         int i3;
 | |
|         int i4;
 | |
|         int i5;
 | |
|         int i6;
 | |
|         int i7;
 | |
|         int i8;
 | |
|         int i9;
 | |
|         int[] iArr = this.mTempMargins;
 | |
|         boolean isLayoutRtl = ViewUtils.isLayoutRtl(this);
 | |
|         int i10 = !isLayoutRtl ? 1 : 0;
 | |
|         if (shouldLayout(this.mNavButtonView)) {
 | |
|             measureChildConstrained(this.mNavButtonView, i, 0, i2, 0, this.mMaxButtonHeight);
 | |
|             i3 = this.mNavButtonView.getMeasuredWidth() + getHorizontalMargins(this.mNavButtonView);
 | |
|             i4 = Math.max(0, this.mNavButtonView.getMeasuredHeight() + getVerticalMargins(this.mNavButtonView));
 | |
|             i5 = View.combineMeasuredStates(0, this.mNavButtonView.getMeasuredState());
 | |
|         } else {
 | |
|             i3 = 0;
 | |
|             i4 = 0;
 | |
|             i5 = 0;
 | |
|         }
 | |
|         if (shouldLayout(this.mCollapseButtonView)) {
 | |
|             measureChildConstrained(this.mCollapseButtonView, i, 0, i2, 0, this.mMaxButtonHeight);
 | |
|             i3 = this.mCollapseButtonView.getMeasuredWidth() + getHorizontalMargins(this.mCollapseButtonView);
 | |
|             i4 = Math.max(i4, this.mCollapseButtonView.getMeasuredHeight() + getVerticalMargins(this.mCollapseButtonView));
 | |
|             i5 = View.combineMeasuredStates(i5, this.mCollapseButtonView.getMeasuredState());
 | |
|         }
 | |
|         int currentContentInsetStart = getCurrentContentInsetStart();
 | |
|         int max = Math.max(currentContentInsetStart, i3);
 | |
|         iArr[isLayoutRtl ? 1 : 0] = Math.max(0, currentContentInsetStart - i3);
 | |
|         if (shouldLayout(this.mMenuView)) {
 | |
|             measureChildConstrained(this.mMenuView, i, max, i2, 0, this.mMaxButtonHeight);
 | |
|             i6 = this.mMenuView.getMeasuredWidth() + getHorizontalMargins(this.mMenuView);
 | |
|             i4 = Math.max(i4, this.mMenuView.getMeasuredHeight() + getVerticalMargins(this.mMenuView));
 | |
|             i5 = View.combineMeasuredStates(i5, this.mMenuView.getMeasuredState());
 | |
|         } else {
 | |
|             i6 = 0;
 | |
|         }
 | |
|         int currentContentInsetEnd = getCurrentContentInsetEnd();
 | |
|         int max2 = max + Math.max(currentContentInsetEnd, i6);
 | |
|         iArr[i10] = Math.max(0, currentContentInsetEnd - i6);
 | |
|         if (shouldLayout(this.mExpandedActionView)) {
 | |
|             max2 += measureChildCollapseMargins(this.mExpandedActionView, i, max2, i2, 0, iArr);
 | |
|             i4 = Math.max(i4, this.mExpandedActionView.getMeasuredHeight() + getVerticalMargins(this.mExpandedActionView));
 | |
|             i5 = View.combineMeasuredStates(i5, this.mExpandedActionView.getMeasuredState());
 | |
|         }
 | |
|         if (shouldLayout(this.mLogoView)) {
 | |
|             max2 += measureChildCollapseMargins(this.mLogoView, i, max2, i2, 0, iArr);
 | |
|             i4 = Math.max(i4, this.mLogoView.getMeasuredHeight() + getVerticalMargins(this.mLogoView));
 | |
|             i5 = View.combineMeasuredStates(i5, this.mLogoView.getMeasuredState());
 | |
|         }
 | |
|         int childCount = getChildCount();
 | |
|         for (int i11 = 0; i11 < childCount; i11++) {
 | |
|             View childAt = getChildAt(i11);
 | |
|             if (((LayoutParams) childAt.getLayoutParams()).mViewType == 0 && shouldLayout(childAt)) {
 | |
|                 max2 += measureChildCollapseMargins(childAt, i, max2, i2, 0, iArr);
 | |
|                 i4 = Math.max(i4, childAt.getMeasuredHeight() + getVerticalMargins(childAt));
 | |
|                 i5 = View.combineMeasuredStates(i5, childAt.getMeasuredState());
 | |
|             }
 | |
|         }
 | |
|         int i12 = this.mTitleMarginTop + this.mTitleMarginBottom;
 | |
|         int i13 = this.mTitleMarginStart + this.mTitleMarginEnd;
 | |
|         if (shouldLayout(this.mTitleTextView)) {
 | |
|             measureChildCollapseMargins(this.mTitleTextView, i, max2 + i13, i2, i12, iArr);
 | |
|             int measuredWidth = this.mTitleTextView.getMeasuredWidth() + getHorizontalMargins(this.mTitleTextView);
 | |
|             i9 = this.mTitleTextView.getMeasuredHeight() + getVerticalMargins(this.mTitleTextView);
 | |
|             i7 = View.combineMeasuredStates(i5, this.mTitleTextView.getMeasuredState());
 | |
|             i8 = measuredWidth;
 | |
|         } else {
 | |
|             i7 = i5;
 | |
|             i8 = 0;
 | |
|             i9 = 0;
 | |
|         }
 | |
|         if (shouldLayout(this.mSubtitleTextView)) {
 | |
|             i8 = Math.max(i8, measureChildCollapseMargins(this.mSubtitleTextView, i, max2 + i13, i2, i9 + i12, iArr));
 | |
|             i9 += this.mSubtitleTextView.getMeasuredHeight() + getVerticalMargins(this.mSubtitleTextView);
 | |
|             i7 = View.combineMeasuredStates(i7, this.mSubtitleTextView.getMeasuredState());
 | |
|         }
 | |
|         int max3 = Math.max(i4, i9);
 | |
|         setMeasuredDimension(View.resolveSizeAndState(Math.max(max2 + i8 + getPaddingLeft() + getPaddingRight(), getSuggestedMinimumWidth()), i, (-16777216) & i7), shouldCollapse() ? 0 : View.resolveSizeAndState(Math.max(max3 + getPaddingTop() + getPaddingBottom(), getSuggestedMinimumHeight()), i2, i7 << 16));
 | |
|     }
 | |
| 
 | |
|     /* JADX WARN: Removed duplicated region for block: B:106:0x01a5  */
 | |
|     /* JADX WARN: Removed duplicated region for block: B:111:0x0135  */
 | |
|     /* JADX WARN: Removed duplicated region for block: B:112:0x012e  */
 | |
|     /* JADX WARN: Removed duplicated region for block: B:113:0x011b  */
 | |
|     /* JADX WARN: Removed duplicated region for block: B:114:0x00fe  */
 | |
|     /* JADX WARN: Removed duplicated region for block: B:13:0x005f  */
 | |
|     /* JADX WARN: Removed duplicated region for block: B:18:0x0076  */
 | |
|     /* JADX WARN: Removed duplicated region for block: B:23:0x00b3  */
 | |
|     /* JADX WARN: Removed duplicated region for block: B:28:0x00ca  */
 | |
|     /* JADX WARN: Removed duplicated region for block: B:33:0x00e7  */
 | |
|     /* JADX WARN: Removed duplicated region for block: B:35:0x0103  */
 | |
|     /* JADX WARN: Removed duplicated region for block: B:42:0x029e A[LOOP:0: B:41:0x029c->B:42:0x029e, LOOP_END] */
 | |
|     /* JADX WARN: Removed duplicated region for block: B:46:0x02c0 A[LOOP:1: B:45:0x02be->B:46:0x02c0, LOOP_END] */
 | |
|     /* JADX WARN: Removed duplicated region for block: B:50:0x02ea  */
 | |
|     /* JADX WARN: Removed duplicated region for block: B:55:0x02f9 A[LOOP:2: B:54:0x02f7->B:55:0x02f9, LOOP_END] */
 | |
|     /* JADX WARN: Removed duplicated region for block: B:61:0x012b  */
 | |
|     /* JADX WARN: Removed duplicated region for block: B:63:0x0132  */
 | |
|     /* JADX WARN: Removed duplicated region for block: B:71:0x0166  */
 | |
|     /* JADX WARN: Removed duplicated region for block: B:78:0x01b4  */
 | |
|     /* JADX WARN: Removed duplicated region for block: B:90:0x0224  */
 | |
|     @Override // android.view.ViewGroup, android.view.View
 | |
|     /*
 | |
|         Code decompiled incorrectly, please refer to instructions dump.
 | |
|         To view partially-correct add '--show-bad-code' argument
 | |
|     */
 | |
|     protected void onLayout(boolean r20, int r21, int r22, int r23, int r24) {
 | |
|         /*
 | |
|             Method dump skipped, instructions count: 782
 | |
|             To view this dump add '--comments-level debug' option
 | |
|         */
 | |
|         throw new UnsupportedOperationException("Method not decompiled: androidx.appcompat.widget.Toolbar.onLayout(boolean, int, int, int, int):void");
 | |
|     }
 | |
| 
 | |
|     private int getViewListMeasuredWidth(List<View> list, int[] iArr) {
 | |
|         int i = iArr[0];
 | |
|         int i2 = iArr[1];
 | |
|         int size = list.size();
 | |
|         int i3 = 0;
 | |
|         int i4 = 0;
 | |
|         while (i3 < size) {
 | |
|             View view = list.get(i3);
 | |
|             LayoutParams layoutParams = (LayoutParams) view.getLayoutParams();
 | |
|             int i5 = layoutParams.leftMargin - i;
 | |
|             int i6 = layoutParams.rightMargin - i2;
 | |
|             int max = Math.max(0, i5);
 | |
|             int max2 = Math.max(0, i6);
 | |
|             int max3 = Math.max(0, -i5);
 | |
|             int max4 = Math.max(0, -i6);
 | |
|             i4 += max + view.getMeasuredWidth() + max2;
 | |
|             i3++;
 | |
|             i2 = max4;
 | |
|             i = max3;
 | |
|         }
 | |
|         return i4;
 | |
|     }
 | |
| 
 | |
|     private int layoutChildLeft(View view, int i, int[] iArr, int i2) {
 | |
|         LayoutParams layoutParams = (LayoutParams) view.getLayoutParams();
 | |
|         int i3 = layoutParams.leftMargin - iArr[0];
 | |
|         int max = i + Math.max(0, i3);
 | |
|         iArr[0] = Math.max(0, -i3);
 | |
|         int childTop = getChildTop(view, i2);
 | |
|         int measuredWidth = view.getMeasuredWidth();
 | |
|         view.layout(max, childTop, max + measuredWidth, view.getMeasuredHeight() + childTop);
 | |
|         return max + measuredWidth + layoutParams.rightMargin;
 | |
|     }
 | |
| 
 | |
|     private int layoutChildRight(View view, int i, int[] iArr, int i2) {
 | |
|         LayoutParams layoutParams = (LayoutParams) view.getLayoutParams();
 | |
|         int i3 = layoutParams.rightMargin - iArr[1];
 | |
|         int max = i - Math.max(0, i3);
 | |
|         iArr[1] = Math.max(0, -i3);
 | |
|         int childTop = getChildTop(view, i2);
 | |
|         int measuredWidth = view.getMeasuredWidth();
 | |
|         view.layout(max - measuredWidth, childTop, max, view.getMeasuredHeight() + childTop);
 | |
|         return max - (measuredWidth + layoutParams.leftMargin);
 | |
|     }
 | |
| 
 | |
|     private int getChildTop(View view, int i) {
 | |
|         LayoutParams layoutParams = (LayoutParams) view.getLayoutParams();
 | |
|         int measuredHeight = view.getMeasuredHeight();
 | |
|         int i2 = i > 0 ? (measuredHeight - i) / 2 : 0;
 | |
|         int childVerticalGravity = getChildVerticalGravity(layoutParams.gravity);
 | |
|         if (childVerticalGravity == 48) {
 | |
|             return getPaddingTop() - i2;
 | |
|         }
 | |
|         if (childVerticalGravity == 80) {
 | |
|             return (((getHeight() - getPaddingBottom()) - measuredHeight) - layoutParams.bottomMargin) - i2;
 | |
|         }
 | |
|         int paddingTop = getPaddingTop();
 | |
|         int paddingBottom = getPaddingBottom();
 | |
|         int height = getHeight();
 | |
|         int i3 = (((height - paddingTop) - paddingBottom) - measuredHeight) / 2;
 | |
|         if (i3 < layoutParams.topMargin) {
 | |
|             i3 = layoutParams.topMargin;
 | |
|         } else {
 | |
|             int i4 = (((height - paddingBottom) - measuredHeight) - i3) - paddingTop;
 | |
|             if (i4 < layoutParams.bottomMargin) {
 | |
|                 i3 = Math.max(0, i3 - (layoutParams.bottomMargin - i4));
 | |
|             }
 | |
|         }
 | |
|         return paddingTop + i3;
 | |
|     }
 | |
| 
 | |
|     private void addCustomViewsWithGravity(List<View> list, int i) {
 | |
|         boolean z = ViewCompat.getLayoutDirection(this) == 1;
 | |
|         int childCount = getChildCount();
 | |
|         int absoluteGravity = GravityCompat.getAbsoluteGravity(i, ViewCompat.getLayoutDirection(this));
 | |
|         list.clear();
 | |
|         if (!z) {
 | |
|             for (int i2 = 0; i2 < childCount; i2++) {
 | |
|                 View childAt = getChildAt(i2);
 | |
|                 LayoutParams layoutParams = (LayoutParams) childAt.getLayoutParams();
 | |
|                 if (layoutParams.mViewType == 0 && shouldLayout(childAt) && getChildHorizontalGravity(layoutParams.gravity) == absoluteGravity) {
 | |
|                     list.add(childAt);
 | |
|                 }
 | |
|             }
 | |
|             return;
 | |
|         }
 | |
|         for (int i3 = childCount - 1; i3 >= 0; i3--) {
 | |
|             View childAt2 = getChildAt(i3);
 | |
|             LayoutParams layoutParams2 = (LayoutParams) childAt2.getLayoutParams();
 | |
|             if (layoutParams2.mViewType == 0 && shouldLayout(childAt2) && getChildHorizontalGravity(layoutParams2.gravity) == absoluteGravity) {
 | |
|                 list.add(childAt2);
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private int getChildHorizontalGravity(int i) {
 | |
|         int layoutDirection = ViewCompat.getLayoutDirection(this);
 | |
|         int absoluteGravity = GravityCompat.getAbsoluteGravity(i, layoutDirection) & 7;
 | |
|         return (absoluteGravity == 1 || absoluteGravity == 3 || absoluteGravity == 5) ? absoluteGravity : layoutDirection == 1 ? 5 : 3;
 | |
|     }
 | |
| 
 | |
|     private boolean shouldLayout(View view) {
 | |
|         return (view == null || view.getParent() != this || view.getVisibility() == 8) ? false : true;
 | |
|     }
 | |
| 
 | |
|     private int getHorizontalMargins(View view) {
 | |
|         ViewGroup.MarginLayoutParams marginLayoutParams = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
 | |
|         return MarginLayoutParamsCompat.getMarginStart(marginLayoutParams) + MarginLayoutParamsCompat.getMarginEnd(marginLayoutParams);
 | |
|     }
 | |
| 
 | |
|     private int getVerticalMargins(View view) {
 | |
|         ViewGroup.MarginLayoutParams marginLayoutParams = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
 | |
|         return marginLayoutParams.topMargin + marginLayoutParams.bottomMargin;
 | |
|     }
 | |
| 
 | |
|     @Override // android.view.ViewGroup
 | |
|     public LayoutParams generateLayoutParams(AttributeSet attributeSet) {
 | |
|         return new LayoutParams(getContext(), attributeSet);
 | |
|     }
 | |
| 
 | |
|     /* JADX INFO: Access modifiers changed from: protected */
 | |
|     @Override // android.view.ViewGroup
 | |
|     public LayoutParams generateLayoutParams(ViewGroup.LayoutParams layoutParams) {
 | |
|         if (layoutParams instanceof LayoutParams) {
 | |
|             return new LayoutParams((LayoutParams) layoutParams);
 | |
|         }
 | |
|         if (layoutParams instanceof ActionBar.LayoutParams) {
 | |
|             return new LayoutParams((ActionBar.LayoutParams) layoutParams);
 | |
|         }
 | |
|         if (layoutParams instanceof ViewGroup.MarginLayoutParams) {
 | |
|             return new LayoutParams((ViewGroup.MarginLayoutParams) layoutParams);
 | |
|         }
 | |
|         return new LayoutParams(layoutParams);
 | |
|     }
 | |
| 
 | |
|     /* JADX INFO: Access modifiers changed from: protected */
 | |
|     @Override // android.view.ViewGroup
 | |
|     public LayoutParams generateDefaultLayoutParams() {
 | |
|         return new LayoutParams(-2, -2);
 | |
|     }
 | |
| 
 | |
|     @Override // android.view.ViewGroup
 | |
|     protected boolean checkLayoutParams(ViewGroup.LayoutParams layoutParams) {
 | |
|         return super.checkLayoutParams(layoutParams) && (layoutParams instanceof LayoutParams);
 | |
|     }
 | |
| 
 | |
|     public DecorToolbar getWrapper() {
 | |
|         if (this.mWrapper == null) {
 | |
|             this.mWrapper = new ToolbarWidgetWrapper(this, true);
 | |
|         }
 | |
|         return this.mWrapper;
 | |
|     }
 | |
| 
 | |
|     void removeChildrenForExpandedActionView() {
 | |
|         for (int childCount = getChildCount() - 1; childCount >= 0; childCount--) {
 | |
|             View childAt = getChildAt(childCount);
 | |
|             if (((LayoutParams) childAt.getLayoutParams()).mViewType != 2 && childAt != this.mMenuView) {
 | |
|                 removeViewAt(childCount);
 | |
|                 this.mHiddenViews.add(childAt);
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     void addChildrenForExpandedActionView() {
 | |
|         for (int size = this.mHiddenViews.size() - 1; size >= 0; size--) {
 | |
|             addView(this.mHiddenViews.get(size));
 | |
|         }
 | |
|         this.mHiddenViews.clear();
 | |
|     }
 | |
| 
 | |
|     private boolean isChildOrHidden(View view) {
 | |
|         return view.getParent() == this || this.mHiddenViews.contains(view);
 | |
|     }
 | |
| 
 | |
|     public void setCollapsible(boolean z) {
 | |
|         this.mCollapsible = z;
 | |
|         requestLayout();
 | |
|     }
 | |
| 
 | |
|     public void setMenuCallbacks(MenuPresenter.Callback callback, MenuBuilder.Callback callback2) {
 | |
|         this.mActionMenuPresenterCallback = callback;
 | |
|         this.mMenuBuilderCallback = callback2;
 | |
|         ActionMenuView actionMenuView = this.mMenuView;
 | |
|         if (actionMenuView != null) {
 | |
|             actionMenuView.setMenuCallbacks(callback, callback2);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private void ensureContentInsets() {
 | |
|         if (this.mContentInsets == null) {
 | |
|             this.mContentInsets = new RtlSpacingHelper();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private ArrayList<MenuItem> getCurrentMenuItems() {
 | |
|         ArrayList<MenuItem> arrayList = new ArrayList<>();
 | |
|         Menu menu = getMenu();
 | |
|         for (int i = 0; i < menu.size(); i++) {
 | |
|             arrayList.add(menu.getItem(i));
 | |
|         }
 | |
|         return arrayList;
 | |
|     }
 | |
| 
 | |
|     private void onCreateMenu() {
 | |
|         Menu menu = getMenu();
 | |
|         ArrayList<MenuItem> currentMenuItems = getCurrentMenuItems();
 | |
|         this.mMenuHostHelper.onCreateMenu(menu, getMenuInflater());
 | |
|         ArrayList<MenuItem> currentMenuItems2 = getCurrentMenuItems();
 | |
|         currentMenuItems2.removeAll(currentMenuItems);
 | |
|         this.mProvidedMenuItems = currentMenuItems2;
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.core.view.MenuHost
 | |
|     public void addMenuProvider(MenuProvider menuProvider) {
 | |
|         this.mMenuHostHelper.addMenuProvider(menuProvider);
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.core.view.MenuHost
 | |
|     public void addMenuProvider(MenuProvider menuProvider, LifecycleOwner lifecycleOwner) {
 | |
|         this.mMenuHostHelper.addMenuProvider(menuProvider, lifecycleOwner);
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.core.view.MenuHost
 | |
|     public void addMenuProvider(MenuProvider menuProvider, LifecycleOwner lifecycleOwner, Lifecycle.State state) {
 | |
|         this.mMenuHostHelper.addMenuProvider(menuProvider, lifecycleOwner, state);
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.core.view.MenuHost
 | |
|     public void removeMenuProvider(MenuProvider menuProvider) {
 | |
|         this.mMenuHostHelper.removeMenuProvider(menuProvider);
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.core.view.MenuHost
 | |
|     public void invalidateMenu() {
 | |
|         Iterator<MenuItem> it = this.mProvidedMenuItems.iterator();
 | |
|         while (it.hasNext()) {
 | |
|             getMenu().removeItem(it.next().getItemId());
 | |
|         }
 | |
|         onCreateMenu();
 | |
|     }
 | |
| 
 | |
|     void updateBackInvokedCallbackState() {
 | |
|         OnBackInvokedDispatcher onBackInvokedDispatcher;
 | |
|         if (Build.VERSION.SDK_INT >= 33) {
 | |
|             OnBackInvokedDispatcher findOnBackInvokedDispatcher = Api33Impl.findOnBackInvokedDispatcher(this);
 | |
|             boolean z = hasExpandedActionView() && findOnBackInvokedDispatcher != null && ViewCompat.isAttachedToWindow(this) && this.mBackInvokedCallbackEnabled;
 | |
|             if (z && this.mBackInvokedDispatcher == null) {
 | |
|                 if (this.mBackInvokedCallback == null) {
 | |
|                     this.mBackInvokedCallback = Api33Impl.newOnBackInvokedCallback(new Runnable() { // from class: androidx.appcompat.widget.Toolbar$$ExternalSyntheticLambda1
 | |
|                         @Override // java.lang.Runnable
 | |
|                         public final void run() {
 | |
|                             Toolbar.this.collapseActionView();
 | |
|                         }
 | |
|                     });
 | |
|                 }
 | |
|                 Api33Impl.tryRegisterOnBackInvokedCallback(findOnBackInvokedDispatcher, this.mBackInvokedCallback);
 | |
|                 this.mBackInvokedDispatcher = findOnBackInvokedDispatcher;
 | |
|                 return;
 | |
|             }
 | |
|             if (z || (onBackInvokedDispatcher = this.mBackInvokedDispatcher) == null) {
 | |
|                 return;
 | |
|             }
 | |
|             Api33Impl.tryUnregisterOnBackInvokedCallback(onBackInvokedDispatcher, this.mBackInvokedCallback);
 | |
|             this.mBackInvokedDispatcher = null;
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public static class LayoutParams extends ActionBar.LayoutParams {
 | |
|         static final int CUSTOM = 0;
 | |
|         static final int EXPANDED = 2;
 | |
|         static final int SYSTEM = 1;
 | |
|         int mViewType;
 | |
| 
 | |
|         public LayoutParams(Context context, AttributeSet attributeSet) {
 | |
|             super(context, attributeSet);
 | |
|             this.mViewType = 0;
 | |
|         }
 | |
| 
 | |
|         public LayoutParams(int i, int i2) {
 | |
|             super(i, i2);
 | |
|             this.mViewType = 0;
 | |
|             this.gravity = 8388627;
 | |
|         }
 | |
| 
 | |
|         public LayoutParams(int i, int i2, int i3) {
 | |
|             super(i, i2);
 | |
|             this.mViewType = 0;
 | |
|             this.gravity = i3;
 | |
|         }
 | |
| 
 | |
|         public LayoutParams(int i) {
 | |
|             this(-2, -1, i);
 | |
|         }
 | |
| 
 | |
|         public LayoutParams(LayoutParams layoutParams) {
 | |
|             super((ActionBar.LayoutParams) layoutParams);
 | |
|             this.mViewType = 0;
 | |
|             this.mViewType = layoutParams.mViewType;
 | |
|         }
 | |
| 
 | |
|         public LayoutParams(ActionBar.LayoutParams layoutParams) {
 | |
|             super(layoutParams);
 | |
|             this.mViewType = 0;
 | |
|         }
 | |
| 
 | |
|         public LayoutParams(ViewGroup.MarginLayoutParams marginLayoutParams) {
 | |
|             super(marginLayoutParams);
 | |
|             this.mViewType = 0;
 | |
|             copyMarginsFromCompat(marginLayoutParams);
 | |
|         }
 | |
| 
 | |
|         public LayoutParams(ViewGroup.LayoutParams layoutParams) {
 | |
|             super(layoutParams);
 | |
|             this.mViewType = 0;
 | |
|         }
 | |
| 
 | |
|         void copyMarginsFromCompat(ViewGroup.MarginLayoutParams marginLayoutParams) {
 | |
|             this.leftMargin = marginLayoutParams.leftMargin;
 | |
|             this.topMargin = marginLayoutParams.topMargin;
 | |
|             this.rightMargin = marginLayoutParams.rightMargin;
 | |
|             this.bottomMargin = marginLayoutParams.bottomMargin;
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public static class SavedState extends AbsSavedState {
 | |
|         public static final Parcelable.Creator<SavedState> CREATOR = new Parcelable.ClassLoaderCreator<SavedState>() { // from class: androidx.appcompat.widget.Toolbar.SavedState.1
 | |
|             /* JADX WARN: Can't rename method to resolve collision */
 | |
|             @Override // android.os.Parcelable.ClassLoaderCreator
 | |
|             public SavedState createFromParcel(Parcel parcel, ClassLoader classLoader) {
 | |
|                 return new SavedState(parcel, classLoader);
 | |
|             }
 | |
| 
 | |
|             @Override // android.os.Parcelable.Creator
 | |
|             public SavedState createFromParcel(Parcel parcel) {
 | |
|                 return new SavedState(parcel, null);
 | |
|             }
 | |
| 
 | |
|             @Override // android.os.Parcelable.Creator
 | |
|             public SavedState[] newArray(int i) {
 | |
|                 return new SavedState[i];
 | |
|             }
 | |
|         };
 | |
|         int expandedMenuItemId;
 | |
|         boolean isOverflowOpen;
 | |
| 
 | |
|         public SavedState(Parcel parcel) {
 | |
|             this(parcel, null);
 | |
|         }
 | |
| 
 | |
|         public SavedState(Parcel parcel, ClassLoader classLoader) {
 | |
|             super(parcel, classLoader);
 | |
|             this.expandedMenuItemId = parcel.readInt();
 | |
|             this.isOverflowOpen = parcel.readInt() != 0;
 | |
|         }
 | |
| 
 | |
|         public SavedState(Parcelable parcelable) {
 | |
|             super(parcelable);
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.customview.view.AbsSavedState, android.os.Parcelable
 | |
|         public void writeToParcel(Parcel parcel, int i) {
 | |
|             super.writeToParcel(parcel, i);
 | |
|             parcel.writeInt(this.expandedMenuItemId);
 | |
|             parcel.writeInt(this.isOverflowOpen ? 1 : 0);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private class ExpandedActionViewMenuPresenter implements MenuPresenter {
 | |
|         MenuItemImpl mCurrentExpandedItem;
 | |
|         MenuBuilder mMenu;
 | |
| 
 | |
|         @Override // androidx.appcompat.view.menu.MenuPresenter
 | |
|         public boolean flagActionItems() {
 | |
|             return false;
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.appcompat.view.menu.MenuPresenter
 | |
|         public int getId() {
 | |
|             return 0;
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.appcompat.view.menu.MenuPresenter
 | |
|         public MenuView getMenuView(ViewGroup viewGroup) {
 | |
|             return null;
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.appcompat.view.menu.MenuPresenter
 | |
|         public void onCloseMenu(MenuBuilder menuBuilder, boolean z) {
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.appcompat.view.menu.MenuPresenter
 | |
|         public void onRestoreInstanceState(Parcelable parcelable) {
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.appcompat.view.menu.MenuPresenter
 | |
|         public Parcelable onSaveInstanceState() {
 | |
|             return null;
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.appcompat.view.menu.MenuPresenter
 | |
|         public boolean onSubMenuSelected(SubMenuBuilder subMenuBuilder) {
 | |
|             return false;
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.appcompat.view.menu.MenuPresenter
 | |
|         public void setCallback(MenuPresenter.Callback callback) {
 | |
|         }
 | |
| 
 | |
|         ExpandedActionViewMenuPresenter() {
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.appcompat.view.menu.MenuPresenter
 | |
|         public void initForMenu(Context context, MenuBuilder menuBuilder) {
 | |
|             MenuItemImpl menuItemImpl;
 | |
|             MenuBuilder menuBuilder2 = this.mMenu;
 | |
|             if (menuBuilder2 != null && (menuItemImpl = this.mCurrentExpandedItem) != null) {
 | |
|                 menuBuilder2.collapseItemActionView(menuItemImpl);
 | |
|             }
 | |
|             this.mMenu = menuBuilder;
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.appcompat.view.menu.MenuPresenter
 | |
|         public void updateMenuView(boolean z) {
 | |
|             if (this.mCurrentExpandedItem != null) {
 | |
|                 MenuBuilder menuBuilder = this.mMenu;
 | |
|                 if (menuBuilder != null) {
 | |
|                     int size = menuBuilder.size();
 | |
|                     for (int i = 0; i < size; i++) {
 | |
|                         if (this.mMenu.getItem(i) == this.mCurrentExpandedItem) {
 | |
|                             return;
 | |
|                         }
 | |
|                     }
 | |
|                 }
 | |
|                 collapseItemActionView(this.mMenu, this.mCurrentExpandedItem);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.appcompat.view.menu.MenuPresenter
 | |
|         public boolean expandItemActionView(MenuBuilder menuBuilder, MenuItemImpl menuItemImpl) {
 | |
|             Toolbar.this.ensureCollapseButtonView();
 | |
|             ViewParent parent = Toolbar.this.mCollapseButtonView.getParent();
 | |
|             Toolbar toolbar = Toolbar.this;
 | |
|             if (parent != toolbar) {
 | |
|                 if (parent instanceof ViewGroup) {
 | |
|                     ((ViewGroup) parent).removeView(toolbar.mCollapseButtonView);
 | |
|                 }
 | |
|                 Toolbar toolbar2 = Toolbar.this;
 | |
|                 toolbar2.addView(toolbar2.mCollapseButtonView);
 | |
|             }
 | |
|             Toolbar.this.mExpandedActionView = menuItemImpl.getActionView();
 | |
|             this.mCurrentExpandedItem = menuItemImpl;
 | |
|             ViewParent parent2 = Toolbar.this.mExpandedActionView.getParent();
 | |
|             Toolbar toolbar3 = Toolbar.this;
 | |
|             if (parent2 != toolbar3) {
 | |
|                 if (parent2 instanceof ViewGroup) {
 | |
|                     ((ViewGroup) parent2).removeView(toolbar3.mExpandedActionView);
 | |
|                 }
 | |
|                 LayoutParams generateDefaultLayoutParams = Toolbar.this.generateDefaultLayoutParams();
 | |
|                 generateDefaultLayoutParams.gravity = (Toolbar.this.mButtonGravity & 112) | GravityCompat.START;
 | |
|                 generateDefaultLayoutParams.mViewType = 2;
 | |
|                 Toolbar.this.mExpandedActionView.setLayoutParams(generateDefaultLayoutParams);
 | |
|                 Toolbar toolbar4 = Toolbar.this;
 | |
|                 toolbar4.addView(toolbar4.mExpandedActionView);
 | |
|             }
 | |
|             Toolbar.this.removeChildrenForExpandedActionView();
 | |
|             Toolbar.this.requestLayout();
 | |
|             menuItemImpl.setActionViewExpanded(true);
 | |
|             if (Toolbar.this.mExpandedActionView instanceof CollapsibleActionView) {
 | |
|                 ((CollapsibleActionView) Toolbar.this.mExpandedActionView).onActionViewExpanded();
 | |
|             }
 | |
|             Toolbar.this.updateBackInvokedCallbackState();
 | |
|             return true;
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.appcompat.view.menu.MenuPresenter
 | |
|         public boolean collapseItemActionView(MenuBuilder menuBuilder, MenuItemImpl menuItemImpl) {
 | |
|             if (Toolbar.this.mExpandedActionView instanceof CollapsibleActionView) {
 | |
|                 ((CollapsibleActionView) Toolbar.this.mExpandedActionView).onActionViewCollapsed();
 | |
|             }
 | |
|             Toolbar toolbar = Toolbar.this;
 | |
|             toolbar.removeView(toolbar.mExpandedActionView);
 | |
|             Toolbar toolbar2 = Toolbar.this;
 | |
|             toolbar2.removeView(toolbar2.mCollapseButtonView);
 | |
|             Toolbar.this.mExpandedActionView = null;
 | |
|             Toolbar.this.addChildrenForExpandedActionView();
 | |
|             this.mCurrentExpandedItem = null;
 | |
|             Toolbar.this.requestLayout();
 | |
|             menuItemImpl.setActionViewExpanded(false);
 | |
|             Toolbar.this.updateBackInvokedCallbackState();
 | |
|             return true;
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     static class Api33Impl {
 | |
|         private Api33Impl() {
 | |
|         }
 | |
| 
 | |
|         static void tryRegisterOnBackInvokedCallback(Object obj, Object obj2) {
 | |
|             ((OnBackInvokedDispatcher) obj).registerOnBackInvokedCallback(DurationKt.NANOS_IN_MILLIS, (OnBackInvokedCallback) obj2);
 | |
|         }
 | |
| 
 | |
|         static void tryUnregisterOnBackInvokedCallback(Object obj, Object obj2) {
 | |
|             ((OnBackInvokedDispatcher) obj).unregisterOnBackInvokedCallback((OnBackInvokedCallback) obj2);
 | |
|         }
 | |
| 
 | |
|         static OnBackInvokedDispatcher findOnBackInvokedDispatcher(View view) {
 | |
|             return view.findOnBackInvokedDispatcher();
 | |
|         }
 | |
| 
 | |
|         static OnBackInvokedCallback newOnBackInvokedCallback(final Runnable runnable) {
 | |
|             Objects.requireNonNull(runnable);
 | |
|             return new OnBackInvokedCallback() { // from class: androidx.appcompat.widget.Toolbar$Api33Impl$$ExternalSyntheticLambda0
 | |
|                 @Override // android.window.OnBackInvokedCallback
 | |
|                 public final void onBackInvoked() {
 | |
|                     runnable.run();
 | |
|                 }
 | |
|             };
 | |
|         }
 | |
|     }
 | |
| }
 |