Action bar work for phones

Drop tabs to a second row at < w480dp

Make 9-patches for the cab's "done" button thinner

Add a "disable home" display option to the action bar to turn off
focus and touch feedback when tapping home would do nothing

Change-Id: Ib2eedf311655f02055357321e2e9ad5b9037fed1
diff --git a/core/java/com/android/internal/app/ActionBarImpl.java b/core/java/com/android/internal/app/ActionBarImpl.java
index 9652085..dccfa6c 100644
--- a/core/java/com/android/internal/app/ActionBarImpl.java
+++ b/core/java/com/android/internal/app/ActionBarImpl.java
@@ -42,8 +42,10 @@
 import android.view.MenuInflater;
 import android.view.MenuItem;
 import android.view.View;
+import android.view.ViewGroup;
 import android.view.Window;
 import android.view.animation.DecelerateInterpolator;
+import android.widget.HorizontalScrollView;
 import android.widget.LinearLayout;
 import android.widget.SpinnerAdapter;
 
@@ -71,6 +73,7 @@
     private ActionBarContextView mUpperContextView;
     private LinearLayout mLowerContextView;
     private View mContentView;
+    private ViewGroup mExternalTabView;
 
     private ArrayList<TabImpl> mTabs = new ArrayList<TabImpl>();
 
@@ -172,6 +175,18 @@
         mActionView.setContextView(mUpperContextView);
         mContextDisplayMode = mLowerContextView == null ?
                 CONTEXT_DISPLAY_NORMAL : CONTEXT_DISPLAY_SPLIT;
+
+        if (!mActionView.hasEmbeddedTabs()) {
+            HorizontalScrollView tabScroller = new HorizontalScrollView(mContext);
+            ViewGroup tabContainer = mActionView.createTabContainer();
+            tabScroller.setHorizontalFadingEdgeEnabled(true);
+            tabScroller.addView(tabContainer);
+            tabScroller.setVisibility(getNavigationMode() == NAVIGATION_MODE_TABS ?
+                    View.VISIBLE : View.GONE);
+            mActionView.setExternalTabLayout(tabContainer);
+            mContainerView.setTabContainer(tabScroller);
+            mExternalTabView = tabScroller;
+        }
     }
 
     /**
@@ -239,6 +254,11 @@
     }
 
     @Override
+    public void setDisplayDisableHomeEnabled(boolean disableHome) {
+        setDisplayOptions(disableHome ? DISPLAY_DISABLE_HOME : 0, DISPLAY_DISABLE_HOME);
+    }
+
+    @Override
     public void setTitle(int resId) {
         setTitle(mContext.getString(resId));
     }
@@ -533,7 +553,7 @@
         final int count = mContainerView.getChildCount();
         for (int i = 0; i < count; i++) {
             final View child = mContainerView.getChildAt(i);
-            if (i == viewIndex) {
+            if (i == viewIndex || child == mContainerView.getTabContainer()) {
                 continue;
             }
 
@@ -840,11 +860,17 @@
             case NAVIGATION_MODE_TABS:
                 mSavedTabPosition = getSelectedNavigationIndex();
                 selectTab(null);
+                if (!mActionView.hasEmbeddedTabs()) {
+                    mExternalTabView.setVisibility(View.GONE);
+                }
                 break;
         }
         mActionView.setNavigationMode(mode);
         switch (mode) {
             case NAVIGATION_MODE_TABS:
+                if (!mActionView.hasEmbeddedTabs()) {
+                    mExternalTabView.setVisibility(View.VISIBLE);
+                }
                 if (mSavedTabPosition != INVALID_POSITION) {
                     setSelectedNavigationItem(mSavedTabPosition);
                     mSavedTabPosition = INVALID_POSITION;