summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSvetoslav Ganov <svetoslavganov@google.com>2011-01-27 18:16:27 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-01-27 18:16:27 -0800
commit86471d00f6637dc2c839b2df2a0df511b1ac4dc7 (patch)
tree99a7b553047f0cb06d07972fb13a21e60f5be88c
parent3b5d9515f208d28ae168c3f3d3cd442ff6e6e45a (diff)
parent8a2a89588c3889b999a8fffa2d7c7a5c3ce25eb8 (diff)
downloadframeworks_base-86471d00f6637dc2c839b2df2a0df511b1ac4dc7.zip
frameworks_base-86471d00f6637dc2c839b2df2a0df511b1ac4dc7.tar.gz
frameworks_base-86471d00f6637dc2c839b2df2a0df511b1ac4dc7.tar.bz2
Merge "Accessibility support to NumberPicker, DatePicker, and TimePicker" into honeycomb
-rw-r--r--core/java/android/widget/DatePicker.java12
-rw-r--r--core/java/android/widget/TimePicker.java28
-rw-r--r--core/res/res/layout/number_picker.xml6
-rwxr-xr-xcore/res/res/values/strings.xml7
4 files changed, 48 insertions, 5 deletions
diff --git a/core/java/android/widget/DatePicker.java b/core/java/android/widget/DatePicker.java
index 7293572..4a34b45 100644
--- a/core/java/android/widget/DatePicker.java
+++ b/core/java/android/widget/DatePicker.java
@@ -30,6 +30,7 @@ import android.util.AttributeSet;
import android.util.Log;
import android.util.SparseArray;
import android.view.LayoutInflater;
+import android.view.accessibility.AccessibilityEvent;
import android.widget.NumberPicker.OnValueChangeListener;
import java.text.ParseException;
@@ -353,6 +354,16 @@ public class DatePicker extends FrameLayout {
return mIsEnabled;
}
+ @Override
+ public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
+ int flags = DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_WEEKDAY
+ | DateUtils.FORMAT_SHOW_YEAR;
+ String selectedDateUtterance = DateUtils.formatDateTime(mContext,
+ mCurrentDate.getTimeInMillis(), flags);
+ event.getText().add(selectedDateUtterance);
+ return true;
+ }
+
/**
* Gets whether the {@link CalendarView} is shown.
*
@@ -641,6 +652,7 @@ public class DatePicker extends FrameLayout {
* Notifies the listener, if such, for a change in the selected date.
*/
private void notifyDateChanged() {
+ sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_SELECTED);
if (mOnDateChangedListener != null) {
mOnDateChangedListener.onDateChanged(this, getYear(), getMonth(), getDayOfMonth());
}
diff --git a/core/java/android/widget/TimePicker.java b/core/java/android/widget/TimePicker.java
index 2688b95..4b37beb 100644
--- a/core/java/android/widget/TimePicker.java
+++ b/core/java/android/widget/TimePicker.java
@@ -23,9 +23,11 @@ import android.content.Context;
import android.content.res.TypedArray;
import android.os.Parcel;
import android.os.Parcelable;
+import android.text.format.DateUtils;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
+import android.view.accessibility.AccessibilityEvent;
import android.widget.NumberPicker.OnValueChangeListener;
import java.text.DateFormatSymbols;
@@ -88,6 +90,8 @@ public class TimePicker extends FrameLayout {
// callbacks
private OnTimeChangedListener mOnTimeChangedListener;
+ private Calendar mTempCalendar;
+
/**
* The callback interface used to indicate the time has been adjusted.
*/
@@ -214,12 +218,12 @@ public class TimePicker extends FrameLayout {
updateAmPmControl();
// initialize to current time
- Calendar calendar = Calendar.getInstance();
+ mTempCalendar = Calendar.getInstance();
setOnTimeChangedListener(NO_OP_CHANGE_LISTENER);
// set to current time
- setCurrentHour(calendar.get(Calendar.HOUR_OF_DAY));
- setCurrentMinute(calendar.get(Calendar.MINUTE));
+ setCurrentHour(mTempCalendar.get(Calendar.HOUR_OF_DAY));
+ setCurrentMinute(mTempCalendar.get(Calendar.MINUTE));
if (!isEnabled()) {
setEnabled(false);
@@ -406,6 +410,22 @@ public class TimePicker extends FrameLayout {
return mHourSpinner.getBaseline();
}
+ @Override
+ public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
+ int flags = DateUtils.FORMAT_SHOW_TIME;
+ if (mIs24HourView) {
+ flags |= DateUtils.FORMAT_24HOUR;
+ } else {
+ flags |= DateUtils.FORMAT_12HOUR;
+ }
+ mTempCalendar.set(Calendar.HOUR_OF_DAY, getCurrentHour());
+ mTempCalendar.set(Calendar.MINUTE, getCurrentMinute());
+ String selectedDateUtterance = DateUtils.formatDateTime(mContext,
+ mTempCalendar.getTimeInMillis(), flags);
+ event.getText().add(selectedDateUtterance);
+ return true;
+ }
+
private void updateHourControl() {
if (is24HourView()) {
mHourSpinner.setMinValue(0);
@@ -435,9 +455,11 @@ public class TimePicker extends FrameLayout {
mAmPmButton.setVisibility(View.VISIBLE);
}
}
+ sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_SELECTED);
}
private void onTimeChanged() {
+ sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_SELECTED);
if (mOnTimeChangedListener != null) {
mOnTimeChangedListener.onTimeChanged(this, getCurrentHour(), getCurrentMinute());
}
diff --git a/core/res/res/layout/number_picker.xml b/core/res/res/layout/number_picker.xml
index f92c1bc..807daf2 100644
--- a/core/res/res/layout/number_picker.xml
+++ b/core/res/res/layout/number_picker.xml
@@ -22,7 +22,8 @@
<ImageButton android:id="@+id/increment"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
- style="?android:attr/numberPickerUpButtonStyle" />
+ style="?android:attr/numberPickerUpButtonStyle"
+ android:contentDescription="@string/number_picker_increment_button" />
<EditText android:id="@+id/numberpicker_input"
android:layout_width="fill_parent"
@@ -32,6 +33,7 @@
<ImageButton android:id="@+id/decrement"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
- style="?android:attr/numberPickerDownButtonStyle" />
+ style="?android:attr/numberPickerDownButtonStyle"
+ android:contentDescription="@string/number_picker_decrement_button" />
</merge>
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 529111e..d09210e 100755
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -2690,4 +2690,11 @@
<!-- Choose Account Activity label -->
<string name="choose_account_label">Select an account</string>
+
+ <!-- NumberPicker - accessibility support -->
+ <!-- Description of the button to increment the NumberPicker value. [CHAR LIMIT=NONE] -->
+ <string name="number_picker_increment_button">Increment</string>
+ <!-- Description of the button to decrement the NumberPicker value. [CHAR LIMIT=NONE] -->
+ <string name="number_picker_decrement_button">Decrement</string>
+
</resources>