ADD week 5
This commit is contained in:
		| @@ -0,0 +1,388 @@ | ||||
| package androidx.appcompat.widget; | ||||
|  | ||||
| import android.content.Context; | ||||
| import android.text.TextUtils; | ||||
| import android.util.AttributeSet; | ||||
| import android.view.LayoutInflater; | ||||
| import android.view.MotionEvent; | ||||
| import android.view.View; | ||||
| import android.view.ViewGroup; | ||||
| import android.widget.LinearLayout; | ||||
| import android.widget.TextView; | ||||
| import androidx.appcompat.R; | ||||
| import androidx.appcompat.view.ActionMode; | ||||
| import androidx.appcompat.view.menu.MenuBuilder; | ||||
| import androidx.constraintlayout.core.widgets.analyzer.BasicMeasure; | ||||
| import androidx.core.view.ViewCompat; | ||||
| import androidx.core.view.ViewPropertyAnimatorCompat; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| public class ActionBarContextView extends AbsActionBarView { | ||||
|     private View mClose; | ||||
|     private View mCloseButton; | ||||
|     private int mCloseItemLayout; | ||||
|     private View mCustomView; | ||||
|     private CharSequence mSubtitle; | ||||
|     private int mSubtitleStyleRes; | ||||
|     private TextView mSubtitleView; | ||||
|     private CharSequence mTitle; | ||||
|     private LinearLayout mTitleLayout; | ||||
|     private boolean mTitleOptional; | ||||
|     private int mTitleStyleRes; | ||||
|     private TextView mTitleView; | ||||
|  | ||||
|     public CharSequence getSubtitle() { | ||||
|         return this.mSubtitle; | ||||
|     } | ||||
|  | ||||
|     public CharSequence getTitle() { | ||||
|         return this.mTitle; | ||||
|     } | ||||
|  | ||||
|     public boolean isTitleOptional() { | ||||
|         return this.mTitleOptional; | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.ViewGroup | ||||
|     public boolean shouldDelayChildPressedState() { | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.AbsActionBarView | ||||
|     public /* bridge */ /* synthetic */ void animateToVisibility(int i) { | ||||
|         super.animateToVisibility(i); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.AbsActionBarView | ||||
|     public /* bridge */ /* synthetic */ boolean canShowOverflowMenu() { | ||||
|         return super.canShowOverflowMenu(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.AbsActionBarView | ||||
|     public /* bridge */ /* synthetic */ void dismissPopupMenus() { | ||||
|         super.dismissPopupMenus(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.AbsActionBarView | ||||
|     public /* bridge */ /* synthetic */ int getAnimatedVisibility() { | ||||
|         return super.getAnimatedVisibility(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.AbsActionBarView | ||||
|     public /* bridge */ /* synthetic */ int getContentHeight() { | ||||
|         return super.getContentHeight(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.AbsActionBarView | ||||
|     public /* bridge */ /* synthetic */ boolean isOverflowMenuShowPending() { | ||||
|         return super.isOverflowMenuShowPending(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.AbsActionBarView | ||||
|     public /* bridge */ /* synthetic */ boolean isOverflowReserved() { | ||||
|         return super.isOverflowReserved(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.AbsActionBarView, android.view.View | ||||
|     public /* bridge */ /* synthetic */ boolean onHoverEvent(MotionEvent motionEvent) { | ||||
|         return super.onHoverEvent(motionEvent); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.AbsActionBarView, android.view.View | ||||
|     public /* bridge */ /* synthetic */ boolean onTouchEvent(MotionEvent motionEvent) { | ||||
|         return super.onTouchEvent(motionEvent); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.AbsActionBarView | ||||
|     public /* bridge */ /* synthetic */ void postShowOverflowMenu() { | ||||
|         super.postShowOverflowMenu(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.AbsActionBarView, android.view.View | ||||
|     public /* bridge */ /* synthetic */ void setVisibility(int i) { | ||||
|         super.setVisibility(i); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.AbsActionBarView | ||||
|     public /* bridge */ /* synthetic */ ViewPropertyAnimatorCompat setupAnimatorToVisibility(int i, long j) { | ||||
|         return super.setupAnimatorToVisibility(i, j); | ||||
|     } | ||||
|  | ||||
|     public ActionBarContextView(Context context) { | ||||
|         this(context, null); | ||||
|     } | ||||
|  | ||||
|     public ActionBarContextView(Context context, AttributeSet attributeSet) { | ||||
|         this(context, attributeSet, R.attr.actionModeStyle); | ||||
|     } | ||||
|  | ||||
|     public ActionBarContextView(Context context, AttributeSet attributeSet, int i) { | ||||
|         super(context, attributeSet, i); | ||||
|         TintTypedArray obtainStyledAttributes = TintTypedArray.obtainStyledAttributes(context, attributeSet, R.styleable.ActionMode, i, 0); | ||||
|         ViewCompat.setBackground(this, obtainStyledAttributes.getDrawable(R.styleable.ActionMode_background)); | ||||
|         this.mTitleStyleRes = obtainStyledAttributes.getResourceId(R.styleable.ActionMode_titleTextStyle, 0); | ||||
|         this.mSubtitleStyleRes = obtainStyledAttributes.getResourceId(R.styleable.ActionMode_subtitleTextStyle, 0); | ||||
|         this.mContentHeight = obtainStyledAttributes.getLayoutDimension(R.styleable.ActionMode_height, 0); | ||||
|         this.mCloseItemLayout = obtainStyledAttributes.getResourceId(R.styleable.ActionMode_closeItemLayout, R.layout.abc_action_mode_close_item_material); | ||||
|         obtainStyledAttributes.recycle(); | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.ViewGroup, android.view.View | ||||
|     public void onDetachedFromWindow() { | ||||
|         super.onDetachedFromWindow(); | ||||
|         if (this.mActionMenuPresenter != null) { | ||||
|             this.mActionMenuPresenter.hideOverflowMenu(); | ||||
|             this.mActionMenuPresenter.hideSubMenus(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.AbsActionBarView | ||||
|     public void setContentHeight(int i) { | ||||
|         this.mContentHeight = i; | ||||
|     } | ||||
|  | ||||
|     public void setCustomView(View view) { | ||||
|         LinearLayout linearLayout; | ||||
|         View view2 = this.mCustomView; | ||||
|         if (view2 != null) { | ||||
|             removeView(view2); | ||||
|         } | ||||
|         this.mCustomView = view; | ||||
|         if (view != null && (linearLayout = this.mTitleLayout) != null) { | ||||
|             removeView(linearLayout); | ||||
|             this.mTitleLayout = null; | ||||
|         } | ||||
|         if (view != null) { | ||||
|             addView(view); | ||||
|         } | ||||
|         requestLayout(); | ||||
|     } | ||||
|  | ||||
|     public void setTitle(CharSequence charSequence) { | ||||
|         this.mTitle = charSequence; | ||||
|         initTitle(); | ||||
|         ViewCompat.setAccessibilityPaneTitle(this, charSequence); | ||||
|     } | ||||
|  | ||||
|     public void setSubtitle(CharSequence charSequence) { | ||||
|         this.mSubtitle = charSequence; | ||||
|         initTitle(); | ||||
|     } | ||||
|  | ||||
|     private void initTitle() { | ||||
|         if (this.mTitleLayout == null) { | ||||
|             LayoutInflater.from(getContext()).inflate(R.layout.abc_action_bar_title_item, this); | ||||
|             LinearLayout linearLayout = (LinearLayout) getChildAt(getChildCount() - 1); | ||||
|             this.mTitleLayout = linearLayout; | ||||
|             this.mTitleView = (TextView) linearLayout.findViewById(R.id.action_bar_title); | ||||
|             this.mSubtitleView = (TextView) this.mTitleLayout.findViewById(R.id.action_bar_subtitle); | ||||
|             if (this.mTitleStyleRes != 0) { | ||||
|                 this.mTitleView.setTextAppearance(getContext(), this.mTitleStyleRes); | ||||
|             } | ||||
|             if (this.mSubtitleStyleRes != 0) { | ||||
|                 this.mSubtitleView.setTextAppearance(getContext(), this.mSubtitleStyleRes); | ||||
|             } | ||||
|         } | ||||
|         this.mTitleView.setText(this.mTitle); | ||||
|         this.mSubtitleView.setText(this.mSubtitle); | ||||
|         boolean z = !TextUtils.isEmpty(this.mTitle); | ||||
|         boolean z2 = !TextUtils.isEmpty(this.mSubtitle); | ||||
|         int i = 0; | ||||
|         this.mSubtitleView.setVisibility(z2 ? 0 : 8); | ||||
|         LinearLayout linearLayout2 = this.mTitleLayout; | ||||
|         if (!z && !z2) { | ||||
|             i = 8; | ||||
|         } | ||||
|         linearLayout2.setVisibility(i); | ||||
|         if (this.mTitleLayout.getParent() == null) { | ||||
|             addView(this.mTitleLayout); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public void initForMode(final ActionMode actionMode) { | ||||
|         View view = this.mClose; | ||||
|         if (view == null) { | ||||
|             View inflate = LayoutInflater.from(getContext()).inflate(this.mCloseItemLayout, (ViewGroup) this, false); | ||||
|             this.mClose = inflate; | ||||
|             addView(inflate); | ||||
|         } else if (view.getParent() == null) { | ||||
|             addView(this.mClose); | ||||
|         } | ||||
|         View findViewById = this.mClose.findViewById(R.id.action_mode_close_button); | ||||
|         this.mCloseButton = findViewById; | ||||
|         findViewById.setOnClickListener(new View.OnClickListener() { // from class: androidx.appcompat.widget.ActionBarContextView.1 | ||||
|             @Override // android.view.View.OnClickListener | ||||
|             public void onClick(View view2) { | ||||
|                 actionMode.finish(); | ||||
|             } | ||||
|         }); | ||||
|         MenuBuilder menuBuilder = (MenuBuilder) actionMode.getMenu(); | ||||
|         if (this.mActionMenuPresenter != null) { | ||||
|             this.mActionMenuPresenter.dismissPopupMenus(); | ||||
|         } | ||||
|         this.mActionMenuPresenter = new ActionMenuPresenter(getContext()); | ||||
|         this.mActionMenuPresenter.setReserveOverflow(true); | ||||
|         ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(-2, -1); | ||||
|         menuBuilder.addMenuPresenter(this.mActionMenuPresenter, this.mPopupContext); | ||||
|         this.mMenuView = (ActionMenuView) this.mActionMenuPresenter.getMenuView(this); | ||||
|         ViewCompat.setBackground(this.mMenuView, null); | ||||
|         addView(this.mMenuView, layoutParams); | ||||
|     } | ||||
|  | ||||
|     public void closeMode() { | ||||
|         if (this.mClose == null) { | ||||
|             killMode(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public void killMode() { | ||||
|         removeAllViews(); | ||||
|         this.mCustomView = null; | ||||
|         this.mMenuView = null; | ||||
|         this.mActionMenuPresenter = null; | ||||
|         View view = this.mCloseButton; | ||||
|         if (view != null) { | ||||
|             view.setOnClickListener(null); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.AbsActionBarView | ||||
|     public boolean showOverflowMenu() { | ||||
|         if (this.mActionMenuPresenter != null) { | ||||
|             return this.mActionMenuPresenter.showOverflowMenu(); | ||||
|         } | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.AbsActionBarView | ||||
|     public boolean hideOverflowMenu() { | ||||
|         if (this.mActionMenuPresenter != null) { | ||||
|             return this.mActionMenuPresenter.hideOverflowMenu(); | ||||
|         } | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.AbsActionBarView | ||||
|     public boolean isOverflowMenuShowing() { | ||||
|         if (this.mActionMenuPresenter != null) { | ||||
|             return this.mActionMenuPresenter.isOverflowMenuShowing(); | ||||
|         } | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.ViewGroup | ||||
|     protected ViewGroup.LayoutParams generateDefaultLayoutParams() { | ||||
|         return new ViewGroup.MarginLayoutParams(-1, -2); | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.ViewGroup | ||||
|     public ViewGroup.LayoutParams generateLayoutParams(AttributeSet attributeSet) { | ||||
|         return new ViewGroup.MarginLayoutParams(getContext(), attributeSet); | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.View | ||||
|     protected void onMeasure(int i, int i2) { | ||||
|         int mode = View.MeasureSpec.getMode(i); | ||||
|         int i3 = BasicMeasure.EXACTLY; | ||||
|         if (mode != 1073741824) { | ||||
|             throw new IllegalStateException(getClass().getSimpleName() + " can only be used with android:layout_width=\"match_parent\" (or fill_parent)"); | ||||
|         } | ||||
|         if (View.MeasureSpec.getMode(i2) == 0) { | ||||
|             throw new IllegalStateException(getClass().getSimpleName() + " can only be used with android:layout_height=\"wrap_content\""); | ||||
|         } | ||||
|         int size = View.MeasureSpec.getSize(i); | ||||
|         int size2 = this.mContentHeight > 0 ? this.mContentHeight : View.MeasureSpec.getSize(i2); | ||||
|         int paddingTop = getPaddingTop() + getPaddingBottom(); | ||||
|         int paddingLeft = (size - getPaddingLeft()) - getPaddingRight(); | ||||
|         int i4 = size2 - paddingTop; | ||||
|         int makeMeasureSpec = View.MeasureSpec.makeMeasureSpec(i4, Integer.MIN_VALUE); | ||||
|         View view = this.mClose; | ||||
|         if (view != null) { | ||||
|             int measureChildView = measureChildView(view, paddingLeft, makeMeasureSpec, 0); | ||||
|             ViewGroup.MarginLayoutParams marginLayoutParams = (ViewGroup.MarginLayoutParams) this.mClose.getLayoutParams(); | ||||
|             paddingLeft = measureChildView - (marginLayoutParams.leftMargin + marginLayoutParams.rightMargin); | ||||
|         } | ||||
|         if (this.mMenuView != null && this.mMenuView.getParent() == this) { | ||||
|             paddingLeft = measureChildView(this.mMenuView, paddingLeft, makeMeasureSpec, 0); | ||||
|         } | ||||
|         LinearLayout linearLayout = this.mTitleLayout; | ||||
|         if (linearLayout != null && this.mCustomView == null) { | ||||
|             if (this.mTitleOptional) { | ||||
|                 this.mTitleLayout.measure(View.MeasureSpec.makeMeasureSpec(0, 0), makeMeasureSpec); | ||||
|                 int measuredWidth = this.mTitleLayout.getMeasuredWidth(); | ||||
|                 boolean z = measuredWidth <= paddingLeft; | ||||
|                 if (z) { | ||||
|                     paddingLeft -= measuredWidth; | ||||
|                 } | ||||
|                 this.mTitleLayout.setVisibility(z ? 0 : 8); | ||||
|             } else { | ||||
|                 paddingLeft = measureChildView(linearLayout, paddingLeft, makeMeasureSpec, 0); | ||||
|             } | ||||
|         } | ||||
|         View view2 = this.mCustomView; | ||||
|         if (view2 != null) { | ||||
|             ViewGroup.LayoutParams layoutParams = view2.getLayoutParams(); | ||||
|             int i5 = layoutParams.width != -2 ? BasicMeasure.EXACTLY : Integer.MIN_VALUE; | ||||
|             if (layoutParams.width >= 0) { | ||||
|                 paddingLeft = Math.min(layoutParams.width, paddingLeft); | ||||
|             } | ||||
|             if (layoutParams.height == -2) { | ||||
|                 i3 = Integer.MIN_VALUE; | ||||
|             } | ||||
|             if (layoutParams.height >= 0) { | ||||
|                 i4 = Math.min(layoutParams.height, i4); | ||||
|             } | ||||
|             this.mCustomView.measure(View.MeasureSpec.makeMeasureSpec(paddingLeft, i5), View.MeasureSpec.makeMeasureSpec(i4, i3)); | ||||
|         } | ||||
|         if (this.mContentHeight <= 0) { | ||||
|             int childCount = getChildCount(); | ||||
|             int i6 = 0; | ||||
|             for (int i7 = 0; i7 < childCount; i7++) { | ||||
|                 int measuredHeight = getChildAt(i7).getMeasuredHeight() + paddingTop; | ||||
|                 if (measuredHeight > i6) { | ||||
|                     i6 = measuredHeight; | ||||
|                 } | ||||
|             } | ||||
|             setMeasuredDimension(size, i6); | ||||
|             return; | ||||
|         } | ||||
|         setMeasuredDimension(size, size2); | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.ViewGroup, android.view.View | ||||
|     protected void onLayout(boolean z, int i, int i2, int i3, int i4) { | ||||
|         boolean isLayoutRtl = ViewUtils.isLayoutRtl(this); | ||||
|         int paddingRight = isLayoutRtl ? (i3 - i) - getPaddingRight() : getPaddingLeft(); | ||||
|         int paddingTop = getPaddingTop(); | ||||
|         int paddingTop2 = ((i4 - i2) - getPaddingTop()) - getPaddingBottom(); | ||||
|         View view = this.mClose; | ||||
|         if (view != null && view.getVisibility() != 8) { | ||||
|             ViewGroup.MarginLayoutParams marginLayoutParams = (ViewGroup.MarginLayoutParams) this.mClose.getLayoutParams(); | ||||
|             int i5 = isLayoutRtl ? marginLayoutParams.rightMargin : marginLayoutParams.leftMargin; | ||||
|             int i6 = isLayoutRtl ? marginLayoutParams.leftMargin : marginLayoutParams.rightMargin; | ||||
|             int next = next(paddingRight, i5, isLayoutRtl); | ||||
|             paddingRight = next(next + positionChild(this.mClose, next, paddingTop, paddingTop2, isLayoutRtl), i6, isLayoutRtl); | ||||
|         } | ||||
|         int i7 = paddingRight; | ||||
|         LinearLayout linearLayout = this.mTitleLayout; | ||||
|         if (linearLayout != null && this.mCustomView == null && linearLayout.getVisibility() != 8) { | ||||
|             i7 += positionChild(this.mTitleLayout, i7, paddingTop, paddingTop2, isLayoutRtl); | ||||
|         } | ||||
|         int i8 = i7; | ||||
|         View view2 = this.mCustomView; | ||||
|         if (view2 != null) { | ||||
|             positionChild(view2, i8, paddingTop, paddingTop2, isLayoutRtl); | ||||
|         } | ||||
|         int paddingLeft = isLayoutRtl ? getPaddingLeft() : (i3 - i) - getPaddingRight(); | ||||
|         if (this.mMenuView != null) { | ||||
|             positionChild(this.mMenuView, paddingLeft, paddingTop, paddingTop2, !isLayoutRtl); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public void setTitleOptional(boolean z) { | ||||
|         if (z != this.mTitleOptional) { | ||||
|             requestLayout(); | ||||
|         } | ||||
|         this.mTitleOptional = z; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user