Adds all contacts fragment.
Change-Id: Iea03cbb82c9ca9fdff51686a722bea5d301add44
diff --git a/src/com/android/dialer/NewDialtactsActivity.java b/src/com/android/dialer/NewDialtactsActivity.java
index 95d9ea7..7ac1b6e 100644
--- a/src/com/android/dialer/NewDialtactsActivity.java
+++ b/src/com/android/dialer/NewDialtactsActivity.java
@@ -39,6 +39,7 @@
import android.provider.ContactsContract.Intents.UI;
import android.provider.Settings;
import android.speech.RecognizerIntent;
+import android.support.v4.app.NavUtils;
import android.telephony.TelephonyManager;
import android.text.Editable;
import android.text.TextUtils;
@@ -72,6 +73,7 @@
import com.android.dialer.interactions.PhoneNumberInteraction;
import com.android.dialer.list.NewPhoneFavoriteFragment;
import com.android.dialer.list.OnListFragmentScrolledListener;
+import com.android.dialer.list.ShowAllContactsFragment;
import com.android.dialer.list.SmartDialSearchFragment;
import com.android.internal.telephony.ITelephony;
@@ -96,7 +98,6 @@
private static final String PHONE_PACKAGE = "com.android.phone";
private static final String CALL_SETTINGS_CLASS_NAME =
"com.android.phone.CallFeaturesSetting";
-
/** @see #getCallOrigin() */
private static final String CALL_ORIGIN_DIALTACTS =
"com.android.dialer.DialtactsActivity";
@@ -105,6 +106,7 @@
private static final String TAG_REGULAR_SEARCH_FRAGMENT = "search";
private static final String TAG_SMARTDIAL_SEARCH_FRAGMENT = "smartdial";
private static final String TAG_FAVORITES_FRAGMENT = "favorites";
+ private static final String TAG_SHOW_ALL_CONTACTS_FRAGMENT = "show_all_contacts";
/**
* Just for backward compatibility. Should behave as same as {@link Intent#ACTION_DIAL}.
@@ -137,6 +139,8 @@
*/
private SmartDialSearchFragment mSmartDialSearchFragment;
+ private ShowAllContactsFragment mShowAllContactsFragment;
+
private View mMenuButton;
private View mCallHistoryButton;
private View mDialpadButton;
@@ -237,20 +241,22 @@
if (savedInstanceState == null) {
mPhoneFavoriteFragment = new NewPhoneFavoriteFragment();
- mPhoneFavoriteFragment.setRetainInstance(true);
mPhoneFavoriteFragment.setListener(mPhoneFavoriteListener);
mRegularSearchFragment = new NewSearchFragment();
mSmartDialSearchFragment = new SmartDialSearchFragment();
mDialpadFragment = new NewDialpadFragment();
+ mShowAllContactsFragment = new ShowAllContactsFragment();
+ mShowAllContactsFragment.setOnPhoneNumberPickerActionListener(
+ mPhoneNumberPickerActionListener);
// TODO krelease: load fragments on demand instead of creating all of them at run time
final FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.add(R.id.dialtacts_frame, mPhoneFavoriteFragment, TAG_FAVORITES_FRAGMENT);
ft.add(R.id.dialtacts_frame, mRegularSearchFragment, TAG_REGULAR_SEARCH_FRAGMENT);
ft.add(R.id.dialtacts_frame, mSmartDialSearchFragment, TAG_SMARTDIAL_SEARCH_FRAGMENT);
+ ft.add(R.id.dialtacts_frame, mShowAllContactsFragment, TAG_SHOW_ALL_CONTACTS_FRAGMENT);
ft.add(R.id.dialtacts_container, mDialpadFragment, TAG_DIALPAD_FRAGMENT);
- // Fragments will be hidden as necessary in onAttachFragment
ft.commit();
}
@@ -282,12 +288,18 @@
TAG_SMARTDIAL_SEARCH_FRAGMENT);
mSmartDialSearchFragment.setOnPhoneNumberPickerActionListener(
mPhoneNumberPickerActionListener);
+
+ mShowAllContactsFragment = (ShowAllContactsFragment) fm.findFragmentByTag(
+ TAG_SHOW_ALL_CONTACTS_FRAGMENT);
+ mShowAllContactsFragment.setOnPhoneNumberPickerActionListener(
+ mPhoneNumberPickerActionListener);
}
@Override
public void onAttachFragment(Fragment fragment) {
if (fragment instanceof NewDialpadFragment || fragment instanceof NewSearchFragment
- || fragment instanceof SmartDialSearchFragment) {
+ || fragment instanceof SmartDialSearchFragment
+ || fragment instanceof ShowAllContactsFragment) {
final FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.hide(fragment);
transaction.commit();
@@ -297,6 +309,16 @@
}
@Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ // Respond to the action bar's Up/Home button
+ case android.R.id.home:
+ hideAllContactsFragment();
+ }
+ return super.onOptionsItemSelected(item);
+ }
+
+ @Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_import_export:
@@ -314,7 +336,8 @@
try {
startActivity(new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI));
} catch (ActivityNotFoundException e) {
- Toast toast = Toast.makeText(this, R.string.add_contact_not_available,
+ Toast toast = Toast.makeText(this,
+ R.string.add_contact_not_available,
Toast.LENGTH_SHORT);
toast.show();
}
@@ -402,6 +425,23 @@
ft.commit();
}
+ public void showAllContactsFragment() {
+ final FragmentTransaction ft = getFragmentManager().beginTransaction();
+ ft.hide(mPhoneFavoriteFragment);
+ ft.show(mShowAllContactsFragment);
+ // TODO{klp} Add animation
+ ft.commit();
+ hideSearchBar(false);
+ }
+
+ private void hideAllContactsFragment() {
+ final FragmentTransaction ft = getFragmentManager().beginTransaction();
+ ft.hide(mShowAllContactsFragment);
+ ft.show(mPhoneFavoriteFragment);
+ ft.commit();
+ showSearchBar();
+ }
+
private void prepareSearchView() {
mSearchViewContainer = findViewById(R.id.search_view_container);
mSearchViewCloseButton = findViewById(R.id.search_close_button);
@@ -435,26 +475,29 @@
};
public void hideSearchBar() {
- // If the favorites fragment hasn't been fully created before the dialpad fragment
- // is hidden (i.e. onResume), don't bother animating
- if (mPhoneFavoriteFragment == null || mPhoneFavoriteFragment.getView() == null) {
- return;
- }
- mSearchViewContainer.animate().cancel();
- mSearchViewContainer.setAlpha(1);
- mSearchViewContainer.setTranslationY(0);
- mSearchViewContainer.animate().withLayer().alpha(0).translationY(-mSearchView.getHeight())
- .setDuration(200).setListener(mHideListener);
+ hideSearchBar(true);
+ }
- mPhoneFavoriteFragment.getView().animate().withLayer()
- .translationY(-mSearchViewContainer.getHeight()).setDuration(200).setListener(
+ public void hideSearchBar(boolean shiftView) {
+ if (shiftView) {
+ mSearchViewContainer.animate().cancel();
+ mSearchViewContainer.setAlpha(1);
+ mSearchViewContainer.setTranslationY(0);
+ mSearchViewContainer.animate().withLayer().alpha(0).translationY(-mSearchView.getHeight())
+ .setDuration(200).setListener(mHideListener);
+
+ mPhoneFavoriteFragment.getView().animate().withLayer()
+ .translationY(-mSearchViewContainer.getHeight()).setDuration(200).setListener(
new AnimatorListenerAdapter() {
- @Override
+ @Override
public void onAnimationEnd(Animator animation) {
mBottomPaddingView.setVisibility(View.VISIBLE);
mPhoneFavoriteFragment.getView().setTranslationY(0);
}
});
+ } else {
+ mSearchViewContainer.setTranslationY(-mSearchView.getHeight());
+ }
}
public void showSearchBar() {
@@ -468,20 +511,20 @@
mSearchViewContainer.setTranslationY(-mSearchViewContainer.getHeight());
mSearchViewContainer.animate().withLayer().alpha(1).translationY(0).setDuration(200)
.setListener(new AnimatorListenerAdapter() {
- @Override
- public void onAnimationStart(Animator animation) {
+ @Override
+ public void onAnimationStart(Animator animation) {
mSearchViewContainer.setVisibility(View.VISIBLE);
- }
+ }
});
mPhoneFavoriteFragment.getView().setTranslationY(-mSearchViewContainer.getHeight());
mPhoneFavoriteFragment.getView().animate().withLayer().translationY(0).setDuration(200)
.setListener(
new AnimatorListenerAdapter() {
- @Override
- public void onAnimationStart(Animator animation) {
- mBottomPaddingView.setVisibility(View.GONE);
- }
+ @Override
+ public void onAnimationStart(Animator animation) {
+ mBottomPaddingView.setVisibility(View.GONE);
+ }
});
}
@@ -745,6 +788,8 @@
hideDialpadFragment(true);
} else if (mInSearchUi) {
mSearchView.setText(null);
+ } else if (mShowAllContactsFragment.isVisible()) {
+ hideAllContactsFragment();
} else if (isTaskRoot()) {
// Instead of stopping, simply push this to the back of the stack.
// This is only done when running at the top of the stack;