discord-jadx/app/src/main/java/androidx/recyclerview/widget/RecyclerViewAccessibilityDe...

178 lines
9.4 KiB
Java

package androidx.recyclerview.widget;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityEvent;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.view.AccessibilityDelegateCompat;
import androidx.core.view.ViewCompat;
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
import androidx.core.view.accessibility.AccessibilityNodeProviderCompat;
import java.util.Map;
import java.util.WeakHashMap;
public class RecyclerViewAccessibilityDelegate extends AccessibilityDelegateCompat {
private final ItemDelegate mItemDelegate;
public final RecyclerView mRecyclerView;
public static class ItemDelegate extends AccessibilityDelegateCompat {
private Map<View, AccessibilityDelegateCompat> mOriginalItemDelegates = new WeakHashMap();
public final RecyclerViewAccessibilityDelegate mRecyclerViewDelegate;
public ItemDelegate(@NonNull RecyclerViewAccessibilityDelegate recyclerViewAccessibilityDelegate) {
this.mRecyclerViewDelegate = recyclerViewAccessibilityDelegate;
}
@Override // androidx.core.view.AccessibilityDelegateCompat
public boolean dispatchPopulateAccessibilityEvent(@NonNull View view, @NonNull AccessibilityEvent accessibilityEvent) {
AccessibilityDelegateCompat accessibilityDelegateCompat = this.mOriginalItemDelegates.get(view);
return accessibilityDelegateCompat != null ? accessibilityDelegateCompat.dispatchPopulateAccessibilityEvent(view, accessibilityEvent) : super.dispatchPopulateAccessibilityEvent(view, accessibilityEvent);
}
@Override // androidx.core.view.AccessibilityDelegateCompat
@Nullable
public AccessibilityNodeProviderCompat getAccessibilityNodeProvider(@NonNull View view) {
AccessibilityDelegateCompat accessibilityDelegateCompat = this.mOriginalItemDelegates.get(view);
return accessibilityDelegateCompat != null ? accessibilityDelegateCompat.getAccessibilityNodeProvider(view) : super.getAccessibilityNodeProvider(view);
}
public AccessibilityDelegateCompat getAndRemoveOriginalDelegateForItem(View view) {
return this.mOriginalItemDelegates.remove(view);
}
@Override // androidx.core.view.AccessibilityDelegateCompat
public void onInitializeAccessibilityEvent(@NonNull View view, @NonNull AccessibilityEvent accessibilityEvent) {
AccessibilityDelegateCompat accessibilityDelegateCompat = this.mOriginalItemDelegates.get(view);
if (accessibilityDelegateCompat != null) {
accessibilityDelegateCompat.onInitializeAccessibilityEvent(view, accessibilityEvent);
} else {
super.onInitializeAccessibilityEvent(view, accessibilityEvent);
}
}
@Override // androidx.core.view.AccessibilityDelegateCompat
public void onInitializeAccessibilityNodeInfo(View view, AccessibilityNodeInfoCompat accessibilityNodeInfoCompat) {
if (this.mRecyclerViewDelegate.shouldIgnore() || this.mRecyclerViewDelegate.mRecyclerView.getLayoutManager() == null) {
super.onInitializeAccessibilityNodeInfo(view, accessibilityNodeInfoCompat);
return;
}
this.mRecyclerViewDelegate.mRecyclerView.getLayoutManager().onInitializeAccessibilityNodeInfoForItem(view, accessibilityNodeInfoCompat);
AccessibilityDelegateCompat accessibilityDelegateCompat = this.mOriginalItemDelegates.get(view);
if (accessibilityDelegateCompat != null) {
accessibilityDelegateCompat.onInitializeAccessibilityNodeInfo(view, accessibilityNodeInfoCompat);
} else {
super.onInitializeAccessibilityNodeInfo(view, accessibilityNodeInfoCompat);
}
}
@Override // androidx.core.view.AccessibilityDelegateCompat
public void onPopulateAccessibilityEvent(@NonNull View view, @NonNull AccessibilityEvent accessibilityEvent) {
AccessibilityDelegateCompat accessibilityDelegateCompat = this.mOriginalItemDelegates.get(view);
if (accessibilityDelegateCompat != null) {
accessibilityDelegateCompat.onPopulateAccessibilityEvent(view, accessibilityEvent);
} else {
super.onPopulateAccessibilityEvent(view, accessibilityEvent);
}
}
@Override // androidx.core.view.AccessibilityDelegateCompat
public boolean onRequestSendAccessibilityEvent(@NonNull ViewGroup viewGroup, @NonNull View view, @NonNull AccessibilityEvent accessibilityEvent) {
AccessibilityDelegateCompat accessibilityDelegateCompat = this.mOriginalItemDelegates.get(viewGroup);
return accessibilityDelegateCompat != null ? accessibilityDelegateCompat.onRequestSendAccessibilityEvent(viewGroup, view, accessibilityEvent) : super.onRequestSendAccessibilityEvent(viewGroup, view, accessibilityEvent);
}
@Override // androidx.core.view.AccessibilityDelegateCompat
public boolean performAccessibilityAction(View view, int i, Bundle bundle) {
if (this.mRecyclerViewDelegate.shouldIgnore() || this.mRecyclerViewDelegate.mRecyclerView.getLayoutManager() == null) {
return super.performAccessibilityAction(view, i, bundle);
}
AccessibilityDelegateCompat accessibilityDelegateCompat = this.mOriginalItemDelegates.get(view);
if (accessibilityDelegateCompat != null) {
if (accessibilityDelegateCompat.performAccessibilityAction(view, i, bundle)) {
return true;
}
} else if (super.performAccessibilityAction(view, i, bundle)) {
return true;
}
return this.mRecyclerViewDelegate.mRecyclerView.getLayoutManager().performAccessibilityActionForItem(view, i, bundle);
}
public void saveOriginalDelegate(View view) {
AccessibilityDelegateCompat accessibilityDelegate = ViewCompat.getAccessibilityDelegate(view);
if (accessibilityDelegate != null && accessibilityDelegate != this) {
this.mOriginalItemDelegates.put(view, accessibilityDelegate);
}
}
@Override // androidx.core.view.AccessibilityDelegateCompat
public void sendAccessibilityEvent(@NonNull View view, int i) {
AccessibilityDelegateCompat accessibilityDelegateCompat = this.mOriginalItemDelegates.get(view);
if (accessibilityDelegateCompat != null) {
accessibilityDelegateCompat.sendAccessibilityEvent(view, i);
} else {
super.sendAccessibilityEvent(view, i);
}
}
@Override // androidx.core.view.AccessibilityDelegateCompat
public void sendAccessibilityEventUnchecked(@NonNull View view, @NonNull AccessibilityEvent accessibilityEvent) {
AccessibilityDelegateCompat accessibilityDelegateCompat = this.mOriginalItemDelegates.get(view);
if (accessibilityDelegateCompat != null) {
accessibilityDelegateCompat.sendAccessibilityEventUnchecked(view, accessibilityEvent);
} else {
super.sendAccessibilityEventUnchecked(view, accessibilityEvent);
}
}
}
public RecyclerViewAccessibilityDelegate(@NonNull RecyclerView recyclerView) {
this.mRecyclerView = recyclerView;
AccessibilityDelegateCompat itemDelegate = getItemDelegate();
if (itemDelegate == null || !(itemDelegate instanceof ItemDelegate)) {
this.mItemDelegate = new ItemDelegate(this);
} else {
this.mItemDelegate = (ItemDelegate) itemDelegate;
}
}
@NonNull
public AccessibilityDelegateCompat getItemDelegate() {
return this.mItemDelegate;
}
@Override // androidx.core.view.AccessibilityDelegateCompat
public void onInitializeAccessibilityEvent(View view, AccessibilityEvent accessibilityEvent) {
super.onInitializeAccessibilityEvent(view, accessibilityEvent);
if ((view instanceof RecyclerView) && !shouldIgnore()) {
RecyclerView recyclerView = (RecyclerView) view;
if (recyclerView.getLayoutManager() != null) {
recyclerView.getLayoutManager().onInitializeAccessibilityEvent(accessibilityEvent);
}
}
}
@Override // androidx.core.view.AccessibilityDelegateCompat
public void onInitializeAccessibilityNodeInfo(View view, AccessibilityNodeInfoCompat accessibilityNodeInfoCompat) {
super.onInitializeAccessibilityNodeInfo(view, accessibilityNodeInfoCompat);
if (!shouldIgnore() && this.mRecyclerView.getLayoutManager() != null) {
this.mRecyclerView.getLayoutManager().onInitializeAccessibilityNodeInfo(accessibilityNodeInfoCompat);
}
}
@Override // androidx.core.view.AccessibilityDelegateCompat
public boolean performAccessibilityAction(View view, int i, Bundle bundle) {
if (super.performAccessibilityAction(view, i, bundle)) {
return true;
}
if (shouldIgnore() || this.mRecyclerView.getLayoutManager() == null) {
return false;
}
return this.mRecyclerView.getLayoutManager().performAccessibilityAction(i, bundle);
}
public boolean shouldIgnore() {
return this.mRecyclerView.hasPendingAdapterUpdates();
}
}