Merge "Add actionbar items on dialpad fragment to match redlines"
diff --git a/res/layout/new_dialpad_fragment.xml b/res/layout/new_dialpad_fragment.xml
index 4641e00..2026781 100644
--- a/res/layout/new_dialpad_fragment.xml
+++ b/res/layout/new_dialpad_fragment.xml
@@ -73,26 +73,40 @@
 
         <View style="@style/DialpadHorizontalSeparator"/>
 
-        <!-- left and right paddings will be modified by the code. See DialpadFragment. -->
-        <FrameLayout
+        <LinearLayout
             android:id="@+id/dialButtonContainer"
             android:layout_width="match_parent"
             android:layout_height="0px"
             android:layout_weight="@integer/dialpad_layout_weight_additional_buttons"
             android:layout_gravity="center_horizontal"
             android:background="@color/dialpad_primary_text_color">
-
+            <ImageButton
+                android:id="@+id/call_history_on_dialpad_button"
+                android:layout_height="@dimen/fake_action_bar_height"
+                android:layout_width="@dimen/fake_menu_button_min_width"
+                android:layout_gravity="bottom|start"
+                android:background="?android:attr/selectableItemBackground"
+                android:contentDescription="@string/action_menu_call_history_description"
+                android:src="@drawable/ic_dialer_menu_history_dk"/>
             <ImageButton
                 android:id="@+id/dialButton"
-                android:layout_width="match_parent"
+                android:layout_width="0dp"
+                android:layout_weight="1"
                 android:layout_height="match_parent"
                 android:layout_gravity="center"
                 android:state_enabled="false"
                 android:background="@drawable/btn_call"
                 android:contentDescription="@string/description_dial_button"
                 android:src="@drawable/ic_dial_action_call" />
-
-        </FrameLayout>
+            <ImageButton
+                android:id="@+id/overflow_menu_on_dialpad"
+                android:layout_height="@dimen/fake_action_bar_height"
+                android:layout_width="@dimen/fake_menu_button_min_width"
+                android:layout_gravity="bottom|end"
+                android:background="?android:attr/selectableItemBackground"
+                android:src="@drawable/ic_menu_overflow_dark"
+                android:contentDescription="@string/action_menu_overflow_description" />
+        </LinearLayout>
 
         <!-- "Dialpad chooser" UI, shown only when the user brings up the
              Dialer while a call is already in progress.
diff --git a/res/layout/new_phone_favorites_fragment.xml b/res/layout/new_phone_favorites_fragment.xml
index 90d0aac..9974adf 100644
--- a/res/layout/new_phone_favorites_fragment.xml
+++ b/res/layout/new_phone_favorites_fragment.xml
@@ -46,7 +46,7 @@
             android:textAppearance="?android:attr/textAppearanceLarge"/>
     </FrameLayout>
     <FrameLayout
-        android:layout_height="48dp"
+        android:layout_height="@dimen/fake_action_bar_height"
         android:layout_width="match_parent"
         android:id="@+id/fake_action_bar"
         android:background="@color/actionbar_background_color">
@@ -56,7 +56,7 @@
             android:layout_height="match_parent"
             android:layout_gravity="bottom|start"
             android:background="?android:attr/selectableItemBackground"
-            android:contentDescription="@string/description_search_button"
+            android:contentDescription="@string/action_menu_call_history_description"
             android:src="@drawable/ic_dialer_menu_history_dk"/>
         <ImageButton
             android:id="@+id/dialpad_button"
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 0ab27c3..e9f2ce0 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -49,8 +49,9 @@
     <integer name="dialpad_layout_weight_dialpad">65</integer>
     <integer name="dialpad_layout_weight_additional_buttons">15</integer>
 
+    <dimen name="fake_action_bar_height">48dp</dimen>
     <!-- Min with of fake menu buttons, which should be same as ActionBar's one -->
-    <dimen name="fake_menu_button_min_width">56dip</dimen>
+    <dimen name="fake_menu_button_min_width">56dp</dimen>
 
     <!--  Smart Dial -->
     <dimen name="smartdial_suggestions_padding">4dp</dimen>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 8b7d61a..c7e1b86 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -302,6 +302,10 @@
     -->
     <string name="description_digits_edittext">number to dial</string>
 
+    <!-- Content description for the fake action menu button that brings up the call history
+         activity -->
+    <string name="action_menu_call_history_description">Call History</string>
+
     <!-- Content description for the fake action menu overflow button.
          This should be same as the description for the real action menu
          overflow button available in ActionBar.
diff --git a/src/com/android/dialer/NewDialtactsActivity.java b/src/com/android/dialer/NewDialtactsActivity.java
index 54e7df2..4b9a82d 100644
--- a/src/com/android/dialer/NewDialtactsActivity.java
+++ b/src/com/android/dialer/NewDialtactsActivity.java
@@ -82,7 +82,8 @@
 public class NewDialtactsActivity extends TransactionSafeActivity implements View.OnClickListener,
         NewDialpadFragment.OnDialpadQueryChangedListener, PopupMenu.OnMenuItemClickListener,
         OnListFragmentScrolledListener,
