- 28,932 files - Full Java source code - Smali files - Resources Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
138 lines
5.6 KiB
Java
138 lines
5.6 KiB
Java
package androidx.core.view;
|
|
|
|
import android.annotation.SuppressLint;
|
|
import android.view.Menu;
|
|
import android.view.MenuInflater;
|
|
import android.view.MenuItem;
|
|
import androidx.annotation.NonNull;
|
|
import androidx.lifecycle.Lifecycle;
|
|
import androidx.lifecycle.LifecycleEventObserver;
|
|
import androidx.lifecycle.LifecycleOwner;
|
|
import java.util.HashMap;
|
|
import java.util.Iterator;
|
|
import java.util.Map;
|
|
import java.util.concurrent.CopyOnWriteArrayList;
|
|
|
|
/* loaded from: classes.dex */
|
|
public class MenuHostHelper {
|
|
private final Runnable mOnInvalidateMenuCallback;
|
|
private final CopyOnWriteArrayList<MenuProvider> mMenuProviders = new CopyOnWriteArrayList<>();
|
|
private final Map<MenuProvider, LifecycleContainer> mProviderToLifecycleContainers = new HashMap();
|
|
|
|
public MenuHostHelper(@NonNull Runnable runnable) {
|
|
this.mOnInvalidateMenuCallback = runnable;
|
|
}
|
|
|
|
public void onPrepareMenu(@NonNull Menu menu) {
|
|
Iterator<MenuProvider> it = this.mMenuProviders.iterator();
|
|
while (it.hasNext()) {
|
|
it.next().onPrepareMenu(menu);
|
|
}
|
|
}
|
|
|
|
public void onCreateMenu(@NonNull Menu menu, @NonNull MenuInflater menuInflater) {
|
|
Iterator<MenuProvider> it = this.mMenuProviders.iterator();
|
|
while (it.hasNext()) {
|
|
it.next().onCreateMenu(menu, menuInflater);
|
|
}
|
|
}
|
|
|
|
public boolean onMenuItemSelected(@NonNull MenuItem menuItem) {
|
|
Iterator<MenuProvider> it = this.mMenuProviders.iterator();
|
|
while (it.hasNext()) {
|
|
if (it.next().onMenuItemSelected(menuItem)) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public void onMenuClosed(@NonNull Menu menu) {
|
|
Iterator<MenuProvider> it = this.mMenuProviders.iterator();
|
|
while (it.hasNext()) {
|
|
it.next().onMenuClosed(menu);
|
|
}
|
|
}
|
|
|
|
public void addMenuProvider(@NonNull MenuProvider menuProvider) {
|
|
this.mMenuProviders.add(menuProvider);
|
|
this.mOnInvalidateMenuCallback.run();
|
|
}
|
|
|
|
public void addMenuProvider(@NonNull final MenuProvider menuProvider, @NonNull LifecycleOwner lifecycleOwner) {
|
|
addMenuProvider(menuProvider);
|
|
Lifecycle lifecycle = lifecycleOwner.getLifecycle();
|
|
LifecycleContainer remove = this.mProviderToLifecycleContainers.remove(menuProvider);
|
|
if (remove != null) {
|
|
remove.clearObservers();
|
|
}
|
|
this.mProviderToLifecycleContainers.put(menuProvider, new LifecycleContainer(lifecycle, new LifecycleEventObserver() { // from class: androidx.core.view.MenuHostHelper$$ExternalSyntheticLambda0
|
|
@Override // androidx.lifecycle.LifecycleEventObserver
|
|
public final void onStateChanged(LifecycleOwner lifecycleOwner2, Lifecycle.Event event) {
|
|
MenuHostHelper.this.lambda$addMenuProvider$0(menuProvider, lifecycleOwner2, event);
|
|
}
|
|
}));
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
public /* synthetic */ void lambda$addMenuProvider$0(MenuProvider menuProvider, LifecycleOwner lifecycleOwner, Lifecycle.Event event) {
|
|
if (event == Lifecycle.Event.ON_DESTROY) {
|
|
removeMenuProvider(menuProvider);
|
|
}
|
|
}
|
|
|
|
@SuppressLint({"LambdaLast"})
|
|
public void addMenuProvider(@NonNull final MenuProvider menuProvider, @NonNull LifecycleOwner lifecycleOwner, @NonNull final Lifecycle.State state) {
|
|
Lifecycle lifecycle = lifecycleOwner.getLifecycle();
|
|
LifecycleContainer remove = this.mProviderToLifecycleContainers.remove(menuProvider);
|
|
if (remove != null) {
|
|
remove.clearObservers();
|
|
}
|
|
this.mProviderToLifecycleContainers.put(menuProvider, new LifecycleContainer(lifecycle, new LifecycleEventObserver() { // from class: androidx.core.view.MenuHostHelper$$ExternalSyntheticLambda1
|
|
@Override // androidx.lifecycle.LifecycleEventObserver
|
|
public final void onStateChanged(LifecycleOwner lifecycleOwner2, Lifecycle.Event event) {
|
|
MenuHostHelper.this.lambda$addMenuProvider$1(state, menuProvider, lifecycleOwner2, event);
|
|
}
|
|
}));
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
public /* synthetic */ void lambda$addMenuProvider$1(Lifecycle.State state, MenuProvider menuProvider, LifecycleOwner lifecycleOwner, Lifecycle.Event event) {
|
|
if (event == Lifecycle.Event.upTo(state)) {
|
|
addMenuProvider(menuProvider);
|
|
return;
|
|
}
|
|
if (event == Lifecycle.Event.ON_DESTROY) {
|
|
removeMenuProvider(menuProvider);
|
|
} else if (event == Lifecycle.Event.downFrom(state)) {
|
|
this.mMenuProviders.remove(menuProvider);
|
|
this.mOnInvalidateMenuCallback.run();
|
|
}
|
|
}
|
|
|
|
public void removeMenuProvider(@NonNull MenuProvider menuProvider) {
|
|
this.mMenuProviders.remove(menuProvider);
|
|
LifecycleContainer remove = this.mProviderToLifecycleContainers.remove(menuProvider);
|
|
if (remove != null) {
|
|
remove.clearObservers();
|
|
}
|
|
this.mOnInvalidateMenuCallback.run();
|
|
}
|
|
|
|
public static class LifecycleContainer {
|
|
final Lifecycle mLifecycle;
|
|
private LifecycleEventObserver mObserver;
|
|
|
|
public LifecycleContainer(@NonNull Lifecycle lifecycle, @NonNull LifecycleEventObserver lifecycleEventObserver) {
|
|
this.mLifecycle = lifecycle;
|
|
this.mObserver = lifecycleEventObserver;
|
|
lifecycle.addObserver(lifecycleEventObserver);
|
|
}
|
|
|
|
public void clearObservers() {
|
|
this.mLifecycle.removeObserver(this.mObserver);
|
|
this.mObserver = null;
|
|
}
|
|
}
|
|
}
|