diff options
Diffstat (limited to 'java')
4 files changed, 61 insertions, 12 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() { diff --git a/java/com/android/dialer/voicemail/listui/res/layout/new_voicemail_call_log_fragment.xml b/java/com/android/dialer/voicemail/listui/res/layout/new_voicemail_call_log_fragment.xml index 9daa3e114..fd9e0f2d2 100644 --- a/java/com/android/dialer/voicemail/listui/res/layout/new_voicemail_call_log_fragment.xml +++ b/java/com/android/dialer/voicemail/listui/res/layout/new_voicemail_call_log_fragment.xml @@ -15,21 +15,35 @@ ~ limitations under the License --> - <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/fragment_my_frame_layout" - android:layout_width="wrap_content" - android:layout_height="wrap_content" + android:id="@+id/new_voicemail_frame_layout" + android:layout_width="match_parent" + android:layout_height="match_parent" android:orientation="vertical"> - <include layout="@layout/voicemail_tos_fragment"/> <android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/new_voicemail_call_log_recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@color/background_dialer_light" android:paddingBottom="@dimen/floating_action_button_list_bottom_padding" - android:clipToPadding="false"/> + android:background="@color/background_dialer_light" + android:clipToPadding="false" + android:visibility="gone" + /> + + + <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <com.android.dialer.widget.EmptyContentView + android:id="@+id/empty_content_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:visibility="gone"/> + + </FrameLayout> </FrameLayout> diff --git a/java/com/android/dialer/voicemail/listui/res/values/strings.xml b/java/com/android/dialer/voicemail/listui/res/values/strings.xml index db33c1909..d12a71ee6 100644 --- a/java/com/android/dialer/voicemail/listui/res/values/strings.xml +++ b/java/com/android/dialer/voicemail/listui/res/values/strings.xml @@ -57,4 +57,7 @@ If you do not accept all of these terms and conditions, do not use Visual Voice <!-- Label indicating who provided the voicemail transcription [CHAR LIMIT=64] --> <string name="voicemail_transcription_branding_text">Transcribed by Google</string> + <!-- Text displayed when the list of voicemails is empty [CHAR LIMIT=NONE] --> + <string name="empty_voicemail_tab_text">Your voicemail inbox is empty.</string> + </resources> diff --git a/java/com/android/dialer/widget/res/layout/empty_content_view.xml b/java/com/android/dialer/widget/res/layout/empty_content_view.xml index 177744385..9aac6f48f 100644 --- a/java/com/android/dialer/widget/res/layout/empty_content_view.xml +++ b/java/com/android/dialer/widget/res/layout/empty_content_view.xml @@ -18,7 +18,7 @@ <ImageView android:id="@+id/empty_list_view_image" android:layout_width="match_parent" - android:layout_height="wrap_content" + android:layout_height="108dp" android:gravity="center_horizontal"/> <TextView |