Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 33d9dc46 authored by Yigit Boyar's avatar Yigit Boyar Committed by Android (Google) Code Review
Browse files

Merge "Move all actionbar related methods to DecorToolbar" into lmp-mr1-dev

parents a9ba2cdf fe6d57c3
Loading
Loading
Loading
Loading
+23 −25
Original line number Original line Diff line number Diff line
@@ -40,7 +40,6 @@ import com.android.internal.widget.ToolbarWidgetWrapper;
import java.util.ArrayList;
import java.util.ArrayList;


public class ToolbarActionBar extends ActionBar {
public class ToolbarActionBar extends ActionBar {
    private Toolbar mToolbar;
    private DecorToolbar mDecorToolbar;
    private DecorToolbar mDecorToolbar;
    private boolean mToolbarMenuPrepared;
    private boolean mToolbarMenuPrepared;
    private Window.Callback mWindowCallback;
    private Window.Callback mWindowCallback;
@@ -66,7 +65,6 @@ public class ToolbarActionBar extends ActionBar {
    };
    };


    public ToolbarActionBar(Toolbar toolbar, CharSequence title, Window.Callback windowCallback) {
    public ToolbarActionBar(Toolbar toolbar, CharSequence title, Window.Callback windowCallback) {
        mToolbar = toolbar;
        mDecorToolbar = new ToolbarWidgetWrapper(toolbar, false);
        mDecorToolbar = new ToolbarWidgetWrapper(toolbar, false);
        mWindowCallback = new ToolbarCallbackWrapper(windowCallback);
        mWindowCallback = new ToolbarCallbackWrapper(windowCallback);
        mDecorToolbar.setWindowCallback(mWindowCallback);
        mDecorToolbar.setWindowCallback(mWindowCallback);
@@ -91,8 +89,8 @@ public class ToolbarActionBar extends ActionBar {


    @Override
    @Override
    public void setCustomView(int resId) {
    public void setCustomView(int resId) {
        final LayoutInflater inflater = LayoutInflater.from(mToolbar.getContext());
        final LayoutInflater inflater = LayoutInflater.from(mDecorToolbar.getContext());
        setCustomView(inflater.inflate(resId, mToolbar, false));
        setCustomView(inflater.inflate(resId, mDecorToolbar.getViewGroup(), false));
    }
    }


    @Override
    @Override
@@ -132,17 +130,17 @@ public class ToolbarActionBar extends ActionBar {


    @Override
    @Override
    public void setElevation(float elevation) {
    public void setElevation(float elevation) {
        mToolbar.setElevation(elevation);
        mDecorToolbar.getViewGroup().setElevation(elevation);
    }
    }


    @Override
    @Override
    public float getElevation() {
    public float getElevation() {
        return mToolbar.getElevation();
        return mDecorToolbar.getViewGroup().getElevation();
    }
    }


    @Override
    @Override
    public Context getThemedContext() {
    public Context getThemedContext() {
        return mToolbar.getContext();
        return mDecorToolbar.getContext();
    }
    }


    @Override
    @Override
@@ -152,12 +150,12 @@ public class ToolbarActionBar extends ActionBar {


    @Override
    @Override
    public void setHomeAsUpIndicator(Drawable indicator) {
    public void setHomeAsUpIndicator(Drawable indicator) {
        mToolbar.setNavigationIcon(indicator);
        mDecorToolbar.setNavigationIcon(indicator);
    }
    }


    @Override
    @Override
    public void setHomeAsUpIndicator(int resId) {
    public void setHomeAsUpIndicator(int resId) {
        mToolbar.setNavigationIcon(resId);
        mDecorToolbar.setNavigationIcon(resId);
    }
    }


    @Override
    @Override
@@ -280,7 +278,7 @@ public class ToolbarActionBar extends ActionBar {


    @Override
    @Override
    public void setBackgroundDrawable(@Nullable Drawable d) {
    public void setBackgroundDrawable(@Nullable Drawable d) {
        mToolbar.setBackground(d);
        mDecorToolbar.setBackgroundDrawable(d);
    }
    }


    @Override
    @Override
@@ -290,12 +288,12 @@ public class ToolbarActionBar extends ActionBar {


    @Override
    @Override
    public CharSequence getTitle() {
    public CharSequence getTitle() {
        return mToolbar.getTitle();
        return mDecorToolbar.getTitle();
    }
    }


    @Override
    @Override
    public CharSequence getSubtitle() {
    public CharSequence getSubtitle() {
        return mToolbar.getSubtitle();
        return mDecorToolbar.getSubtitle();
    }
    }


    @Override
    @Override
@@ -389,44 +387,44 @@ public class ToolbarActionBar extends ActionBar {


    @Override
    @Override
    public int getHeight() {
    public int getHeight() {
        return mToolbar.getHeight();
        return mDecorToolbar.getHeight();
    }
    }


    @Override
    @Override
    public void show() {
    public void show() {
        // TODO: Consider a better transition for this.
        // TODO: Consider a better transition for this.
        // Right now use no automatic transition so that the app can supply one if desired.
        // Right now use no automatic transition so that the app can supply one if desired.
        mToolbar.setVisibility(View.VISIBLE);
        mDecorToolbar.setVisibility(View.VISIBLE);
    }
    }


    @Override
    @Override
    public void hide() {
    public void hide() {
        // TODO: Consider a better transition for this.
        // TODO: Consider a better transition for this.
        // Right now use no automatic transition so that the app can supply one if desired.
        // Right now use no automatic transition so that the app can supply one if desired.
        mToolbar.setVisibility(View.GONE);
        mDecorToolbar.setVisibility(View.GONE);
    }
    }


    @Override
    @Override
    public boolean isShowing() {
    public boolean isShowing() {
        return mToolbar.getVisibility() == View.VISIBLE;
        return mDecorToolbar.getVisibility() == View.VISIBLE;
    }
    }


    @Override
    @Override
    public boolean openOptionsMenu() {
    public boolean openOptionsMenu() {
        return mToolbar.showOverflowMenu();
        return mDecorToolbar.showOverflowMenu();
    }
    }


    @Override
    @Override
    public boolean invalidateOptionsMenu() {
    public boolean invalidateOptionsMenu() {
        mToolbar.removeCallbacks(mMenuInvalidator);
        mDecorToolbar.getViewGroup().removeCallbacks(mMenuInvalidator);
        mToolbar.postOnAnimation(mMenuInvalidator);
        mDecorToolbar.getViewGroup().postOnAnimation(mMenuInvalidator);
        return true;
        return true;
    }
    }


    @Override
    @Override
    public boolean collapseActionView() {
    public boolean collapseActionView() {
        if (mToolbar.hasExpandedActionView()) {
        if (mDecorToolbar.hasExpandedActionView()) {
            mToolbar.collapseActionView();
            mDecorToolbar.collapseActionView();
            return true;
            return true;
        }
        }
        return false;
        return false;
@@ -434,10 +432,10 @@ public class ToolbarActionBar extends ActionBar {


    void populateOptionsMenu() {
    void populateOptionsMenu() {
        if (!mMenuCallbackSet) {
        if (!mMenuCallbackSet) {
            mToolbar.setMenuCallbacks(new ActionMenuPresenterCallback(), new MenuBuilderCallback());
            mDecorToolbar.setMenuCallbacks(new ActionMenuPresenterCallback(), new MenuBuilderCallback());
            mMenuCallbackSet = true;
            mMenuCallbackSet = true;
        }
        }
        final Menu menu = mToolbar.getMenu();
        final Menu menu = mDecorToolbar.getMenu();
        final MenuBuilder mb = menu instanceof MenuBuilder ? (MenuBuilder) menu : null;
        final MenuBuilder mb = menu instanceof MenuBuilder ? (MenuBuilder) menu : null;
        if (mb != null) {
        if (mb != null) {
            mb.stopDispatchingItemsChanged();
            mb.stopDispatchingItemsChanged();
@@ -518,7 +516,7 @@ public class ToolbarActionBar extends ActionBar {
            }
            }


            mClosingActionMenu = true;
            mClosingActionMenu = true;
            mToolbar.dismissPopupMenus();
            mDecorToolbar.dismissPopupMenus();
            if (mWindowCallback != null) {
            if (mWindowCallback != null) {
                mWindowCallback.onPanelClosed(Window.FEATURE_ACTION_BAR, menu);
                mWindowCallback.onPanelClosed(Window.FEATURE_ACTION_BAR, menu);
            }
            }
@@ -536,7 +534,7 @@ public class ToolbarActionBar extends ActionBar {
        @Override
        @Override
        public void onMenuModeChange(MenuBuilder menu) {
        public void onMenuModeChange(MenuBuilder menu) {
            if (mWindowCallback != null) {
            if (mWindowCallback != null) {
                if (mToolbar.isOverflowMenuShowing()) {
                if (mDecorToolbar.isOverflowMenuShowing()) {
                    mWindowCallback.onPanelClosed(Window.FEATURE_ACTION_BAR, menu);
                    mWindowCallback.onPanelClosed(Window.FEATURE_ACTION_BAR, menu);
                } else if (mWindowCallback.onPreparePanel(Window.FEATURE_OPTIONS_PANEL,
                } else if (mWindowCallback.onPreparePanel(Window.FEATURE_OPTIONS_PANEL,
                        null, menu)) {
                        null, menu)) {
+16 −0
Original line number Original line Diff line number Diff line
@@ -1341,6 +1341,22 @@ public class ActionBarView extends AbsActionBarView implements DecorToolbar {
        updateHomeAccessibility(mUpGoerFive.isEnabled());
        updateHomeAccessibility(mUpGoerFive.isEnabled());
    }
    }


    @Override
    public void setMenuCallbacks(MenuPresenter.Callback presenterCallback,
            MenuBuilder.Callback menuBuilderCallback) {
        if (mActionMenuPresenter != null) {
            mActionMenuPresenter.setCallback(presenterCallback);
        }
        if (mOptionsMenu != null) {
            mOptionsMenu.setCallback(menuBuilderCallback);
        }
    }

    @Override
    public Menu getMenu() {
        return mOptionsMenu;
    }

    static class SavedState extends BaseSavedState {
    static class SavedState extends BaseSavedState {
        int expandedMenuItemId;
        int expandedMenuItemId;
        boolean isOverflowOpen;
        boolean isOverflowOpen;
+9 −0
Original line number Original line Diff line number Diff line
@@ -27,6 +27,8 @@ import android.view.ViewGroup;
import android.view.Window;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.AdapterView;
import android.widget.SpinnerAdapter;
import android.widget.SpinnerAdapter;

import com.android.internal.view.menu.MenuBuilder;
import com.android.internal.view.menu.MenuPresenter;
import com.android.internal.view.menu.MenuPresenter;


/**
/**
@@ -93,4 +95,11 @@ public interface DecorToolbar {
    void setDefaultNavigationIcon(Drawable icon);
    void setDefaultNavigationIcon(Drawable icon);
    void saveHierarchyState(SparseArray<Parcelable> toolbarStates);
    void saveHierarchyState(SparseArray<Parcelable> toolbarStates);
    void restoreHierarchyState(SparseArray<Parcelable> toolbarStates);
    void restoreHierarchyState(SparseArray<Parcelable> toolbarStates);
    void setBackgroundDrawable(Drawable d);
    int getHeight();
    void setVisibility(int visible);
    int getVisibility();
    void setMenuCallbacks(MenuPresenter.Callback presenterCallback,
            MenuBuilder.Callback menuBuilderCallback);
    Menu getMenu();
}
}
+32 −0
Original line number Original line Diff line number Diff line
@@ -657,4 +657,36 @@ public class ToolbarWidgetWrapper implements DecorToolbar {
        mToolbar.restoreHierarchyState(toolbarStates);
        mToolbar.restoreHierarchyState(toolbarStates);
    }
    }


    @Override
    public void setBackgroundDrawable(Drawable d) {
        //noinspection deprecation
        mToolbar.setBackgroundDrawable(d);
    }

    @Override
    public int getHeight() {
        return mToolbar.getHeight();
    }

    @Override
    public void setVisibility(int visible) {
        mToolbar.setVisibility(visible);
    }

    @Override
    public int getVisibility() {
        return mToolbar.getVisibility();
    }

    @Override
    public void setMenuCallbacks(MenuPresenter.Callback presenterCallback,
            MenuBuilder.Callback menuBuilderCallback) {
        mToolbar.setMenuCallbacks(presenterCallback, menuBuilderCallback);
    }

    @Override
    public Menu getMenu() {
        return mToolbar.getMenu();
    }

}
}