summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSam Blitzstein <sblitz@google.com>2013-05-06 13:56:02 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2013-05-06 13:56:02 -0700
commit9a00adf08a6c5c2d1c8ce23111ec8fc9ee37d330 (patch)
tree9c4b1d35782f2a1160eaf17cc697b3d2486bd02a
parentb633645c2f17458310e24ca1a94b71b2c5dba10b (diff)
parentc9d330f99ce1f2a58012fe1c4f12bdad544ede52 (diff)
downloadandroid_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.xml4
-rw-r--r--src/com/android/datetimepicker/time/TimePickerDialog.java23
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]);