am 9470cd95: Merge "Polish print dialog accessibility." into klp-dev

* commit '9470cd95dcf691eec33839065948bd32aab06fc6':
  Polish print dialog accessibility.
This commit is contained in:
Svetoslav Ganov
2013-10-06 18:29:32 -07:00
committed by Android Git Automerger
4 changed files with 75 additions and 2 deletions

View File

@@ -21,14 +21,14 @@
android:title="@string/search" android:title="@string/search"
android:icon="@*android:drawable/ic_menu_search_holo_light" android:icon="@*android:drawable/ic_menu_search_holo_light"
android:actionViewClass="android.widget.SearchView" android:actionViewClass="android.widget.SearchView"
android:showAsAction="ifRoom" android:showAsAction="ifRoom|collapseActionView"
android:alphabeticShortcut="f" android:alphabeticShortcut="f"
android:imeOptions="actionSearch"> android:imeOptions="actionSearch">
</item> </item>
<item <item
android:id="@+id/action_add_printer" android:id="@+id/action_add_printer"
android:title="@null" android:title="@string/print_add_printer"
android:icon="@*android:drawable/create_contact" android:icon="@*android:drawable/create_contact"
android:showAsAction="ifRoom" android:showAsAction="ifRoom"
android:alphabeticShortcut="a"> android:alphabeticShortcut="a">

View File

@@ -67,6 +67,9 @@
<!-- Title for the open all printers UI option in the printer list. [CHAR LIMIT=30] --> <!-- Title for the open all printers UI option in the printer list. [CHAR LIMIT=30] -->
<string name="all_printers">All printers&#8230;</string> <string name="all_printers">All printers&#8230;</string>
<!-- Title for the print dialog announced to the user for accessibility. Not shown in the UI. [CHAR LIMIT=none] -->
<string name="print_dialog">Print dialog</string>
<!-- Select printer activity --> <!-- Select printer activity -->
<!-- Title for the share action bar menu item. [CHAR LIMIT=20] --> <!-- Title for the share action bar menu item. [CHAR LIMIT=20] -->
@@ -78,6 +81,21 @@
<!-- Title of the button to install a print service. [CHAR LIMIT=25] --> <!-- Title of the button to install a print service. [CHAR LIMIT=25] -->
<string name="add_print_service_label">Add service</string> <string name="add_print_service_label">Add service</string>
<!-- Utterance to announce that the search box is shown. This is spoken to a blind user. [CHAR LIMIT=none] -->
<string name="print_search_box_shown_utterance">Search box shown</string>
<!-- Utterance to announce that the search box is hidden. This is spoken to a blind user. [CHAR LIMIT=none] -->
<string name="print_search_box_hidden_utterance">Search box hidden</string>
<!-- Title of the action bar button to got to add a printer. [CHAR LIMIT=25] -->
<string name="print_add_printer">Add printer</string>
<!-- Utterance to announce a change in the number of matches during a search. This is spoken to a blind user. [CHAR LIMIT=none] -->
<plurals name="print_search_result_count_utterance">
<item quantity="one"><xliff:g id="count" example="1">%1$s</xliff:g> printer found</item>
<item quantity="other"><xliff:g id="count" example="2">%1$s</xliff:g> printers found</item>
</plurals>
<!-- Add printer dialog --> <!-- Add printer dialog -->
<!-- Title for the alert dialog for selecting a print service. [CHAR LIMIT=50] --> <!-- Title for the alert dialog for selecting a print service. [CHAR LIMIT=50] -->

View File

