New appearance and look and feel for dialpad.
http://b/13189041
Change-Id: I91028c8fdee31c1f76610573a4396eb979c30170
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index 5989e52..4542137 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -28,7 +28,6 @@
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
-import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.RemoteException;
@@ -40,11 +39,8 @@
import android.speech.RecognizerIntent;
import android.telephony.TelephonyManager;
import android.text.Editable;
-import android.text.Spannable;
-import android.text.SpannableStringBuilder;
import android.text.TextUtils;
import android.text.TextWatcher;
-import android.text.style.ImageSpan;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
@@ -88,13 +84,13 @@
public class DialtactsActivity extends TransactionSafeActivity implements View.OnClickListener,
DialpadFragment.OnDialpadQueryChangedListener, PopupMenu.OnMenuItemClickListener,
OnListFragmentScrolledListener,
- DialpadFragment.OnDialpadFragmentStartedListener,
+ DialpadFragment.HostInterface,
PhoneFavoriteFragment.OnShowAllContactsListener,
PhoneFavoriteFragment.HostInterface,
- OnDragDropListener {
+ OnDragDropListener, View.OnLongClickListener {
private static final String TAG = "DialtactsActivity";
- public static final boolean DEBUG = false;
+ public static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
public static final String SHARED_PREFS_NAME = "com.android.dialer_preferences";
@@ -121,8 +117,6 @@
*/
private static final String ACTION_TOUCH_DIALER = "com.android.phone.action.TOUCH_DIALER";
- private static final int SUBACTIVITY_ACCOUNT_FILTER = 1;
-
private static final int ACTIVITY_REQUEST_CODE_VOICE_SEARCH = 1;
private static final int FADE_ANIMATION_DURATION = 200;
@@ -150,14 +144,14 @@
private SmartDialSearchFragment mSmartDialSearchFragment;
private View mMenuButton;
+ private View mFakeActionBar;
private View mCallHistoryButton;
private View mDialpadButton;
+ private View mDialButton;
private PopupMenu mOverflowMenu;
// Padding view used to shift the fragments up when the dialpad is shown.
- private View mBottomPaddingView;
private View mFragmentsFrame;
- private View mActionBar;
private boolean mInDialpadSearch;
private boolean mInRegularSearch;
@@ -302,12 +296,10 @@
// Add the favorites fragment, and the dialpad fragment, but only if savedInstanceState
// is null. Otherwise the fragment manager takes care of recreating these fragments.
if (savedInstanceState == null) {
- final PhoneFavoriteFragment phoneFavoriteFragment = new PhoneFavoriteFragment();
-
- final FragmentTransaction ft = getFragmentManager().beginTransaction();
- ft.add(R.id.dialtacts_frame, phoneFavoriteFragment, TAG_FAVORITES_FRAGMENT);
- ft.add(R.id.dialtacts_container, new DialpadFragment(), TAG_DIALPAD_FRAGMENT);
- ft.commit();
+ getFragmentManager().beginTransaction()
+ .add(R.id.dialtacts_frame, new PhoneFavoriteFragment(), TAG_FAVORITES_FRAGMENT)
+ .add(R.id.dialtacts_container, new DialpadFragment(), TAG_DIALPAD_FRAGMENT)
+ .commit();
} else {
mSearchQuery = savedInstanceState.getString(KEY_SEARCH_QUERY);
mInRegularSearch = savedInstanceState.getBoolean(KEY_IN_REGULAR_SEARCH_UI);
@@ -315,9 +307,8 @@
mFirstLaunch = savedInstanceState.getBoolean(KEY_FIRST_LAUNCH);
}
- mBottomPaddingView = findViewById(R.id.dialtacts_bottom_padding);
mFragmentsFrame = findViewById(R.id.dialtacts_frame);
- mActionBar = findViewById(R.id.fake_action_bar);
+
mRemoveViewContainer = (RemoveView) findViewById(R.id.remove_view_container);
prepareSearchView();
@@ -326,6 +317,7 @@
setupFilterText(intent);
}
+ hideDialpadFragment(false, false);
setupFakeActionBarItems();
mDialerDatabaseHelper = DatabaseHelperManager.getDatabaseHelper(this);
@@ -432,7 +424,11 @@
public void onClick(View view) {
switch (view.getId()) {
case R.id.overflow_menu: {
- mOverflowMenu.show();
+ if (isDialpadShowing()) {
+ mDialpadFragment.optionsMenuInvoked(view);
+ } else {
+ mOverflowMenu.show();
+ }
break;
}
case R.id.dialpad_button:
@@ -443,7 +439,10 @@
mInCallDialpadUp = false;
showDialpadFragment(true);
break;
- case R.id.call_history_on_dialpad_button:
+ case R.id.dial_button:
+ // Dial button was pressed; tell the Dialpad fragment
+ mDialpadFragment.dialButtonPressed();
+ break;
case R.id.call_history_button:
// Use explicit CallLogActivity intent instead of ACTION_VIEW +
// CONTENT_TYPE, so that we always open our call log from our dialer
@@ -474,6 +473,22 @@
}
@Override
+ public boolean onLongClick(View view) {
+ switch (view.getId()) {
+ case R.id.dial_button: {
+ // Dial button was pressed; tell the Dialpad fragment
+ mDialpadFragment.dialButtonPressed();
+ return true; // Consume the event
+ }
+ default: {
+ Log.wtf(TAG, "Unexpected onClick event from " + view);
+ break;
+ }
+ }
+ return false;
+ }
+
+ @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == ACTIVITY_REQUEST_CODE_VOICE_SEARCH) {
if (resultCode == RESULT_OK) {
@@ -502,6 +517,8 @@
}
ft.show(mDialpadFragment);
ft.commit();
+ mDialButton.setVisibility(shouldShowOnscreenDialButton() ? View.VISIBLE : View.GONE);
+ mDialpadButton.setVisibility(View.GONE);
}
public void hideDialpadFragment(boolean animate, boolean clearDialpad) {
@@ -517,6 +534,8 @@
}
ft.hide(mDialpadFragment);
ft.commit();
+ mDialButton.setVisibility(View.GONE);
+ mDialpadButton.setVisibility(View.VISIBLE);
}
private void prepareSearchView() {
@@ -580,14 +599,11 @@
new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
- mBottomPaddingView.setVisibility(View.VISIBLE);
mFragmentsFrame.setTranslationY(0);
- mActionBar.setVisibility(View.INVISIBLE);
}
});
} else {
mSearchViewContainer.setTranslationY(-mSearchView.getHeight());
- mActionBar.setVisibility(View.INVISIBLE);
}
}
@@ -600,7 +616,6 @@
@Override
public void onAnimationStart(Animator animation) {
mSearchViewContainer.setVisibility(View.VISIBLE);
- mActionBar.setVisibility(View.VISIBLE);
}
});
@@ -610,7 +625,6 @@
new AnimatorListenerAdapter() {
@Override
public void onAnimationStart(Animator animation) {
- mBottomPaddingView.setVisibility(View.GONE);
}
});
}
@@ -628,20 +642,21 @@
mMenuButton.setOnTouchListener(mOverflowMenu.getDragToOpenListener());
}
+ mFakeActionBar = findViewById(R.id.fake_action_bar);
+
mCallHistoryButton = findViewById(R.id.call_history_button);
// mCallHistoryButton.setMinimumWidth(fakeMenuItemWidth);
mCallHistoryButton.setOnClickListener(this);
+ mDialButton = findViewById(R.id.dial_button);
+ mDialButton.setOnClickListener(this);
+ mDialButton.setOnLongClickListener(this);
+
mDialpadButton = findViewById(R.id.dialpad_button);
// DialpadButton.setMinimumWidth(fakeMenuItemWidth);
mDialpadButton.setOnClickListener(this);
}
- public void setupFakeActionBarItemsForDialpadFragment() {
- final View callhistoryButton = findViewById(R.id.call_history_on_dialpad_button);
- callhistoryButton.setOnClickListener(this);
- }
-
private void fixIntent(Intent intent) {
// This should be cleaned up: the call key used to send an Intent
// that just said to go to the recent calls list. It now sends this
@@ -937,8 +952,13 @@
}
@Override
- public void onDialpadFragmentStarted() {
- setupFakeActionBarItemsForDialpadFragment();
+ public void setDialButtonEnabled(boolean enabled) {
+ mDialButton.setEnabled(enabled);
+ }
+
+ @Override
+ public void setDialButtonContainerVisible(boolean visible) {
+ mFakeActionBar.setVisibility(visible ? View.VISIBLE : View.GONE);
}
private boolean phoneIsInUse() {
@@ -960,12 +980,6 @@
return intent;
}
- public static Intent getInsertContactWithNameIntent(CharSequence text) {
- final Intent intent = new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI);
- intent.putExtra(Intents.Insert.NAME, text);
- return intent;
- }
-
private boolean canIntentBeHandled(Intent intent) {
final PackageManager packageManager = getPackageManager();
final List<ResolveInfo> resolveInfo = packageManager.queryIntentActivities(intent,
@@ -1016,4 +1030,8 @@
fadeIn.animate().alpha(1).setDuration(FADE_ANIMATION_DURATION)
.setListener(null);
}
+
+ private boolean shouldShowOnscreenDialButton() {
+ return getResources().getBoolean(R.bool.config_show_onscreen_dial_button);
+ }
}