diff options
author | Sam Blitzstein <sblitz@google.com> | 2013-05-06 13:56:02 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2013-05-06 13:56:02 -0700 |
commit | 9a00adf08a6c5c2d1c8ce23111ec8fc9ee37d330 (patch) | |
tree | 9c4b1d35782f2a1160eaf17cc697b3d2486bd02a | |
parent | b633645c2f17458310e24ca1a94b71b2c5dba10b (diff) | |
parent | c9d330f99ce1f2a58012fe1c4f12bdad544ede52 (diff) | |
download | android_frameworks_opt_datetimepicker-9a00adf08a6c5c2d1c8ce23111ec8fc9ee37d330.tar.gz android_frameworks_opt_datetimepicker-9a00adf08a6c5c2d1c8ce23111ec8fc9ee37d330.tar.bz2 android_frameworks_opt_datetimepicker-9a00adf08a6c5c2d1c8ce23111ec8fc9ee37d330.zip |
am c9d330f9: Improve accessibility for hardware keyboard mode.
* commit 'c9d330f99ce1f2a58012fe1c4f12bdad544ede52':
Improve accessibility for hardware keyboard mode.
-rw-r--r-- | res/values/strings.xml | 4 | ||||
-rw-r--r-- | src/com/android/datetimepicker/time/TimePickerDialog.java | 23 |
2 files changed, 23 insertions, 4 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml index e94fd37..e11a9a1 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -53,6 +53,8 @@ <string name="select_year">Select year</string> <!-- Accessibility description for the item that is currently selected. --> <string name="item_is_selected"><xliff:g id="item" example="2013">%1$s</xliff:g> selected</string> + <!-- Accessibility announcement when a number that had been typed in is deleted [CHAR_LIMIT=NONE] --> + <string name="deleted_key"><xliff:g id="key" example="4">%1$s</xliff:g> deleted</string> <!-- DO NOT TRANSLATE --> <string name="time_placeholder">--</string> @@ -66,4 +68,4 @@ <!-- DO NOT TRANSLATE --> <string name="day_of_week_label_typeface">sans-serif</string> -</resources>
\ No newline at end of file +</resources> diff --git a/src/com/android/datetimepicker/time/TimePickerDialog.java b/src/com/android/datetimepicker/time/TimePickerDialog.java index 2a385f7..d5db83b 100644 --- a/src/com/android/datetimepicker/time/TimePickerDialog.java +++ b/src/com/android/datetimepicker/time/TimePickerDialog.java @@ -91,6 +91,7 @@ public class TimePickerDialog extends DialogFragment implements OnValueSelectedL // For hardware IME input. private char mPlaceholderText; private String mDoublePlaceholderText; + private String mDeletedKeyFormat; private boolean mInKbMode; private ArrayList<Integer> mTypedTimes; private Node mLegalTimesTree; @@ -275,6 +276,7 @@ public class TimePickerDialog extends DialogFragment implements OnValueSelectedL // Set up for keyboard mode. mDoublePlaceholderText = res.getString(R.string.time_placeholder); + mDeletedKeyFormat = res.getString(R.string.deleted_key); mPlaceholderText = mDoublePlaceholderText.charAt(0); mAmKeyCode = mPmKeyCode = -1; generateLegalTimesTree(); @@ -441,7 +443,17 @@ public class TimePickerDialog extends DialogFragment implements OnValueSelectedL } else if (keyCode == KeyEvent.KEYCODE_DEL) { if (mInKbMode) { if (!mTypedTimes.isEmpty()) { - deleteLastTypedKey(); + int deleted = deleteLastTypedKey(); + String deletedKeyStr; + if (deleted == getAmOrPmKeyCode(AM)) { + deletedKeyStr = mAmText; + } else if (deleted == getAmOrPmKeyCode(PM)) { + deletedKeyStr = mPmText; + } else { + deletedKeyStr = String.format("%d", getValFromKeyCode(deleted)); + } + Utils.tryAccessibilityAnnounce(mTimePicker, + String.format(mDeletedKeyFormat, deletedKeyStr)); updateDisplay(true); } } @@ -501,6 +513,8 @@ public class TimePickerDialog extends DialogFragment implements OnValueSelectedL return false; } + int val = getValFromKeyCode(keyCode); + Utils.tryAccessibilityAnnounce(mTimePicker, String.format("%d", val)); // Automatically fill in 0's if AM or PM was legally entered. if (isTypedTimeFullyLegal()) { if (!mIs24HourMode && mTypedTimes.size() <= 3) { @@ -545,11 +559,12 @@ public class TimePickerDialog extends DialogFragment implements OnValueSelectedL } } - private void deleteLastTypedKey() { - mTypedTimes.remove(mTypedTimes.size() - 1); + private int deleteLastTypedKey() { + int deleted = mTypedTimes.remove(mTypedTimes.size() - 1); if (!isTypedTimeFullyLegal()) { mDoneButton.setEnabled(false); } + return deleted; } /** @@ -600,8 +615,10 @@ public class TimePickerDialog extends DialogFragment implements OnValueSelectedL String minuteStr = (values[1] == -1)? mDoublePlaceholderText : String.format(minuteFormat, values[1]).replace(' ', mPlaceholderText); mHourView.setText(hourStr); + mHourSpaceView.setText(hourStr); mHourView.setTextColor(mBlack); mMinuteView.setText(minuteStr); + mMinuteSpaceView.setText(minuteStr); mMinuteView.setTextColor(mBlack); if (!mIs24HourMode) { updateAmPmDisplay(values[2]); |