From 264c566a7f7d829de48131ac6d811b3db6f520bc Mon Sep 17 00:00:00 2001 From: Svetoslav Ganov Date: Sat, 5 Oct 2013 12:58:17 -0700 Subject: [PATCH] Update the empty state for the "all printers activity" The empty state is now showing searching for printers hint if the user is not searching, otherwise the empty state's hint is a searching for printers message. bug:10983508 Change-Id: I3df79c167546998c8055d9ff85efa8b460a15e48 --- .../res/layout/select_printer_activity.xml | 2 ++ packages/PrintSpooler/res/values/strings.xml | 5 ++- .../printspooler/SelectPrinterFragment.java | 35 ++++++++++++++++++- 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/packages/PrintSpooler/res/layout/select_printer_activity.xml b/packages/PrintSpooler/res/layout/select_printer_activity.xml index 2792dcf17605d..6fc77df16f28f 100644 --- a/packages/PrintSpooler/res/layout/select_printer_activity.xml +++ b/packages/PrintSpooler/res/layout/select_printer_activity.xml @@ -48,6 +48,7 @@ Choose print service - + Searching for printers + + No printers found + diff --git a/packages/PrintSpooler/src/com/android/printspooler/SelectPrinterFragment.java b/packages/PrintSpooler/src/com/android/printspooler/SelectPrinterFragment.java index 0f2961444d2a4..4ce7d05e52537 100644 --- a/packages/PrintSpooler/src/com/android/printspooler/SelectPrinterFragment.java +++ b/packages/PrintSpooler/src/com/android/printspooler/SelectPrinterFragment.java @@ -36,6 +36,7 @@ import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.ResolveInfo; import android.content.pm.ServiceInfo; +import android.database.DataSetObserver; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; @@ -94,7 +95,21 @@ public final class SelectPrinterFragment extends ListFragment { @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - setListAdapter(new DestinationAdapter()); + final DestinationAdapter adapter = new DestinationAdapter(); + adapter.registerDataSetObserver(new DataSetObserver() { + @Override + public void onChanged() { + if (adapter.getCount() <= 0) { + updateEmptyView(adapter); + } + } + + @Override + public void onInvalidated() { + updateEmptyView(adapter); + } + }); + setListAdapter(adapter); View emptyView = getActivity().findViewById(R.id.empty_print_state); getListView().setEmptyView(emptyView); } @@ -214,6 +229,18 @@ public final class SelectPrinterFragment extends ListFragment { transaction.commit(); } + public void updateEmptyView(DestinationAdapter adapter) { + TextView titleView = (TextView) getActivity().findViewById(R.id.title); + View progressBar = getActivity().findViewById(R.id.progress_bar); + if (adapter.getUnfilteredCount() <= 0) { + titleView.setText(R.string.print_searching_for_printers); + progressBar.setVisibility(View.VISIBLE); + } else { + titleView.setText(R.string.print_no_printers); + progressBar.setVisibility(View.GONE); + } + } + public static class AddPrinterAlertDialogFragment extends DialogFragment { private String mAddPrintServiceItem; @@ -339,6 +366,12 @@ public final class SelectPrinterFragment extends ListFragment { }; } + public int getUnfilteredCount() { + synchronized (mLock) { + return mPrinters.size(); + } + } + @Override public int getCount() { synchronized (mLock) {