Action bar API updates - new display options
Change-Id: I55e56cd7aafa53994990079e88ef85e4eb1a0b3f
diff --git a/core/java/com/android/internal/app/ActionBarImpl.java b/core/java/com/android/internal/app/ActionBarImpl.java
index 3015363..f4a041c 100644
--- a/core/java/com/android/internal/app/ActionBarImpl.java
+++ b/core/java/com/android/internal/app/ActionBarImpl.java
@@ -52,9 +52,6 @@
public class ActionBarImpl extends ActionBar {
private static final int NORMAL_VIEW = 0;
private static final int CONTEXT_VIEW = 1;
-
- private static final int TAB_SWITCH_SHOW_HIDE = 0;
- private static final int TAB_SWITCH_ADD_REMOVE = 1;
private Context mContext;
private Activity mActivity;
@@ -67,9 +64,7 @@
private ArrayList<TabImpl> mTabs = new ArrayList<TabImpl>();
- private int mTabContainerViewId = android.R.id.content;
private TabImpl mSelectedTab;
- private int mTabSwitchMode = TAB_SWITCH_ADD_REMOVE;
private ActionMode mActionMode;
@@ -133,7 +128,9 @@
public void setCustomNavigationMode(View view) {
cleanupTabs();
- mActionView.setCustomNavigationView(view);
+ setCustomView(view);
+ setDisplayOptions(DISPLAY_SHOW_CUSTOM, DISPLAY_SHOW_CUSTOM | DISPLAY_SHOW_TITLE);
+ mActionView.setNavigationMode(NAVIGATION_MODE_STANDARD);
mActionView.setCallback(null);
}
@@ -144,16 +141,17 @@
public void setDropdownNavigationMode(SpinnerAdapter adapter, NavigationCallback callback,
int defaultSelectedPosition) {
cleanupTabs();
- mActionView.setNavigationMode(NAVIGATION_MODE_DROPDOWN_LIST);
- mActionView.setDropdownAdapter(adapter);
+ setDisplayOptions(0, DISPLAY_SHOW_CUSTOM | DISPLAY_SHOW_TITLE);
+ mActionView.setNavigationMode(NAVIGATION_MODE_LIST);
+ setListNavigationCallbacks(adapter, callback);
if (defaultSelectedPosition >= 0) {
mActionView.setDropdownSelectedPosition(defaultSelectedPosition);
}
- mActionView.setCallback(callback);
}
public void setStandardNavigationMode() {
cleanupTabs();
+ setDisplayOptions(DISPLAY_SHOW_TITLE, DISPLAY_SHOW_TITLE | DISPLAY_SHOW_CUSTOM);
mActionView.setNavigationMode(NAVIGATION_MODE_STANDARD);
mActionView.setCallback(null);
}
@@ -163,24 +161,21 @@
case NAVIGATION_MODE_TABS:
selectTab(mTabs.get(position));
break;
- case NAVIGATION_MODE_DROPDOWN_LIST:
+ case NAVIGATION_MODE_LIST:
mActionView.setDropdownSelectedPosition(position);
break;
default:
throw new IllegalStateException(
- "setSelectedNavigationItem not valid for current navigation mode");
+ "setSelectedNavigationIndex not valid for current navigation mode");
}
}
public int getSelectedNavigationItem() {
- switch (mActionView.getNavigationMode()) {
- case NAVIGATION_MODE_TABS:
- return mSelectedTab.getPosition();
- case NAVIGATION_MODE_DROPDOWN_LIST:
- return mActionView.getDropdownSelectedPosition();
- default:
- return -1;
- }
+ return getSelectedNavigationIndex();
+ }
+
+ public void removeAllTabs() {
+ cleanupTabs();
}
private void cleanupTabs() {
@@ -321,6 +316,7 @@
throw new IllegalStateException(
"Tab navigation mode cannot be used outside of an Activity");
}
+ setDisplayOptions(0, DISPLAY_SHOW_TITLE | DISPLAY_SHOW_CUSTOM);
mActionView.setNavigationMode(NAVIGATION_MODE_TABS);
}
@@ -510,8 +506,9 @@
}
@Override
- public void setTag(Object tag) {
+ public Tab setTag(Object tag) {
mTag = tag;
+ return this;
}
public ActionBar.TabListener getCallback() {
@@ -519,8 +516,9 @@
}
@Override
- public void setTabListener(ActionBar.TabListener callback) {
+ public Tab setTabListener(ActionBar.TabListener callback) {
mCallback = callback;
+ return this;
}
@Override
@@ -529,8 +527,9 @@
}
@Override
- public void setCustomView(View view) {
+ public Tab setCustomView(View view) {
mCustomView = view;
+ return this;
}
@Override
@@ -553,13 +552,15 @@
}
@Override
- public void setIcon(Drawable icon) {
+ public Tab setIcon(Drawable icon) {
mIcon = icon;
+ return this;
}
@Override
- public void setText(CharSequence text) {
+ public Tab setText(CharSequence text) {
mText = text;
+ return this;
}
@Override
@@ -567,4 +568,56 @@
selectTab(this);
}
}
+
+ @Override
+ public void setCustomView(View view) {
+ mActionView.setCustomNavigationView(view);
+ }
+
+ @Override
+ public void setCustomView(View view, LayoutParams layoutParams) {
+ view.setLayoutParams(layoutParams);
+ mActionView.setCustomNavigationView(view);
+ }
+
+ @Override
+ public void setListNavigationCallbacks(SpinnerAdapter adapter, NavigationCallback callback) {
+ mActionView.setDropdownAdapter(adapter);
+ mActionView.setCallback(callback);
+ }
+
+ @Override
+ public int getSelectedNavigationIndex() {
+ switch (mActionView.getNavigationMode()) {
+ case NAVIGATION_MODE_TABS:
+ return mSelectedTab.getPosition();
+ case NAVIGATION_MODE_LIST:
+ return mActionView.getDropdownSelectedPosition();
+ default:
+ return -1;
+ }
+ }
+
+ @Override
+ public int getNavigationItemCount() {
+ switch (mActionView.getNavigationMode()) {
+ case NAVIGATION_MODE_TABS:
+ return mTabs.size();
+ case NAVIGATION_MODE_LIST:
+ SpinnerAdapter adapter = mActionView.getDropdownAdapter();
+ return adapter != null ? adapter.getCount() : 0;
+ default:
+ return 0;
+ }
+ }
+
+ @Override
+ public void setNavigationMode(int mode) {
+ mActionView.setNavigationMode(mode);
+ }
+
+ @Override
+ public Tab getTabAt(int index) {
+ return mTabs.get(index);
+ }
}