Rabbit-R1/switch port/java/sources/androidx/appcompat/app/ToolbarActionBar.java
2024-05-21 17:08:36 -04:00

548 lines
20 KiB
Java

package androidx.appcompat.app;
import android.content.Context;
import android.content.res.Configuration;
import android.graphics.drawable.Drawable;
import android.view.KeyCharacterMap;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.SpinnerAdapter;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatDelegateImpl;
import androidx.appcompat.view.menu.MenuBuilder;
import androidx.appcompat.view.menu.MenuPresenter;
import androidx.appcompat.widget.DecorToolbar;
import androidx.appcompat.widget.Toolbar;
import androidx.appcompat.widget.ToolbarWidgetWrapper;
import androidx.core.util.Preconditions;
import androidx.core.view.ViewCompat;
import java.util.ArrayList;
/* JADX INFO: Access modifiers changed from: package-private */
/* loaded from: classes.dex */
public class ToolbarActionBar extends ActionBar {
final DecorToolbar mDecorToolbar;
private boolean mLastMenuVisibility;
final AppCompatDelegateImpl.ActionBarMenuCallback mMenuCallback;
private boolean mMenuCallbackSet;
private final Toolbar.OnMenuItemClickListener mMenuClicker;
boolean mToolbarMenuPrepared;
final Window.Callback mWindowCallback;
private ArrayList<ActionBar.OnMenuVisibilityListener> mMenuVisibilityListeners = new ArrayList<>();
private final Runnable mMenuInvalidator = new Runnable() { // from class: androidx.appcompat.app.ToolbarActionBar.1
@Override // java.lang.Runnable
public void run() {
ToolbarActionBar.this.populateOptionsMenu();
}
};
@Override // androidx.appcompat.app.ActionBar
public int getNavigationItemCount() {
return 0;
}
@Override // androidx.appcompat.app.ActionBar
public int getNavigationMode() {
return 0;
}
@Override // androidx.appcompat.app.ActionBar
public int getSelectedNavigationIndex() {
return -1;
}
@Override // androidx.appcompat.app.ActionBar
public int getTabCount() {
return 0;
}
@Override // androidx.appcompat.app.ActionBar
public void setDefaultDisplayHomeAsUpEnabled(boolean z) {
}
@Override // androidx.appcompat.app.ActionBar
public void setHomeButtonEnabled(boolean z) {
}
@Override // androidx.appcompat.app.ActionBar
public void setShowHideAnimationEnabled(boolean z) {
}
@Override // androidx.appcompat.app.ActionBar
public void setSplitBackgroundDrawable(Drawable drawable) {
}
@Override // androidx.appcompat.app.ActionBar
public void setStackedBackgroundDrawable(Drawable drawable) {
}
/* JADX INFO: Access modifiers changed from: package-private */
public ToolbarActionBar(Toolbar toolbar, CharSequence charSequence, Window.Callback callback) {
Toolbar.OnMenuItemClickListener onMenuItemClickListener = new Toolbar.OnMenuItemClickListener() { // from class: androidx.appcompat.app.ToolbarActionBar.2
@Override // androidx.appcompat.widget.Toolbar.OnMenuItemClickListener
public boolean onMenuItemClick(MenuItem menuItem) {
return ToolbarActionBar.this.mWindowCallback.onMenuItemSelected(0, menuItem);
}
};
this.mMenuClicker = onMenuItemClickListener;
Preconditions.checkNotNull(toolbar);
ToolbarWidgetWrapper toolbarWidgetWrapper = new ToolbarWidgetWrapper(toolbar, false);
this.mDecorToolbar = toolbarWidgetWrapper;
this.mWindowCallback = (Window.Callback) Preconditions.checkNotNull(callback);
toolbarWidgetWrapper.setWindowCallback(callback);
toolbar.setOnMenuItemClickListener(onMenuItemClickListener);
toolbarWidgetWrapper.setWindowTitle(charSequence);
this.mMenuCallback = new ToolbarMenuCallback();
}
@Override // androidx.appcompat.app.ActionBar
public void setCustomView(View view) {
setCustomView(view, new ActionBar.LayoutParams(-2, -2));
}
@Override // androidx.appcompat.app.ActionBar
public void setCustomView(View view, ActionBar.LayoutParams layoutParams) {
if (view != null) {
view.setLayoutParams(layoutParams);
}
this.mDecorToolbar.setCustomView(view);
}
@Override // androidx.appcompat.app.ActionBar
public void setCustomView(int i) {
setCustomView(LayoutInflater.from(this.mDecorToolbar.getContext()).inflate(i, this.mDecorToolbar.getViewGroup(), false));
}
@Override // androidx.appcompat.app.ActionBar
public void setIcon(int i) {
this.mDecorToolbar.setIcon(i);
}
@Override // androidx.appcompat.app.ActionBar
public void setIcon(Drawable drawable) {
this.mDecorToolbar.setIcon(drawable);
}
@Override // androidx.appcompat.app.ActionBar
public void setLogo(int i) {
this.mDecorToolbar.setLogo(i);
}
@Override // androidx.appcompat.app.ActionBar
public void setLogo(Drawable drawable) {
this.mDecorToolbar.setLogo(drawable);
}
@Override // androidx.appcompat.app.ActionBar
public void setElevation(float f) {
ViewCompat.setElevation(this.mDecorToolbar.getViewGroup(), f);
}
@Override // androidx.appcompat.app.ActionBar
public float getElevation() {
return ViewCompat.getElevation(this.mDecorToolbar.getViewGroup());
}
@Override // androidx.appcompat.app.ActionBar
public Context getThemedContext() {
return this.mDecorToolbar.getContext();
}
@Override // androidx.appcompat.app.ActionBar
public boolean isTitleTruncated() {
return super.isTitleTruncated();
}
@Override // androidx.appcompat.app.ActionBar
public void setHomeAsUpIndicator(Drawable drawable) {
this.mDecorToolbar.setNavigationIcon(drawable);
}
@Override // androidx.appcompat.app.ActionBar
public void setHomeAsUpIndicator(int i) {
this.mDecorToolbar.setNavigationIcon(i);
}
@Override // androidx.appcompat.app.ActionBar
public void setHomeActionContentDescription(CharSequence charSequence) {
this.mDecorToolbar.setNavigationContentDescription(charSequence);
}
@Override // androidx.appcompat.app.ActionBar
public void setHomeActionContentDescription(int i) {
this.mDecorToolbar.setNavigationContentDescription(i);
}
@Override // androidx.appcompat.app.ActionBar
public void onConfigurationChanged(Configuration configuration) {
super.onConfigurationChanged(configuration);
}
@Override // androidx.appcompat.app.ActionBar
public void setListNavigationCallbacks(SpinnerAdapter spinnerAdapter, ActionBar.OnNavigationListener onNavigationListener) {
this.mDecorToolbar.setDropdownParams(spinnerAdapter, new NavItemSelectedListener(onNavigationListener));
}
@Override // androidx.appcompat.app.ActionBar
public void setSelectedNavigationItem(int i) {
if (this.mDecorToolbar.getNavigationMode() == 1) {
this.mDecorToolbar.setDropdownSelectedPosition(i);
return;
}
throw new IllegalStateException("setSelectedNavigationIndex not valid for current navigation mode");
}
@Override // androidx.appcompat.app.ActionBar
public void setTitle(CharSequence charSequence) {
this.mDecorToolbar.setTitle(charSequence);
}
@Override // androidx.appcompat.app.ActionBar
public void setTitle(int i) {
DecorToolbar decorToolbar = this.mDecorToolbar;
decorToolbar.setTitle(i != 0 ? decorToolbar.getContext().getText(i) : null);
}
@Override // androidx.appcompat.app.ActionBar
public void setWindowTitle(CharSequence charSequence) {
this.mDecorToolbar.setWindowTitle(charSequence);
}
@Override // androidx.appcompat.app.ActionBar
public boolean requestFocus() {
ViewGroup viewGroup = this.mDecorToolbar.getViewGroup();
if (viewGroup == null || viewGroup.hasFocus()) {
return false;
}
viewGroup.requestFocus();
return true;
}
@Override // androidx.appcompat.app.ActionBar
public void setSubtitle(CharSequence charSequence) {
this.mDecorToolbar.setSubtitle(charSequence);
}
@Override // androidx.appcompat.app.ActionBar
public void setSubtitle(int i) {
DecorToolbar decorToolbar = this.mDecorToolbar;
decorToolbar.setSubtitle(i != 0 ? decorToolbar.getContext().getText(i) : null);
}
@Override // androidx.appcompat.app.ActionBar
public void setDisplayOptions(int i) {
setDisplayOptions(i, -1);
}
@Override // androidx.appcompat.app.ActionBar
public void setDisplayOptions(int i, int i2) {
this.mDecorToolbar.setDisplayOptions((i & i2) | ((~i2) & this.mDecorToolbar.getDisplayOptions()));
}
@Override // androidx.appcompat.app.ActionBar
public void setDisplayUseLogoEnabled(boolean z) {
setDisplayOptions(z ? 1 : 0, 1);
}
@Override // androidx.appcompat.app.ActionBar
public void setDisplayShowHomeEnabled(boolean z) {
setDisplayOptions(z ? 2 : 0, 2);
}
@Override // androidx.appcompat.app.ActionBar
public void setDisplayHomeAsUpEnabled(boolean z) {
setDisplayOptions(z ? 4 : 0, 4);
}
@Override // androidx.appcompat.app.ActionBar
public void setDisplayShowTitleEnabled(boolean z) {
setDisplayOptions(z ? 8 : 0, 8);
}
@Override // androidx.appcompat.app.ActionBar
public void setDisplayShowCustomEnabled(boolean z) {
setDisplayOptions(z ? 16 : 0, 16);
}
@Override // androidx.appcompat.app.ActionBar
public void setBackgroundDrawable(Drawable drawable) {
this.mDecorToolbar.setBackgroundDrawable(drawable);
}
@Override // androidx.appcompat.app.ActionBar
public View getCustomView() {
return this.mDecorToolbar.getCustomView();
}
@Override // androidx.appcompat.app.ActionBar
public CharSequence getTitle() {
return this.mDecorToolbar.getTitle();
}
@Override // androidx.appcompat.app.ActionBar
public CharSequence getSubtitle() {
return this.mDecorToolbar.getSubtitle();
}
@Override // androidx.appcompat.app.ActionBar
public void setNavigationMode(int i) {
if (i == 2) {
throw new IllegalArgumentException("Tabs not supported in this configuration");
}
this.mDecorToolbar.setNavigationMode(i);
}
@Override // androidx.appcompat.app.ActionBar
public int getDisplayOptions() {
return this.mDecorToolbar.getDisplayOptions();
}
@Override // androidx.appcompat.app.ActionBar
public ActionBar.Tab newTab() {
throw new UnsupportedOperationException("Tabs are not supported in toolbar action bars");
}
@Override // androidx.appcompat.app.ActionBar
public void addTab(ActionBar.Tab tab) {
throw new UnsupportedOperationException("Tabs are not supported in toolbar action bars");
}
@Override // androidx.appcompat.app.ActionBar
public void addTab(ActionBar.Tab tab, boolean z) {
throw new UnsupportedOperationException("Tabs are not supported in toolbar action bars");
}
@Override // androidx.appcompat.app.ActionBar
public void addTab(ActionBar.Tab tab, int i) {
throw new UnsupportedOperationException("Tabs are not supported in toolbar action bars");
}
@Override // androidx.appcompat.app.ActionBar
public void addTab(ActionBar.Tab tab, int i, boolean z) {
throw new UnsupportedOperationException("Tabs are not supported in toolbar action bars");
}
@Override // androidx.appcompat.app.ActionBar
public void removeTab(ActionBar.Tab tab) {
throw new UnsupportedOperationException("Tabs are not supported in toolbar action bars");
}
@Override // androidx.appcompat.app.ActionBar
public void removeTabAt(int i) {
throw new UnsupportedOperationException("Tabs are not supported in toolbar action bars");
}
@Override // androidx.appcompat.app.ActionBar
public void removeAllTabs() {
throw new UnsupportedOperationException("Tabs are not supported in toolbar action bars");
}
@Override // androidx.appcompat.app.ActionBar
public void selectTab(ActionBar.Tab tab) {
throw new UnsupportedOperationException("Tabs are not supported in toolbar action bars");
}
@Override // androidx.appcompat.app.ActionBar
public ActionBar.Tab getSelectedTab() {
throw new UnsupportedOperationException("Tabs are not supported in toolbar action bars");
}
@Override // androidx.appcompat.app.ActionBar
public ActionBar.Tab getTabAt(int i) {
throw new UnsupportedOperationException("Tabs are not supported in toolbar action bars");
}
@Override // androidx.appcompat.app.ActionBar
public int getHeight() {
return this.mDecorToolbar.getHeight();
}
@Override // androidx.appcompat.app.ActionBar
public void show() {
this.mDecorToolbar.setVisibility(0);
}
@Override // androidx.appcompat.app.ActionBar
public void hide() {
this.mDecorToolbar.setVisibility(8);
}
@Override // androidx.appcompat.app.ActionBar
public boolean isShowing() {
return this.mDecorToolbar.getVisibility() == 0;
}
@Override // androidx.appcompat.app.ActionBar
public boolean openOptionsMenu() {
return this.mDecorToolbar.showOverflowMenu();
}
@Override // androidx.appcompat.app.ActionBar
public boolean closeOptionsMenu() {
return this.mDecorToolbar.hideOverflowMenu();
}
@Override // androidx.appcompat.app.ActionBar
public boolean invalidateOptionsMenu() {
this.mDecorToolbar.getViewGroup().removeCallbacks(this.mMenuInvalidator);
ViewCompat.postOnAnimation(this.mDecorToolbar.getViewGroup(), this.mMenuInvalidator);
return true;
}
@Override // androidx.appcompat.app.ActionBar
public boolean collapseActionView() {
if (!this.mDecorToolbar.hasExpandedActionView()) {
return false;
}
this.mDecorToolbar.collapseActionView();
return true;
}
void populateOptionsMenu() {
Menu menu = getMenu();
MenuBuilder menuBuilder = menu instanceof MenuBuilder ? (MenuBuilder) menu : null;
if (menuBuilder != null) {
menuBuilder.stopDispatchingItemsChanged();
}
try {
menu.clear();
if (!this.mWindowCallback.onCreatePanelMenu(0, menu) || !this.mWindowCallback.onPreparePanel(0, null, menu)) {
menu.clear();
}
} finally {
if (menuBuilder != null) {
menuBuilder.startDispatchingItemsChanged();
}
}
}
@Override // androidx.appcompat.app.ActionBar
public boolean onMenuKeyEvent(KeyEvent keyEvent) {
if (keyEvent.getAction() == 1) {
openOptionsMenu();
}
return true;
}
@Override // androidx.appcompat.app.ActionBar
public boolean onKeyShortcut(int i, KeyEvent keyEvent) {
Menu menu = getMenu();
if (menu == null) {
return false;
}
menu.setQwertyMode(KeyCharacterMap.load(keyEvent != null ? keyEvent.getDeviceId() : -1).getKeyboardType() != 1);
return menu.performShortcut(i, keyEvent, 0);
}
/* JADX INFO: Access modifiers changed from: package-private */
@Override // androidx.appcompat.app.ActionBar
public void onDestroy() {
this.mDecorToolbar.getViewGroup().removeCallbacks(this.mMenuInvalidator);
}
@Override // androidx.appcompat.app.ActionBar
public void addOnMenuVisibilityListener(ActionBar.OnMenuVisibilityListener onMenuVisibilityListener) {
this.mMenuVisibilityListeners.add(onMenuVisibilityListener);
}
@Override // androidx.appcompat.app.ActionBar
public void removeOnMenuVisibilityListener(ActionBar.OnMenuVisibilityListener onMenuVisibilityListener) {
this.mMenuVisibilityListeners.remove(onMenuVisibilityListener);
}
@Override // androidx.appcompat.app.ActionBar
public void dispatchMenuVisibilityChanged(boolean z) {
if (z == this.mLastMenuVisibility) {
return;
}
this.mLastMenuVisibility = z;
int size = this.mMenuVisibilityListeners.size();
for (int i = 0; i < size; i++) {
this.mMenuVisibilityListeners.get(i).onMenuVisibilityChanged(z);
}
}
/* loaded from: classes.dex */
private class ToolbarMenuCallback implements AppCompatDelegateImpl.ActionBarMenuCallback {
ToolbarMenuCallback() {
}
@Override // androidx.appcompat.app.AppCompatDelegateImpl.ActionBarMenuCallback
public boolean onPreparePanel(int i) {
if (i != 0 || ToolbarActionBar.this.mToolbarMenuPrepared) {
return false;
}
ToolbarActionBar.this.mDecorToolbar.setMenuPrepared();
ToolbarActionBar.this.mToolbarMenuPrepared = true;
return false;
}
@Override // androidx.appcompat.app.AppCompatDelegateImpl.ActionBarMenuCallback
public View onCreatePanelView(int i) {
if (i == 0) {
return new View(ToolbarActionBar.this.mDecorToolbar.getContext());
}
return null;
}
}
private Menu getMenu() {
if (!this.mMenuCallbackSet) {
this.mDecorToolbar.setMenuCallbacks(new ActionMenuPresenterCallback(), new MenuBuilderCallback());
this.mMenuCallbackSet = true;
}
return this.mDecorToolbar.getMenu();
}
/* JADX INFO: Access modifiers changed from: private */
/* loaded from: classes.dex */
public final class ActionMenuPresenterCallback implements MenuPresenter.Callback {
private boolean mClosingActionMenu;
ActionMenuPresenterCallback() {
}
@Override // androidx.appcompat.view.menu.MenuPresenter.Callback
public boolean onOpenSubMenu(MenuBuilder menuBuilder) {
ToolbarActionBar.this.mWindowCallback.onMenuOpened(AppCompatDelegate.FEATURE_SUPPORT_ACTION_BAR, menuBuilder);
return true;
}
@Override // androidx.appcompat.view.menu.MenuPresenter.Callback
public void onCloseMenu(MenuBuilder menuBuilder, boolean z) {
if (this.mClosingActionMenu) {
return;
}
this.mClosingActionMenu = true;
ToolbarActionBar.this.mDecorToolbar.dismissPopupMenus();
ToolbarActionBar.this.mWindowCallback.onPanelClosed(AppCompatDelegate.FEATURE_SUPPORT_ACTION_BAR, menuBuilder);
this.mClosingActionMenu = false;
}
}
/* JADX INFO: Access modifiers changed from: private */
/* loaded from: classes.dex */
public final class MenuBuilderCallback implements MenuBuilder.Callback {
@Override // androidx.appcompat.view.menu.MenuBuilder.Callback
public boolean onMenuItemSelected(MenuBuilder menuBuilder, MenuItem menuItem) {
return false;
}
MenuBuilderCallback() {
}
@Override // androidx.appcompat.view.menu.MenuBuilder.Callback
public void onMenuModeChange(MenuBuilder menuBuilder) {
if (ToolbarActionBar.this.mDecorToolbar.isOverflowMenuShowing()) {
ToolbarActionBar.this.mWindowCallback.onPanelClosed(AppCompatDelegate.FEATURE_SUPPORT_ACTION_BAR, menuBuilder);
} else if (ToolbarActionBar.this.mWindowCallback.onPreparePanel(0, null, menuBuilder)) {
ToolbarActionBar.this.mWindowCallback.onMenuOpened(AppCompatDelegate.FEATURE_SUPPORT_ACTION_BAR, menuBuilder);
}
}
}
}