@@ -178,6 +178,8 @@ public class PrintJobConfigActivity extends Activity {
protected void onCreate(Bundle bundle) { protected void onCreate(Bundle bundle) {
super.onCreate(bundle); super.onCreate(bundle);
setTitle(R.string.print_dialog);
Bundle extras = getIntent().getExtras(); Bundle extras = getIntent().getExtras();
PrintJobInfo printJob = extras.getParcelable(EXTRA_PRINT_JOB); PrintJobInfo printJob = extras.getParcelable(EXTRA_PRINT_JOB);

View File

@@ -82,6 +82,8 @@ public final class SelectPrinterFragment extends ListFragment {
private final ArrayList<PrintServiceInfo> mAddPrinterServices = private final ArrayList<PrintServiceInfo> mAddPrinterServices =
new ArrayList<PrintServiceInfo>(); new ArrayList<PrintServiceInfo>();
private AnnounceFilterResult mAnnounceFilterResult;
public static interface OnPrinterSelectedListener { public static interface OnPrinterSelectedListener {
public void onPrinterSelected(PrinterId printerId); public void onPrinterSelected(PrinterId printerId);
} }
@@ -133,6 +135,18 @@ public final class SelectPrinterFragment extends ListFragment {
return true; return true;
} }
}); });
searchView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
@Override
public void onViewAttachedToWindow(View view) {
view.announceForAccessibility(getString(
R.string.print_search_box_shown_utterance));
}
@Override
public void onViewDetachedFromWindow(View view) {
view.announceForAccessibility(getString(
R.string.print_search_box_hidden_utterance));
}
});
if (mAddPrinterServices.isEmpty()) { if (mAddPrinterServices.isEmpty()) {
menu.removeItem(R.id.action_add_printer); menu.removeItem(R.id.action_add_printer);
@@ -245,6 +259,13 @@ public final class SelectPrinterFragment extends ListFragment {
} }
} }
private void announceSearchResult() {
if (mAnnounceFilterResult == null) {
mAnnounceFilterResult = new AnnounceFilterResult();
}
mAnnounceFilterResult.post();
}
public static class AddPrinterAlertDialogFragment extends DialogFragment { public static class AddPrinterAlertDialogFragment extends DialogFragment {
private String mAddPrintServiceItem; private String mAddPrintServiceItem;
@@ -355,7 +376,9 @@ public final class SelectPrinterFragment extends ListFragment {
@Override @Override
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
protected void publishResults(CharSequence constraint, FilterResults results) { protected void publishResults(CharSequence constraint, FilterResults results) {
final boolean resultCountChanged;
synchronized (mLock) { synchronized (mLock) {
final int oldPrinterCount = mFilteredPrinters.size();
mLastSearchString = constraint; mLastSearchString = constraint;
mFilteredPrinters.clear(); mFilteredPrinters.clear();
if (results == null) { if (results == null) {
@@ -364,6 +387,10 @@ public final class SelectPrinterFragment extends ListFragment {
List<PrinterInfo> printers = (List<PrinterInfo>) results.values; List<PrinterInfo> printers = (List<PrinterInfo>) results.values;
mFilteredPrinters.addAll(printers); mFilteredPrinters.addAll(printers);
} }
resultCountChanged = (oldPrinterCount != mFilteredPrinters.size());
}
if (resultCountChanged) {
announceSearchResult();
} }
notifyDataSetChanged(); notifyDataSetChanged();
} }
@@ -480,4 +507,30 @@ public final class SelectPrinterFragment extends ListFragment {
notifyDataSetInvalidated(); notifyDataSetInvalidated();
} }
} }
private final class AnnounceFilterResult implements Runnable {
private static final int SEARCH_RESULT_ANNOUNCEMENT_DELAY = 1000; // 1 sec
public void post() {
remove();
getListView().postDelayed(this, SEARCH_RESULT_ANNOUNCEMENT_DELAY);
}
public void remove() {
getListView().removeCallbacks(this);
}
@Override
public void run() {
final int count = getListView().getAdapter().getCount();
final String text;
if (count <= 0) {
text = getString(R.string.print_no_printers);
} else {
text = getActivity().getResources().getQuantityString(
R.plurals.print_search_result_count_utterance, count, count);
}
getListView().announceForAccessibility(text);
}
}
} }