am 33d9dc46: Merge "Move all actionbar related methods to DecorToolbar" into lmp-mr1-dev

* commit '33d9dc46cfbe42e508b2c4b97801059964b3476b':
  Move all actionbar related methods to DecorToolbar
This commit is contained in:
Yigit Boyar
2014-10-30 02:18:38 +00:00
committed by Android Git Automerger
4 changed files with 80 additions and 25 deletions

View File

@@ -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)) {

View File

@@ -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;

View File

@@ -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();
} }

View File

@@ -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();
}
} }