From a5d5cdf2ed131289943033cfd775dd34ffd7ff45 Mon Sep 17 00:00:00 2001 From: Yorke Lee Date: Tue, 22 Apr 2014 17:20:00 -0700 Subject: Add floating dialpad action button * Replace fake action bar at the bottom of the screen with a floating action button which casts a shadow. * Remove the now unused mDialpadOverflowMenu button in DialtactsActivity * Modify dialpad layout to add a bottom row of buttons which provide access to the add contact button and overflow menu * Fix dialpad layout so the heights applied in XML are actually respected - previously they were being ignored and each dialpad key was being assigned the height of MATCH_PARENT Bug: 13932988 Change-Id: I6e48c00c5ceeeffed142c3dd259e630d6daf8111 --- .../android/dialer/dialpad/DialpadFragment.java | 43 ++++++++++++---------- 1 file changed, 24 insertions(+), 19 deletions(-) (limited to 'src/com/android/dialer/dialpad') diff --git a/src/com/android/dialer/dialpad/DialpadFragment.java b/src/com/android/dialer/dialpad/DialpadFragment.java index 703c27730..72abaa085 100644 --- a/src/com/android/dialer/dialpad/DialpadFragment.java +++ b/src/com/android/dialer/dialpad/DialpadFragment.java @@ -76,9 +76,11 @@ import com.android.dialer.NeededForReflection; import com.android.dialer.DialtactsActivity; import com.android.dialer.R; import com.android.dialer.SpecialCharSequenceMgr; +import com.android.dialer.util.DialerUtils; import com.android.internal.telephony.ITelephony; import com.android.phone.common.CallLogAsync; import com.android.phone.common.HapticFeedback; + import com.google.common.annotations.VisibleForTesting; import java.util.HashSet; @@ -199,6 +201,8 @@ public class DialpadFragment extends Fragment /** Remembers if we need to clear digits field when the screen is completely gone. */ private boolean mClearDigitsOnStop; + private View mAddContactButton; + private View mOverflowMenuButton; private View mDelete; private ToneGenerator mToneGenerator; private final Object mToneGeneratorLock = new Object(); @@ -333,6 +337,9 @@ public class DialpadFragment extends Fragment if (isDigitsEmpty()) { mDigitsFilledByIntent = false; mDigits.setCursorVisible(false); + mAddContactButton.setVisibility(View.INVISIBLE); + } else { + mAddContactButton.setVisibility(View.VISIBLE); } if (mDialpadQueryListener != null) { @@ -612,8 +619,6 @@ public class DialpadFragment extends Fragment for (int i = 0; i < buttonIds.length; i++) { dialpadKey = (DialpadKeyButton) fragmentView.findViewById(buttonIds[i]); - dialpadKey.setLayoutParams(new TableRow.LayoutParams( - TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.MATCH_PARENT)); dialpadKey.setOnPressedListener(this); numberView = (TextView) dialpadKey.findViewById(R.id.dialpad_key_number); lettersView = (TextView) dialpadKey.findViewById(R.id.dialpad_key_letters); @@ -637,6 +642,13 @@ public class DialpadFragment extends Fragment zero.setLongHoverContentDescription( resources.getText(R.string.description_image_button_plus)); + mAddContactButton = fragmentView.findViewById(R.id.dialpad_add_contact); + mAddContactButton.setOnClickListener(this); + + mOverflowMenuButton = fragmentView.findViewById(R.id.dialpad_overflow); + mOverflowMenuButton.setOnClickListener(this); + final PopupMenu overflowMenu = buildOptionsMenu(mOverflowMenuButton); + mOverflowMenuButton.setOnTouchListener(overflowMenu.getDragToOpenListener()); } @Override @@ -768,22 +780,6 @@ public class DialpadFragment extends Fragment outState.putBoolean(PREF_DIGITS_FILLED_BY_INTENT, mDigitsFilledByIntent); } - private void setupMenuItems(Menu menu) { - final MenuItem addToContactMenuItem = menu.findItem(R.id.menu_add_contacts); - - // We show "add to contacts" menu only when the user is - // seeing usual dialpad and has typed at least one digit. - // We never show a menu if the "choose dialpad" UI is up. - if (dialpadChooserVisible() || isDigitsEmpty()) { - addToContactMenuItem.setVisible(false); - } else { - final CharSequence digits = mDigits.getText(); - // Put the current digits string into an intent - addToContactMenuItem.setIntent(DialtactsActivity.getAddNumberToContactIntent(digits)); - addToContactMenuItem.setVisible(true); - } - } - private void keyPressed(int keyCode) { if (getView().getTranslationY() != 0) { return; @@ -937,7 +933,6 @@ public class DialpadFragment extends Fragment final PopupMenu popupMenu = new PopupMenu(getActivity(), invoker); popupMenu.inflate(R.menu.dialpad_options); popupMenu.setOnMenuItemClickListener(this); - setupMenuItems(popupMenu.getMenu()); return popupMenu; } @@ -963,6 +958,16 @@ public class DialpadFragment extends Fragment } return; } + case R.id.dialpad_add_contact: { + final CharSequence digits = mDigits.getText(); + DialerUtils.startActivityWithErrorToast(getActivity(), + DialtactsActivity.getAddNumberToContactIntent(digits)); + return; + } + case R.id.dialpad_overflow: { + buildOptionsMenu(view).show(); + break; + } default: { Log.wtf(TAG, "Unexpected onClick() event from: " + view); return; -- cgit v1.2.3