Loading core/java/com/android/internal/app/ActionBarImpl.java +34 −17 Original line number Diff line number Diff line Loading @@ -16,8 +16,10 @@ package com.android.internal.app; import com.android.internal.view.menu.ActionMenu; import com.android.internal.view.menu.ActionMenuItem; import com.android.internal.view.menu.MenuBuilder; import com.android.internal.view.menu.MenuItemImpl; import com.android.internal.view.menu.MenuPopupHelper; import com.android.internal.view.menu.SubMenuBuilder; import com.android.internal.widget.ActionBarContextView; import com.android.internal.widget.ActionBarView; Loading Loading @@ -196,9 +198,7 @@ public class ActionBarImpl extends ActionBar { @Override public void startContextMode(ContextModeCallback callback) { if (mContextMode != null) { mContextMode.finish(); } finishContextMode(); // Don't wait for the close context mode animation to finish. if (mClosingContext) { Loading @@ -207,15 +207,16 @@ public class ActionBarImpl extends ActionBar { mCloseContext.run(); } mContextMode = new ContextMode(callback); if (callback.onCreateContextMode(mContextMode, mContextMode.getMenu())) { mContextMode.invalidate(); mUpperContextView.initForMode(mContextMode); ContextMode mode = new ContextMode(callback); if (callback.onCreateContextMode(mode, mode.getMenu())) { mode.invalidate(); mUpperContextView.initForMode(mode); mAnimatorView.setDisplayedChild(CONTEXT_VIEW); if (mLowerContextView != null) { // TODO animate this mLowerContextView.setVisibility(View.VISIBLE); } mContextMode = mode; } } Loading Loading @@ -336,14 +337,15 @@ public class ActionBarImpl extends ActionBar { /** * @hide */ public class ContextMode extends ActionBar.ContextMode { public class ContextMode extends ActionBar.ContextMode implements MenuBuilder.Callback { private ContextModeCallback mCallback; private ActionMenu mMenu; private MenuBuilder mMenu; private WeakReference<View> mCustomView; public ContextMode(ContextModeCallback callback) { mCallback = callback; mMenu = new ActionMenu(mActionView.getContext()); mMenu = new MenuBuilder(mActionView.getContext()); mMenu.setCallback(this); } @Override Loading Loading @@ -405,11 +407,26 @@ public class ActionBarImpl extends ActionBar { return mCustomView != null ? mCustomView.get() : null; } public void dispatchOnContextItemClicked(MenuItem item) { ActionMenuItem actionItem = (ActionMenuItem) item; if (!actionItem.invoke()) { mCallback.onContextItemClicked(this, item); public boolean onMenuItemSelected(MenuBuilder menu, MenuItem item) { return mCallback.onContextItemClicked(this, item); } public void onCloseMenu(MenuBuilder menu, boolean allMenusAreClosing) { } public boolean onSubMenuSelected(SubMenuBuilder subMenu) { if (!subMenu.hasVisibleItems()) { return true; } new MenuPopupHelper(mActivity, subMenu).show(); return true; } public void onCloseSubMenu(SubMenuBuilder menu) { } public void onMenuModeChange(MenuBuilder menu) { } } Loading core/java/com/android/internal/widget/ActionBarContextView.java +11 −37 Original line number Diff line number Diff line Loading @@ -16,7 +16,8 @@ package com.android.internal.widget; import com.android.internal.R; import com.android.internal.app.ActionBarImpl; import com.android.internal.view.menu.ActionMenuView; import com.android.internal.view.menu.MenuBuilder; import android.app.ActionBar; import android.content.Context; Loading @@ -25,11 +26,8 @@ import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.view.View.MeasureSpec; import android.view.ViewGroup.LayoutParams; import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.TextView; Loading @@ -43,6 +41,7 @@ public class ActionBarContextView extends ViewGroup { private int mItemPadding; private int mItemMargin; private int mActionSpacing; private int mContentHeight; private CharSequence mTitle; Loading @@ -54,6 +53,7 @@ public class ActionBarContextView extends ViewGroup { private TextView mTitleView; private TextView mSubtitleView; private Drawable mCloseDrawable; private View mMenuView; public ActionBarContextView(Context context) { this(context, null, 0); Loading Loading @@ -137,8 +137,6 @@ public class ActionBarContextView extends ViewGroup { } public void initForMode(final ActionBar.ContextMode mode) { final ActionBarImpl.ContextMode implMode = (ActionBarImpl.ContextMode) mode; if (mCloseButton == null) { mCloseButton = new ImageButton(getContext()); mCloseButton.setImageDrawable(mCloseDrawable); Loading @@ -151,34 +149,15 @@ public class ActionBarContextView extends ViewGroup { } addView(mCloseButton); final Context context = getContext(); final Menu menu = mode.getMenu(); final int itemCount = menu.size(); for (int i = 0; i < itemCount; i++) { final MenuItem item = menu.getItem(i); final ImageButton button = new ImageButton(context, null, com.android.internal.R.attr.actionButtonStyle); button.setClickable(true); button.setFocusable(true); button.setImageDrawable(item.getIcon()); button.setId(item.getItemId()); button.setVisibility(item.isVisible() ? VISIBLE : GONE); button.setEnabled(item.isEnabled()); button.setOnClickListener(new OnClickListener() { public void onClick(View v) { implMode.dispatchOnContextItemClicked(item); } }); addView(button); } requestLayout(); final MenuBuilder menu = (MenuBuilder) mode.getMenu(); mMenuView = menu.getMenuView(MenuBuilder.TYPE_ACTION_BUTTON, this); addView(mMenuView); } public void closeMode() { removeAllViews(); mCustomView = null; mMenuView = null; } @Override Loading Loading @@ -267,14 +246,9 @@ public class ActionBarContextView extends ViewGroup { x = r - l - getPaddingRight(); final int childCount = getChildCount(); for (int i = 0; i < childCount; i++) { final View child = getChildAt(i); if (child == mCloseButton || child == mTitleLayout || child == mCustomView) { continue; } x -= positionChildInverse(child, x, y, contentHeight) + itemMargin; if (mMenuView != null) { x -= positionChildInverse(mMenuView, x + mActionSpacing, y, contentHeight) - mActionSpacing; } } Loading Loading
core/java/com/android/internal/app/ActionBarImpl.java +34 −17 Original line number Diff line number Diff line Loading @@ -16,8 +16,10 @@ package com.android.internal.app; import com.android.internal.view.menu.ActionMenu; import com.android.internal.view.menu.ActionMenuItem; import com.android.internal.view.menu.MenuBuilder; import com.android.internal.view.menu.MenuItemImpl; import com.android.internal.view.menu.MenuPopupHelper; import com.android.internal.view.menu.SubMenuBuilder; import com.android.internal.widget.ActionBarContextView; import com.android.internal.widget.ActionBarView; Loading Loading @@ -196,9 +198,7 @@ public class ActionBarImpl extends ActionBar { @Override public void startContextMode(ContextModeCallback callback) { if (mContextMode != null) { mContextMode.finish(); } finishContextMode(); // Don't wait for the close context mode animation to finish. if (mClosingContext) { Loading @@ -207,15 +207,16 @@ public class ActionBarImpl extends ActionBar { mCloseContext.run(); } mContextMode = new ContextMode(callback); if (callback.onCreateContextMode(mContextMode, mContextMode.getMenu())) { mContextMode.invalidate(); mUpperContextView.initForMode(mContextMode); ContextMode mode = new ContextMode(callback); if (callback.onCreateContextMode(mode, mode.getMenu())) { mode.invalidate(); mUpperContextView.initForMode(mode); mAnimatorView.setDisplayedChild(CONTEXT_VIEW); if (mLowerContextView != null) { // TODO animate this mLowerContextView.setVisibility(View.VISIBLE); } mContextMode = mode; } } Loading Loading @@ -336,14 +337,15 @@ public class ActionBarImpl extends ActionBar { /** * @hide */ public class ContextMode extends ActionBar.ContextMode { public class ContextMode extends ActionBar.ContextMode implements MenuBuilder.Callback { private ContextModeCallback mCallback; private ActionMenu mMenu; private MenuBuilder mMenu; private WeakReference<View> mCustomView; public ContextMode(ContextModeCallback callback) { mCallback = callback; mMenu = new ActionMenu(mActionView.getContext()); mMenu = new MenuBuilder(mActionView.getContext()); mMenu.setCallback(this); } @Override Loading Loading @@ -405,11 +407,26 @@ public class ActionBarImpl extends ActionBar { return mCustomView != null ? mCustomView.get() : null; } public void dispatchOnContextItemClicked(MenuItem item) { ActionMenuItem actionItem = (ActionMenuItem) item; if (!actionItem.invoke()) { mCallback.onContextItemClicked(this, item); public boolean onMenuItemSelected(MenuBuilder menu, MenuItem item) { return mCallback.onContextItemClicked(this, item); } public void onCloseMenu(MenuBuilder menu, boolean allMenusAreClosing) { } public boolean onSubMenuSelected(SubMenuBuilder subMenu) { if (!subMenu.hasVisibleItems()) { return true; } new MenuPopupHelper(mActivity, subMenu).show(); return true; } public void onCloseSubMenu(SubMenuBuilder menu) { } public void onMenuModeChange(MenuBuilder menu) { } } Loading
core/java/com/android/internal/widget/ActionBarContextView.java +11 −37 Original line number Diff line number Diff line Loading @@ -16,7 +16,8 @@ package com.android.internal.widget; import com.android.internal.R; import com.android.internal.app.ActionBarImpl; import com.android.internal.view.menu.ActionMenuView; import com.android.internal.view.menu.MenuBuilder; import android.app.ActionBar; import android.content.Context; Loading @@ -25,11 +26,8 @@ import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.view.View.MeasureSpec; import android.view.ViewGroup.LayoutParams; import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.TextView; Loading @@ -43,6 +41,7 @@ public class ActionBarContextView extends ViewGroup { private int mItemPadding; private int mItemMargin; private int mActionSpacing; private int mContentHeight; private CharSequence mTitle; Loading @@ -54,6 +53,7 @@ public class ActionBarContextView extends ViewGroup { private TextView mTitleView; private TextView mSubtitleView; private Drawable mCloseDrawable; private View mMenuView; public ActionBarContextView(Context context) { this(context, null, 0); Loading Loading @@ -137,8 +137,6 @@ public class ActionBarContextView extends ViewGroup { } public void initForMode(final ActionBar.ContextMode mode) { final ActionBarImpl.ContextMode implMode = (ActionBarImpl.ContextMode) mode; if (mCloseButton == null) { mCloseButton = new ImageButton(getContext()); mCloseButton.setImageDrawable(mCloseDrawable); Loading @@ -151,34 +149,15 @@ public class ActionBarContextView extends ViewGroup { } addView(mCloseButton); final Context context = getContext(); final Menu menu = mode.getMenu(); final int itemCount = menu.size(); for (int i = 0; i < itemCount; i++) { final MenuItem item = menu.getItem(i); final ImageButton button = new ImageButton(context, null, com.android.internal.R.attr.actionButtonStyle); button.setClickable(true); button.setFocusable(true); button.setImageDrawable(item.getIcon()); button.setId(item.getItemId()); button.setVisibility(item.isVisible() ? VISIBLE : GONE); button.setEnabled(item.isEnabled()); button.setOnClickListener(new OnClickListener() { public void onClick(View v) { implMode.dispatchOnContextItemClicked(item); } }); addView(button); } requestLayout(); final MenuBuilder menu = (MenuBuilder) mode.getMenu(); mMenuView = menu.getMenuView(MenuBuilder.TYPE_ACTION_BUTTON, this); addView(mMenuView); } public void closeMode() { removeAllViews(); mCustomView = null; mMenuView = null; } @Override Loading Loading @@ -267,14 +246,9 @@ public class ActionBarContextView extends ViewGroup { x = r - l - getPaddingRight(); final int childCount = getChildCount(); for (int i = 0; i < childCount; i++) { final View child = getChildAt(i); if (child == mCloseButton || child == mTitleLayout || child == mCustomView) { continue; } x -= positionChildInverse(child, x, y, contentHeight) + itemMargin; if (mMenuView != null) { x -= positionChildInverse(mMenuView, x + mActionSpacing, y, contentHeight) - mActionSpacing; } } Loading