package androidx.appcompat.view.menu; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RadioButton; import android.widget.TextView; import androidx.annotation.RestrictTo; import androidx.appcompat.R; import androidx.appcompat.view.menu.MenuView; import androidx.appcompat.widget.TintTypedArray; import androidx.core.view.ViewCompat; @RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX}) public class ListMenuItemView extends LinearLayout implements MenuView.ItemView, AbsListView.SelectionBoundsAdjuster { private static final String TAG = "ListMenuItemView"; private Drawable mBackground; private CheckBox mCheckBox; private LinearLayout mContent; private boolean mForceShowIcon; private ImageView mGroupDivider; private boolean mHasListDivider; private ImageView mIconView; private LayoutInflater mInflater; private MenuItemImpl mItemData; private boolean mPreserveIconSpacing; private RadioButton mRadioButton; private TextView mShortcutView; private Drawable mSubMenuArrow; private ImageView mSubMenuArrowView; private int mTextAppearance; private Context mTextAppearanceContext; private TextView mTitleView; public ListMenuItemView(Context context, AttributeSet attributeSet) { this(context, attributeSet, R.attr.listMenuViewStyle); } public ListMenuItemView(Context context, AttributeSet attributeSet, int i) { super(context, attributeSet); TintTypedArray obtainStyledAttributes = TintTypedArray.obtainStyledAttributes(getContext(), attributeSet, R.styleable.MenuView, i, 0); this.mBackground = obtainStyledAttributes.getDrawable(R.styleable.MenuView_android_itemBackground); this.mTextAppearance = obtainStyledAttributes.getResourceId(R.styleable.MenuView_android_itemTextAppearance, -1); this.mPreserveIconSpacing = obtainStyledAttributes.getBoolean(R.styleable.MenuView_preserveIconSpacing, false); this.mTextAppearanceContext = context; this.mSubMenuArrow = obtainStyledAttributes.getDrawable(R.styleable.MenuView_subMenuArrow); TypedArray obtainStyledAttributes2 = context.getTheme().obtainStyledAttributes(null, new int[]{16843049}, R.attr.dropDownListViewStyle, 0); this.mHasListDivider = obtainStyledAttributes2.hasValue(0); obtainStyledAttributes.recycle(); obtainStyledAttributes2.recycle(); } private void addContentView(View view) { addContentView(view, -1); } private void addContentView(View view, int i) { LinearLayout linearLayout = this.mContent; if (linearLayout != null) { linearLayout.addView(view, i); } else { addView(view, i); } } private LayoutInflater getInflater() { if (this.mInflater == null) { this.mInflater = LayoutInflater.from(getContext()); } return this.mInflater; } private void insertCheckBox() { CheckBox checkBox = (CheckBox) getInflater().inflate(R.layout.abc_list_menu_item_checkbox, (ViewGroup) this, false); this.mCheckBox = checkBox; addContentView(checkBox); } private void insertIconView() { ImageView imageView = (ImageView) getInflater().inflate(R.layout.abc_list_menu_item_icon, (ViewGroup) this, false); this.mIconView = imageView; addContentView(imageView, 0); } private void insertRadioButton() { RadioButton radioButton = (RadioButton) getInflater().inflate(R.layout.abc_list_menu_item_radio, (ViewGroup) this, false); this.mRadioButton = radioButton; addContentView(radioButton); } private void setSubMenuArrowVisible(boolean z2) { ImageView imageView = this.mSubMenuArrowView; if (imageView != null) { imageView.setVisibility(z2 ? 0 : 8); } } @Override // android.widget.AbsListView.SelectionBoundsAdjuster public void adjustListItemSelectionBounds(Rect rect) { ImageView imageView = this.mGroupDivider; if (imageView != null && imageView.getVisibility() == 0) { LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) this.mGroupDivider.getLayoutParams(); rect.top = this.mGroupDivider.getHeight() + layoutParams.topMargin + layoutParams.bottomMargin + rect.top; } } @Override // androidx.appcompat.view.menu.MenuView.ItemView public MenuItemImpl getItemData() { return this.mItemData; } @Override // androidx.appcompat.view.menu.MenuView.ItemView public void initialize(MenuItemImpl menuItemImpl, int i) { this.mItemData = menuItemImpl; setVisibility(menuItemImpl.isVisible() ? 0 : 8); setTitle(menuItemImpl.getTitleForItemView(this)); setCheckable(menuItemImpl.isCheckable()); setShortcut(menuItemImpl.shouldShowShortcut(), menuItemImpl.getShortcut()); setIcon(menuItemImpl.getIcon()); setEnabled(menuItemImpl.isEnabled()); setSubMenuArrowVisible(menuItemImpl.hasSubMenu()); setContentDescription(menuItemImpl.getContentDescription()); } @Override // android.view.View public void onFinishInflate() { super.onFinishInflate(); ViewCompat.setBackground(this, this.mBackground); TextView textView = (TextView) findViewById(R.id.title); this.mTitleView = textView; int i = this.mTextAppearance; if (i != -1) { textView.setTextAppearance(this.mTextAppearanceContext, i); } this.mShortcutView = (TextView) findViewById(R.id.shortcut); ImageView imageView = (ImageView) findViewById(R.id.submenuarrow); this.mSubMenuArrowView = imageView; if (imageView != null) { imageView.setImageDrawable(this.mSubMenuArrow); } this.mGroupDivider = (ImageView) findViewById(R.id.group_divider); this.mContent = (LinearLayout) findViewById(R.id.content); } @Override // android.widget.LinearLayout, android.view.View public void onMeasure(int i, int i2) { if (this.mIconView != null && this.mPreserveIconSpacing) { ViewGroup.LayoutParams layoutParams = getLayoutParams(); LinearLayout.LayoutParams layoutParams2 = (LinearLayout.LayoutParams) this.mIconView.getLayoutParams(); int i3 = layoutParams.height; if (i3 > 0 && layoutParams2.width <= 0) { layoutParams2.width = i3; } } super.onMeasure(i, i2); } @Override // androidx.appcompat.view.menu.MenuView.ItemView public boolean prefersCondensedTitle() { return false; } @Override // androidx.appcompat.view.menu.MenuView.ItemView public void setCheckable(boolean z2) { CompoundButton compoundButton; CompoundButton compoundButton2; if (z2 || this.mRadioButton != null || this.mCheckBox != null) { if (this.mItemData.isExclusiveCheckable()) { if (this.mRadioButton == null) { insertRadioButton(); } compoundButton2 = this.mRadioButton; compoundButton = this.mCheckBox; } else { if (this.mCheckBox == null) { insertCheckBox(); } compoundButton2 = this.mCheckBox; compoundButton = this.mRadioButton; } if (z2) { compoundButton2.setChecked(this.mItemData.isChecked()); if (compoundButton2.getVisibility() != 0) { compoundButton2.setVisibility(0); } if (compoundButton != null && compoundButton.getVisibility() != 8) { compoundButton.setVisibility(8); return; } return; } CheckBox checkBox = this.mCheckBox; if (checkBox != null) { checkBox.setVisibility(8); } RadioButton radioButton = this.mRadioButton; if (radioButton != null) { radioButton.setVisibility(8); } } } @Override // androidx.appcompat.view.menu.MenuView.ItemView public void setChecked(boolean z2) { CompoundButton compoundButton; if (this.mItemData.isExclusiveCheckable()) { if (this.mRadioButton == null) { insertRadioButton(); } compoundButton = this.mRadioButton; } else { if (this.mCheckBox == null) { insertCheckBox(); } compoundButton = this.mCheckBox; } compoundButton.setChecked(z2); } public void setForceShowIcon(boolean z2) { this.mForceShowIcon = z2; this.mPreserveIconSpacing = z2; } public void setGroupDividerEnabled(boolean z2) { ImageView imageView = this.mGroupDivider; if (imageView != null) { imageView.setVisibility((this.mHasListDivider || !z2) ? 8 : 0); } } @Override // androidx.appcompat.view.menu.MenuView.ItemView public void setIcon(Drawable drawable) { boolean z2 = this.mItemData.shouldShowIcon() || this.mForceShowIcon; if (z2 || this.mPreserveIconSpacing) { ImageView imageView = this.mIconView; if (imageView != null || drawable != null || this.mPreserveIconSpacing) { if (imageView == null) { insertIconView(); } if (drawable != null || this.mPreserveIconSpacing) { ImageView imageView2 = this.mIconView; if (!z2) { drawable = null; } imageView2.setImageDrawable(drawable); if (this.mIconView.getVisibility() != 0) { this.mIconView.setVisibility(0); return; } return; } this.mIconView.setVisibility(8); } } } @Override // androidx.appcompat.view.menu.MenuView.ItemView public void setShortcut(boolean z2, char c) { int i = (!z2 || !this.mItemData.shouldShowShortcut()) ? 8 : 0; if (i == 0) { this.mShortcutView.setText(this.mItemData.getShortcutLabel()); } if (this.mShortcutView.getVisibility() != i) { this.mShortcutView.setVisibility(i); } } @Override // androidx.appcompat.view.menu.MenuView.ItemView public void setTitle(CharSequence charSequence) { if (charSequence != null) { this.mTitleView.setText(charSequence); if (this.mTitleView.getVisibility() != 0) { this.mTitleView.setVisibility(0); } } else if (this.mTitleView.getVisibility() != 8) { this.mTitleView.setVisibility(8); } } @Override // androidx.appcompat.view.menu.MenuView.ItemView public boolean showsIcon() { return this.mForceShowIcon; } }