Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 86471d00 authored by Svetoslav Ganov's avatar Svetoslav Ganov Committed by Android (Google) Code Review
Browse files

Merge "Accessibility support to NumberPicker, DatePicker, and TimePicker" into honeycomb

parents 3b5d9515 8a2a8958
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -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());
        }
+25 −3
Original line number Diff line number Diff line
@@ -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());
        }
+4 −2
Original line number Diff line number Diff line
@@ -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>
+7 −0
Original line number Diff line number Diff line
@@ -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>