Show empty detail screen (on tablet) on nothing loaded
TESTED:
- People on Phone should work as we expect.
(this change shouldn't affect Phone experience at all)
- People on Tablet, landscape and portrait
-- nothing should be shown when no contact is selected
on boot
-- detail should be shown when a contact is selected
-- nothing should be shown when filter has changed and
no contact is selected
-- detail should be shown when filter has changed and
a contact is selected after that
-- orientation change should not cause any problem
Bug: 5084998
Change-Id: Ieed0b551655b7ee3b3872117eca50af90df30021
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 1c69ef9..1bab98d 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -1045,6 +1045,8 @@
@Override
public void onDetailsLoaded(final ContactLoader.Result result) {
if (result == null) {
+ // Nothing is loaded. Show empty state.
+ mContactDetailLayoutController.showEmptyState();
return;
}
// Since {@link FragmentTransaction}s cannot be done in the onLoadFinished() of the
diff --git a/src/com/android/contacts/detail/ContactDetailFragment.java b/src/com/android/contacts/detail/ContactDetailFragment.java
index 4d50a39..9a54013 100644
--- a/src/com/android/contacts/detail/ContactDetailFragment.java
+++ b/src/com/android/contacts/detail/ContactDetailFragment.java
@@ -371,6 +371,10 @@
mShowStaticPhoto = showPhoto;
}
+ public void showEmptyState() {
+ setData(null, null);
+ }
+
public void setData(Uri lookupUri, ContactLoader.Result result) {
mLookupUri = lookupUri;
mContactData = result;
@@ -393,6 +397,10 @@
if (mContactData == null) {
mView.setVisibility(View.INVISIBLE);
+ mAllEntries.clear();
+ if (mAdapter != null) {
+ mAdapter.notifyDataSetChanged();
+ }
return;
}
diff --git a/src/com/android/contacts/detail/ContactDetailLayoutController.java b/src/com/android/contacts/detail/ContactDetailLayoutController.java
index a10431b..ae62bdb 100644
--- a/src/com/android/contacts/detail/ContactDetailLayoutController.java
+++ b/src/com/android/contacts/detail/ContactDetailLayoutController.java
@@ -221,6 +221,33 @@
}
}
+ public void showEmptyState() {
+ switch (mLayoutMode) {
+ case FRAGMENT_CAROUSEL: {
+ mFragmentCarousel.enableSwipe(false);
+ mDetailFragment.showEmptyState();
+ break;
+ }
+ case TWO_COLUMN: {
+ mDetailFragment.setShowStaticPhoto(false);
+ mUpdatesFragmentView.setVisibility(View.GONE);
+ mDetailFragment.showEmptyState();
+ break;
+ }
+ case VIEW_PAGER_AND_TAB_CAROUSEL: {
+ mDetailFragment.setShowStaticPhoto(false);
+ mDetailFragment.showEmptyState();
+ mTabCarousel.loadData(null);
+ mTabCarousel.setVisibility(View.GONE);
+ mViewPagerAdapter.enableSwipe(false);
+ mViewPager.setCurrentItem(0);
+ break;
+ }
+ default:
+ throw new IllegalStateException("Invalid LayoutMode " + mLayoutMode);
+ }
+ }
+
/**
* Setup the layout for the contact with updates. Pass in the index of the current page to
* select or null if the current selection should be left as is.