-        NewPhoneFavoriteFragment.OnPhoneFavoriteFragmentStartedListener {
+        NewPhoneFavoriteFragment.OnPhoneFavoriteFragmentStartedListener,
+        NewDialpadFragment.OnDialpadFragmentStartedListener {
     private static final String TAG = "DialtactsActivity";
 
     public static final boolean DEBUG = false;
@@ -335,6 +336,7 @@
     @Override
     public void onClick(View view) {
         switch (view.getId()) {
+            case R.id.overflow_menu_on_dialpad:
             case R.id.overflow_menu: {
                 final PopupMenu popupMenu = new PopupMenu(NewDialtactsActivity.this, view);
                 final Menu menu = popupMenu.getMenu();
@@ -346,6 +348,7 @@
             case R.id.dialpad_button:
                 showDialpadFragment();
                 break;
+            case R.id.call_history_on_dialpad_button:
             case R.id.call_history_button:
                 final Intent intent = new Intent(this, NewCallLogActivity.class);
                 startActivity(intent);
@@ -450,7 +453,7 @@
     }
 
 
-    public void setupFakeActionBarItems() {
+    public void setupFakeActionBarItemsForFavoritesFragment() {
         mMenuButton = findViewById(R.id.overflow_menu);
         if (mMenuButton != null) {
             // mMenuButton.setMinimumWidth(fakeMenuItemWidth);
@@ -471,6 +474,13 @@
         mDialpadButton.setOnClickListener(this);
     }
 
+    public void setupFakeActionBarItemsForDialpadFragment() {
+        final View overflowButton = findViewById(R.id.overflow_menu_on_dialpad);
+        overflowButton.setOnClickListener(this);
+        final View callhistoryButton = findViewById(R.id.call_history_on_dialpad_button);
+        callhistoryButton.setOnClickListener(this);
+    }
+
     @Override
     protected void onPause() {
         super.onPause();
@@ -747,6 +757,13 @@
 
     @Override
     public void onPhoneFavoriteFragmentStarted() {
-        setupFakeActionBarItems();
+        setupFakeActionBarItemsForFavoritesFragment();
     }
+
+    @Override
+    public void onDialpadFragmentStarted() {
+        setupFakeActionBarItemsForDialpadFragment();
+    }
+
+
 }
diff --git a/src/com/android/dialer/dialpad/NewDialpadFragment.java b/src/com/android/dialer/dialpad/NewDialpadFragment.java
index 46f5d06..d7bc3f9 100644
--- a/src/com/android/dialer/dialpad/NewDialpadFragment.java
+++ b/src/com/android/dialer/dialpad/NewDialpadFragment.java
@@ -101,6 +101,10 @@
         DialpadImageButton.OnPressedListener {
     private static final String TAG = NewDialpadFragment.class.getSimpleName();
 
+    public interface OnDialpadFragmentStartedListener {
+        public void onDialpadFragmentStarted();
+    }
+
     /**
      * LinearLayout with getter and setter methods for the translationY property using floats,
      * for animation purposes.
@@ -380,18 +384,6 @@
             setupKeypad(fragmentView);
         }
 
-        DisplayMetrics dm = getResources().getDisplayMetrics();
-        int minCellSize = (int) (56 * dm.density); // 56dip == minimum size of menu buttons
-        int cellCount = dm.widthPixels / minCellSize;
-        int fakeMenuItemWidth = dm.widthPixels / cellCount;
-        mDialButtonContainer = fragmentView.findViewById(R.id.dialButtonContainer);
-        // If in portrait, add padding to the dial button since we need space for the
-        // search and menu/overflow buttons.
-        if (mDialButtonContainer != null && !OrientationUtil.isLandscape(this.getActivity())) {
-            mDialButtonContainer.setPadding(
-                    fakeMenuItemWidth, mDialButtonContainer.getPaddingTop(),
-                    fakeMenuItemWidth, mDialButtonContainer.getPaddingBottom());
-        }
         mDialButton = fragmentView.findViewById(R.id.dialButton);
         if (r.getBoolean(R.bool.config_show_onscreen_dial_button)) {
             mDialButton.setOnClickListener(this);
@@ -423,6 +415,20 @@
         return fragmentView;
     }
 
+    @Override
+    public void onStart() {
+        super.onStart();
+
+        final Activity activity = getActivity();
+
+        try {
+            ((OnDialpadFragmentStartedListener) activity).onDialpadFragmentStarted();
+        } catch (ClassCastException e) {
+            throw new ClassCastException(activity.toString()
+                    + " must implement OnDialpadFragmentStartedListener");
+        }
+    }
+
     private boolean isLayoutReady() {
         return mDigits != null;
     }