summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/voicemail/listui/NewVoicemailFragment.java
diff options
context:
space:
mode:
authoruabdullah <uabdullah@google.com>2018-02-28 15:54:50 -0800
committerCopybara-Service <copybara-piper@google.com>2018-02-28 17:11:29 -0800
commit210452f13a70de30a46c4ee2aa41668f840dfefd (patch)
tree593cb33e3260fdc0da1d356c5c2df847279121db /java/com/android/dialer/voicemail/listui/NewVoicemailFragment.java
parent360c751fe5f6e75d45dfbe05facf225bfe5d2eca (diff)
Show empty view when there are no voicemails
When there are no voicemails to be shown, we show an empty view. This is done by hiding the recycler view and showing the empty view. Similarly when a voicemail is present, we hide the empty view and then show the recycler view. Bug: 25661977 Test: Unit Tests PiperOrigin-RevId: 187396952 Change-Id: Ifa718fb05c1be37aabdf4c91bc2c1653357565b2
Diffstat (limited to 'java/com/android/dialer/voicemail/listui/NewVoicemailFragment.java')
-rw-r--r--java/com/android/dialer/voicemail/listui/NewVoicemailFragment.java40
1 files changed, 36 insertions, 4 deletions
diff --git a/java/com/android/dialer/voicemail/listui/NewVoicemailFragment.java b/java/com/android/dialer/voicemail/listui/NewVoicemailFragment.java
index 9296d04e7..6d71dade9 100644
--- a/java/com/android/dialer/voicemail/listui/NewVoicemailFragment.java
+++ b/java/com/android/dialer/voicemail/listui/NewVoicemailFragment.java
@@ -30,6 +30,7 @@ import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.FrameLayout;
import com.android.dialer.calllog.CallLogComponent;
import com.android.dialer.calllog.RefreshAnnotatedCallLogReceiver;
import com.android.dialer.common.LogUtil;
@@ -38,6 +39,7 @@ import com.android.dialer.common.concurrent.UiListener;
import com.android.dialer.glidephotomanager.GlidePhotoManagerComponent;
import com.android.dialer.voicemail.listui.error.VoicemailStatus;
import com.android.dialer.voicemailstatus.VoicemailStatusQuery;
+import com.android.dialer.widget.EmptyContentView;
import com.android.voicemail.VoicemailComponent;
import com.google.common.collect.ImmutableList;
import com.google.common.util.concurrent.ListenableFuture;
@@ -52,6 +54,11 @@ public final class NewVoicemailFragment extends Fragment implements LoaderCallba
private RefreshAnnotatedCallLogReceiver refreshAnnotatedCallLogReceiver;
private UiListener<ImmutableList<VoicemailStatus>> queryVoicemailStatusTableListener;
+ // View required to show/hide recycler and empty views
+ FrameLayout fragmentRootFrameLayout;
+
+ private EmptyContentView emptyContentView;
+
public NewVoicemailFragment() {
LogUtil.enterBlock("NewVoicemailFragment.NewVoicemailFragment");
}
@@ -147,10 +154,14 @@ public final class NewVoicemailFragment extends Fragment implements LoaderCallba
public View onCreateView(
LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
LogUtil.enterBlock("NewVoicemailFragment.onCreateView");
- View view = inflater.inflate(R.layout.new_voicemail_call_log_fragment, container, false);
- recyclerView = view.findViewById(R.id.new_voicemail_call_log_recycler_view);
+
+ fragmentRootFrameLayout =
+ (FrameLayout) inflater.inflate(R.layout.new_voicemail_call_log_fragment, container, false);
+ recyclerView = fragmentRootFrameLayout.findViewById(R.id.new_voicemail_call_log_recycler_view);
+
+ emptyContentView = fragmentRootFrameLayout.findViewById(R.id.empty_content_view);
getLoaderManager().restartLoader(0, null, this);
- return view;
+ return fragmentRootFrameLayout;
}
@Override
@@ -162,6 +173,12 @@ public final class NewVoicemailFragment extends Fragment implements LoaderCallba
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
LogUtil.i("NewVoicemailFragment.onLoadFinished", "cursor size is %d", data.getCount());
+ if (data.getCount() == 0) {
+ showEmptyVoicemailFragmentView();
+ return;
+ }
+ showView(recyclerView);
+
if (recyclerView.getAdapter() == null) {
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
// TODO(uabdullah): Replace getActivity().getFragmentManager() with getChildFragment()
@@ -182,9 +199,24 @@ public final class NewVoicemailFragment extends Fragment implements LoaderCallba
recyclerView.getAdapter());
((NewVoicemailAdapter) recyclerView.getAdapter()).updateCursor(data);
((NewVoicemailAdapter) recyclerView.getAdapter()).checkAndPlayVoicemail();
+ queryAndUpdateVoicemailStatusAlert();
}
+ }
+
+ /** Shows the view when there are no voicemails to be displayed * */
+ private void showEmptyVoicemailFragmentView() {
+ LogUtil.enterBlock("NewVoicemailFragmentListener.showEmptyVoicemailFragmentView");
+
+ showView(emptyContentView);
+
+ emptyContentView.setDescription((R.string.empty_voicemail_tab_text));
+ emptyContentView.setImage(R.drawable.quantum_ic_schedule_vd_theme_24);
+ }
- queryAndUpdateVoicemailStatusAlert();
+ private void showView(View view) {
+ LogUtil.i("NewVoicemailFragmentListener.showView", "Showing view: " + view);
+ emptyContentView.setVisibility(view == emptyContentView ? View.VISIBLE : View.GONE);
+ recyclerView.setVisibility(view == recyclerView ? View.VISIBLE : View.GONE);
}
private void registerRefreshAnnotatedCallLogReceiver() {