diff options
author | Svetoslav Ganov <svetoslavganov@google.com> | 2011-01-27 18:16:27 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-01-27 18:16:27 -0800 |
commit | 86471d00f6637dc2c839b2df2a0df511b1ac4dc7 (patch) | |
tree | 99a7b553047f0cb06d07972fb13a21e60f5be88c | |
parent | 3b5d9515f208d28ae168c3f3d3cd442ff6e6e45a (diff) | |
parent | 8a2a89588c3889b999a8fffa2d7c7a5c3ce25eb8 (diff) | |
download | frameworks_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.java | 12 | ||||
-rw-r--r-- | core/java/android/widget/TimePicker.java | 28 | ||||
-rw-r--r-- | core/res/res/layout/number_picker.xml | 6 | ||||
-rwxr-xr-x | core/res/res/values/strings.xml | 7 |
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> |