Show appropriate empty state if not printers are found.
One can search for printers in the print service settings
and we need to show appropriate empty state if none is found.
bug:11009053
Change-Id: If3ed6aa3a5e2eb4d7f7bae37f885e4b8eb0909b4
diff --git a/res/layout/empty_print_state.xml b/res/layout/empty_print_state.xml
index 135b3dd..e97bb85 100644
--- a/res/layout/empty_print_state.xml
+++ b/res/layout/empty_print_state.xml
@@ -15,7 +15,7 @@
-->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/empty_printers_list_service_disabled"
+ android:id="@+id/empty_print_state"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:visibility="gone">
@@ -28,11 +28,12 @@
android:orientation="vertical">
<ImageView
+ android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="12dip"
android:src="@drawable/ic_grayedout_printer"
- android:contentDescription="@string/print_service_disabled">
+ android:contentDescription="@null">
</ImageView>
<TextView
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 3c45bbc..e82354d 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -3430,6 +3430,9 @@
<!-- Title for the prompt shown as a placeholder if no print serivices are installed. [CHAR LIMIT=50] -->
<string name="print_no_services_installed">No services installed</string>
+ <!-- Title for the prompt shown as a placeholder if no printers are found while searching. [CHAR LIMIT=50] -->
+ <string name="print_no_printers_found">No printers found</string>
+
<!-- Title for print menu item to launch a settings activity. [CHAR LIMIT=25] -->
<string name="print_menu_item_settings">Settings</string>
diff --git a/src/com/android/settings/print/PrintServiceSettingsFragment.java b/src/com/android/settings/print/PrintServiceSettingsFragment.java
index 9db2dec..044d86e 100644
--- a/src/com/android/settings/print/PrintServiceSettingsFragment.java
+++ b/src/com/android/settings/print/PrintServiceSettingsFragment.java
@@ -95,6 +95,7 @@
@Override
public void onChanged() {
invalidateOptionsMenuIfNeeded();
+ updateEmptyView();
}
@Override
@@ -227,14 +228,15 @@
ViewGroup contentRoot = (ViewGroup) listView.getParent();
View emptyView = listView.getEmptyView();
if (!mToggleSwitch.isChecked()) {
- if (emptyView != null
- && emptyView.getId() != R.id.empty_printers_list_service_disabled) {
+ if (emptyView != null && emptyView.getId() != R.id.empty_print_state) {
contentRoot.removeView(emptyView);
emptyView = null;
}
if (emptyView == null) {
emptyView = getActivity().getLayoutInflater().inflate(
R.layout.empty_print_state, contentRoot, false);
+ ImageView iconView = (ImageView) emptyView.findViewById(R.id.icon);
+ iconView.setContentDescription(getString(R.string.print_service_disabled));
TextView textView = (TextView) emptyView.findViewById(R.id.message);
textView.setText(R.string.print_service_disabled);
contentRoot.addView(emptyView);
@@ -252,6 +254,21 @@
contentRoot.addView(emptyView);
listView.setEmptyView(emptyView);
}
+ } else if (mPrintersAdapter.getCount() <= 0) {
+ if (emptyView != null && emptyView.getId() != R.id.empty_print_state) {
+ contentRoot.removeView(emptyView);
+ emptyView = null;
+ }
+ if (emptyView == null) {
+ emptyView = getActivity().getLayoutInflater().inflate(
+ R.layout.empty_print_state, contentRoot, false);
+ ImageView iconView = (ImageView) emptyView.findViewById(R.id.icon);
+ iconView.setContentDescription(getString(R.string.print_no_printers_found));
+ TextView textView = (TextView) emptyView.findViewById(R.id.message);
+ textView.setText(R.string.print_no_printers_found);
+ contentRoot.addView(emptyView);
+ listView.setEmptyView(emptyView);
+ }
}
}