168 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			168 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package com.google.android.material.badge;
 | |
| 
 | |
| import android.content.Context;
 | |
| import android.content.res.Resources;
 | |
| import android.graphics.Rect;
 | |
| import android.os.Build;
 | |
| import android.util.Log;
 | |
| import android.util.SparseArray;
 | |
| import android.view.View;
 | |
| import android.widget.FrameLayout;
 | |
| import androidx.appcompat.view.menu.ActionMenuItemView;
 | |
| import androidx.appcompat.widget.Toolbar;
 | |
| import androidx.core.view.AccessibilityDelegateCompat;
 | |
| import androidx.core.view.ViewCompat;
 | |
| import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
 | |
| import com.google.android.material.R;
 | |
| import com.google.android.material.badge.BadgeState;
 | |
| import com.google.android.material.internal.ParcelableSparseArray;
 | |
| import com.google.android.material.internal.ToolbarUtils;
 | |
| 
 | |
| /* loaded from: classes.dex */
 | |
| public class BadgeUtils {
 | |
|     private static final String LOG_TAG = "BadgeUtils";
 | |
|     public static final boolean USE_COMPAT_PARENT = false;
 | |
| 
 | |
|     private BadgeUtils() {
 | |
|     }
 | |
| 
 | |
|     public static void updateBadgeBounds(Rect rect, float f, float f2, float f3, float f4) {
 | |
|         rect.set((int) (f - f3), (int) (f2 - f4), (int) (f + f3), (int) (f2 + f4));
 | |
|     }
 | |
| 
 | |
|     public static void attachBadgeDrawable(BadgeDrawable badgeDrawable, View view) {
 | |
|         attachBadgeDrawable(badgeDrawable, view, (FrameLayout) null);
 | |
|     }
 | |
| 
 | |
|     public static void attachBadgeDrawable(BadgeDrawable badgeDrawable, View view, FrameLayout frameLayout) {
 | |
|         setBadgeDrawableBounds(badgeDrawable, view, frameLayout);
 | |
|         if (badgeDrawable.getCustomBadgeParent() != null) {
 | |
|             badgeDrawable.getCustomBadgeParent().setForeground(badgeDrawable);
 | |
|         } else {
 | |
|             if (USE_COMPAT_PARENT) {
 | |
|                 throw new IllegalArgumentException("Trying to reference null customBadgeParent");
 | |
|             }
 | |
|             view.getOverlay().add(badgeDrawable);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public static void attachBadgeDrawable(BadgeDrawable badgeDrawable, Toolbar toolbar, int i) {
 | |
|         attachBadgeDrawable(badgeDrawable, toolbar, i, null);
 | |
|     }
 | |
| 
 | |
|     public static void attachBadgeDrawable(final BadgeDrawable badgeDrawable, final Toolbar toolbar, final int i, final FrameLayout frameLayout) {
 | |
|         toolbar.post(new Runnable() { // from class: com.google.android.material.badge.BadgeUtils.1
 | |
|             @Override // java.lang.Runnable
 | |
|             public void run() {
 | |
|                 ActionMenuItemView actionMenuItemView = ToolbarUtils.getActionMenuItemView(Toolbar.this, i);
 | |
|                 if (actionMenuItemView != null) {
 | |
|                     BadgeUtils.setToolbarOffset(badgeDrawable, Toolbar.this.getResources());
 | |
|                     BadgeUtils.attachBadgeDrawable(badgeDrawable, actionMenuItemView, frameLayout);
 | |
|                     BadgeUtils.attachBadgeContentDescription(badgeDrawable, actionMenuItemView);
 | |
|                 }
 | |
|             }
 | |
|         });
 | |
|     }
 | |
| 
 | |
|     /* JADX INFO: Access modifiers changed from: private */
 | |
|     public static void attachBadgeContentDescription(final BadgeDrawable badgeDrawable, View view) {
 | |
|         View.AccessibilityDelegate accessibilityDelegate;
 | |
|         if (Build.VERSION.SDK_INT >= 29 && ViewCompat.hasAccessibilityDelegate(view)) {
 | |
|             accessibilityDelegate = view.getAccessibilityDelegate();
 | |
|             ViewCompat.setAccessibilityDelegate(view, new AccessibilityDelegateCompat(accessibilityDelegate) { // from class: com.google.android.material.badge.BadgeUtils.2
 | |
|                 @Override // androidx.core.view.AccessibilityDelegateCompat
 | |
|                 public void onInitializeAccessibilityNodeInfo(View view2, AccessibilityNodeInfoCompat accessibilityNodeInfoCompat) {
 | |
|                     super.onInitializeAccessibilityNodeInfo(view2, accessibilityNodeInfoCompat);
 | |
|                     accessibilityNodeInfoCompat.setContentDescription(badgeDrawable.getContentDescription());
 | |
|                 }
 | |
|             });
 | |
|         } else {
 | |
|             ViewCompat.setAccessibilityDelegate(view, new AccessibilityDelegateCompat() { // from class: com.google.android.material.badge.BadgeUtils.3
 | |
|                 @Override // androidx.core.view.AccessibilityDelegateCompat
 | |
|                 public void onInitializeAccessibilityNodeInfo(View view2, AccessibilityNodeInfoCompat accessibilityNodeInfoCompat) {
 | |
|                     super.onInitializeAccessibilityNodeInfo(view2, accessibilityNodeInfoCompat);
 | |
|                     accessibilityNodeInfoCompat.setContentDescription(BadgeDrawable.this.getContentDescription());
 | |
|                 }
 | |
|             });
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public static void detachBadgeDrawable(BadgeDrawable badgeDrawable, View view) {
 | |
|         if (badgeDrawable == null) {
 | |
|             return;
 | |
|         }
 | |
|         if (USE_COMPAT_PARENT || badgeDrawable.getCustomBadgeParent() != null) {
 | |
|             badgeDrawable.getCustomBadgeParent().setForeground(null);
 | |
|         } else {
 | |
|             view.getOverlay().remove(badgeDrawable);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public static void detachBadgeDrawable(BadgeDrawable badgeDrawable, Toolbar toolbar, int i) {
 | |
|         if (badgeDrawable == null) {
 | |
|             return;
 | |
|         }
 | |
|         ActionMenuItemView actionMenuItemView = ToolbarUtils.getActionMenuItemView(toolbar, i);
 | |
|         if (actionMenuItemView != null) {
 | |
|             removeToolbarOffset(badgeDrawable);
 | |
|             detachBadgeDrawable(badgeDrawable, actionMenuItemView);
 | |
|             detachBadgeContentDescription(actionMenuItemView);
 | |
|         } else {
 | |
|             Log.w(LOG_TAG, "Trying to remove badge from a null menuItemView: " + i);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private static void detachBadgeContentDescription(View view) {
 | |
|         View.AccessibilityDelegate accessibilityDelegate;
 | |
|         if (Build.VERSION.SDK_INT >= 29 && ViewCompat.hasAccessibilityDelegate(view)) {
 | |
|             accessibilityDelegate = view.getAccessibilityDelegate();
 | |
|             ViewCompat.setAccessibilityDelegate(view, new AccessibilityDelegateCompat(accessibilityDelegate) { // from class: com.google.android.material.badge.BadgeUtils.4
 | |
|                 @Override // androidx.core.view.AccessibilityDelegateCompat
 | |
|                 public void onInitializeAccessibilityNodeInfo(View view2, AccessibilityNodeInfoCompat accessibilityNodeInfoCompat) {
 | |
|                     super.onInitializeAccessibilityNodeInfo(view2, accessibilityNodeInfoCompat);
 | |
|                     accessibilityNodeInfoCompat.setContentDescription(null);
 | |
|                 }
 | |
|             });
 | |
|         } else {
 | |
|             ViewCompat.setAccessibilityDelegate(view, null);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     static void setToolbarOffset(BadgeDrawable badgeDrawable, Resources resources) {
 | |
|         badgeDrawable.setAdditionalHorizontalOffset(resources.getDimensionPixelOffset(R.dimen.mtrl_badge_toolbar_action_menu_item_horizontal_offset));
 | |
|         badgeDrawable.setAdditionalVerticalOffset(resources.getDimensionPixelOffset(R.dimen.mtrl_badge_toolbar_action_menu_item_vertical_offset));
 | |
|     }
 | |
| 
 | |
|     static void removeToolbarOffset(BadgeDrawable badgeDrawable) {
 | |
|         badgeDrawable.setAdditionalHorizontalOffset(0);
 | |
|         badgeDrawable.setAdditionalVerticalOffset(0);
 | |
|     }
 | |
| 
 | |
|     public static void setBadgeDrawableBounds(BadgeDrawable badgeDrawable, View view, FrameLayout frameLayout) {
 | |
|         Rect rect = new Rect();
 | |
|         view.getDrawingRect(rect);
 | |
|         badgeDrawable.setBounds(rect);
 | |
|         badgeDrawable.updateBadgeCoordinates(view, frameLayout);
 | |
|     }
 | |
| 
 | |
|     public static ParcelableSparseArray createParcelableBadgeStates(SparseArray<BadgeDrawable> sparseArray) {
 | |
|         ParcelableSparseArray parcelableSparseArray = new ParcelableSparseArray();
 | |
|         for (int i = 0; i < sparseArray.size(); i++) {
 | |
|             int keyAt = sparseArray.keyAt(i);
 | |
|             BadgeDrawable valueAt = sparseArray.valueAt(i);
 | |
|             parcelableSparseArray.put(keyAt, valueAt != null ? valueAt.getSavedState() : null);
 | |
|         }
 | |
|         return parcelableSparseArray;
 | |
|     }
 | |
| 
 | |
|     public static SparseArray<BadgeDrawable> createBadgeDrawablesFromSavedStates(Context context, ParcelableSparseArray parcelableSparseArray) {
 | |
|         SparseArray<BadgeDrawable> sparseArray = new SparseArray<>(parcelableSparseArray.size());
 | |
|         for (int i = 0; i < parcelableSparseArray.size(); i++) {
 | |
|             int keyAt = parcelableSparseArray.keyAt(i);
 | |
|             BadgeState.State state = (BadgeState.State) parcelableSparseArray.valueAt(i);
 | |
|             sparseArray.put(keyAt, state != null ? BadgeDrawable.createFromSavedState(context, state) : null);
 | |
|         }
 | |
|         return sparseArray;
 | |
|     }
 | |
| }
 |