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

Commit 3b256c85 authored by Alan Viverette's avatar Alan Viverette Committed by Android (Google) Code Review
Browse files

Merge "Fix AM/PM text i18n and clean up keyboard support in time picker" into lmp-dev

parents c65e9a48 ba9bf41a
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -260,6 +260,7 @@ package android {
  public static final class R.attr {
    ctor public R.attr();
    field public static final int __removed2 = 16843937; // 0x10104a1
    field public static final int absListViewStyle = 16842858; // 0x101006a
    field public static final int accessibilityEventTypes = 16843648; // 0x1010380
    field public static final int accessibilityFeedbackType = 16843650; // 0x1010382
@@ -482,7 +483,7 @@ package android {
    field public static final int datePickerMode = 16843956; // 0x10104b4
    field public static final int datePickerStyle = 16843612; // 0x101035c
    field public static final int dateTextAppearance = 16843593; // 0x1010349
    field public static final int dayOfWeekBackgroundColor = 16843924; // 0x1010494
    field public static final int dayOfWeekBackground = 16843924; // 0x1010494
    field public static final int dayOfWeekTextAppearance = 16843925; // 0x1010495
    field public static final int debuggable = 16842767; // 0x101000f
    field public static final int defaultValue = 16843245; // 0x10101ed
@@ -663,7 +664,6 @@ package android {
    field public static final int hasCode = 16842764; // 0x101000c
    field public static final int headerAmPmTextAppearance = 16843936; // 0x10104a0
    field public static final int headerBackground = 16843055; // 0x101012f
    field public static final int headerBackgroundColor = 16843937; // 0x10104a1
    field public static final int headerDayOfMonthTextAppearance = 16843927; // 0x1010497
    field public static final int headerDividersEnabled = 16843310; // 0x101022e
    field public static final int headerMonthTextAppearance = 16843926; // 0x1010496
+2 −2
Original line number Diff line number Diff line
@@ -71,9 +71,9 @@ import libcore.icu.ICU;
 * @attr ref android.R.styleable#DatePicker_minDate
 * @attr ref android.R.styleable#DatePicker_spinnersShown
 * @attr ref android.R.styleable#DatePicker_calendarViewShown
 * @attr ref android.R.styleable#DatePicker_dayOfWeekBackgroundColor
 * @attr ref android.R.styleable#DatePicker_dayOfWeekBackground
 * @attr ref android.R.styleable#DatePicker_dayOfWeekTextAppearance
 * @attr ref android.R.styleable#DatePicker_headerBackgroundColor
 * @attr ref android.R.styleable#DatePicker_headerBackground
 * @attr ref android.R.styleable#DatePicker_headerMonthTextAppearance
 * @attr ref android.R.styleable#DatePicker_headerDayOfMonthTextAppearance
 * @attr ref android.R.styleable#DatePicker_headerYearTextAppearance
+4 −8
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@ import android.content.res.ColorStateList;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.Parcel;
import android.os.Parcelable;
import android.text.format.DateFormat;
@@ -149,16 +149,12 @@ class DatePickerCalendarDelegate extends DatePicker.AbstractDatePickerDelegate i
            mDayOfWeekView.setTextAppearance(context, dayOfWeekTextAppearanceResId);
        }

        final int dayOfWeekBackgroundColor = a.getColor(
                R.styleable.DatePicker_dayOfWeekBackgroundColor, Color.TRANSPARENT);
        mDayOfWeekView.setBackgroundColor(dayOfWeekBackgroundColor);
        mDayOfWeekView.setBackground(a.getDrawable(R.styleable.DatePicker_dayOfWeekBackground));

        dateLayout.setBackground(a.getDrawable(R.styleable.DatePicker_headerBackground));

        final int headerSelectedTextColor = a.getColor(
                R.styleable.DatePicker_headerSelectedTextColor, defaultHighlightColor);
        final int headerBackgroundColor = a.getColor(R.styleable.DatePicker_headerBackgroundColor,
                Color.TRANSPARENT);
        dateLayout.setBackgroundColor(headerBackgroundColor);

        final int monthTextAppearanceResId = a.getResourceId(
                R.styleable.DatePicker_headerMonthTextAppearance, -1);
        if (monthTextAppearanceResId != -1) {
+4 −3
Original line number Diff line number Diff line
@@ -458,6 +458,7 @@ public class RadialTimePickerView extends View implements View.OnTouchListener {
        a.recycle();

        setOnTouchListener(this);
        setClickable(true);

        // Initial values
        final Calendar calendar = Calendar.getInstance(Locale.getDefault());
@@ -612,9 +613,9 @@ public class RadialTimePickerView extends View implements View.OnTouchListener {
            mMinutesTexts[i] = String.format("%02d", MINUTES_NUMBERS[i]);
        }

        String[] amPmTexts = new DateFormatSymbols().getAmPmStrings();
        mAmPmText[AM] = amPmTexts[0];
        mAmPmText[PM] = amPmTexts[1];
        String[] amPmStrings = TimePickerClockDelegate.getAmPmStrings(mContext);
        mAmPmText[AM] = amPmStrings[0];
        mAmPmText[PM] = amPmStrings[1];
    }

    private void initData() {
+28 −43
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@ import android.content.res.ColorStateList;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils;
@@ -40,7 +39,6 @@ import android.view.accessibility.AccessibilityNodeInfo;

import com.android.internal.R;

import java.text.DateFormatSymbols;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Locale;
@@ -71,6 +69,7 @@ class TimePickerSpinnerDelegate extends TimePicker.AbstractTimePickerDelegate im

    private static final int HOURS_IN_HALF_DAY = 12;

    private View mHeaderView;
    private TextView mHourView;
    private TextView mMinuteView;
    private TextView mAmPmTextView;
@@ -156,11 +155,8 @@ class TimePickerSpinnerDelegate extends TimePicker.AbstractTimePickerDelegate im
            mAmPmTextView.setTextAppearance(context, headerAmPmTextAppearance);
        }

        final int headerBackgroundColor = a.getColor(
                R.styleable.TimePicker_headerBackgroundColor, Color.TRANSPARENT);
        if (headerBackgroundColor != Color.TRANSPARENT) {
            mainView.findViewById(R.id.time_header).setBackgroundColor(headerBackgroundColor);
        }
        mHeaderView = mainView.findViewById(R.id.time_header);
        mHeaderView.setBackground(a.getDrawable(R.styleable.TimePicker_headerBackground));

        a.recycle();

@@ -194,14 +190,11 @@ class TimePickerSpinnerDelegate extends TimePicker.AbstractTimePickerDelegate im
    }

    private void setupListeners() {
        KeyboardListener keyboardListener = new KeyboardListener();
        mDelegator.setOnKeyListener(keyboardListener);
        mHeaderView.setOnKeyListener(mKeyListener);
        mHeaderView.setOnFocusChangeListener(mFocusListener);
        mHeaderView.setFocusable(true);

        mHourView.setOnKeyListener(keyboardListener);
        mMinuteView.setOnKeyListener(keyboardListener);
        mAmPmTextView.setOnKeyListener(keyboardListener);
        mRadialTimePickerView.setOnValueSelectedListener(this);
        mRadialTimePickerView.setOnKeyListener(keyboardListener);

        mHourView.setOnClickListener(new View.OnClickListener() {
            @Override
@@ -641,7 +634,7 @@ class TimePickerSpinnerDelegate extends TimePicker.AbstractTimePickerDelegate im
            if (!isTypedTimeFullyLegal()) {
                mTypedTimes.clear();
            }
            finishKbMode(true);
            finishKbMode();
        }
    }

@@ -776,27 +769,7 @@ class TimePickerSpinnerDelegate extends TimePicker.AbstractTimePickerDelegate im
     * @return true if the key was successfully processed, false otherwise.
     */
    private boolean processKeyUp(int keyCode) {
        if (keyCode == KeyEvent.KEYCODE_ESCAPE || keyCode == KeyEvent.KEYCODE_TAB) {
            if(mInKbMode) {
                if (isTypedTimeFullyLegal()) {
                    finishKbMode(true);
                }
                return true;
            }
        } else if (keyCode == KeyEvent.KEYCODE_ENTER) {
            if (mInKbMode) {
                if (!isTypedTimeFullyLegal()) {
                    return true;
                }
                finishKbMode(false);
            }
            if (mOnTimeChangedListener != null) {
                mOnTimeChangedListener.onTimeChanged(mDelegator,
                        mRadialTimePickerView.getCurrentHour(),
                        mRadialTimePickerView.getCurrentMinute());
            }
            return true;
        } else if (keyCode == KeyEvent.KEYCODE_DEL) {
        if (keyCode == KeyEvent.KEYCODE_DEL) {
            if (mInKbMode) {
                if (!mTypedTimes.isEmpty()) {
                    int deleted = deleteLastTypedKey();
@@ -925,9 +898,8 @@ class TimePickerSpinnerDelegate extends TimePicker.AbstractTimePickerDelegate im

    /**
     * Get out of keyboard mode. If there is nothing in typedTimes, revert to TimePicker's time.
     * @param updateDisplays If true, update the displays with the relevant time.
     */
    private void finishKbMode(boolean updateDisplays) {
    private void finishKbMode() {
        mInKbMode = false;
        if (!mTypedTimes.isEmpty()) {
            int values[] = getEnteredTime(null);
@@ -938,11 +910,9 @@ class TimePickerSpinnerDelegate extends TimePicker.AbstractTimePickerDelegate im
            }
            mTypedTimes.clear();
        }
        if (updateDisplays) {
        updateDisplay(false);
        mRadialTimePickerView.setInputEnabled(true);
    }
    }

    /**
     * Update the hours, minutes, and AM/PM displays with the typed times. If the typedTimes is
@@ -1261,7 +1231,7 @@ class TimePickerSpinnerDelegate extends TimePicker.AbstractTimePickerDelegate im
        }
    }

    private class KeyboardListener implements View.OnKeyListener {
    private final View.OnKeyListener mKeyListener = new View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (event.getAction() == KeyEvent.ACTION_UP) {
@@ -1269,5 +1239,20 @@ class TimePickerSpinnerDelegate extends TimePicker.AbstractTimePickerDelegate im
            }
            return false;
        }
    };

    private final View.OnFocusChangeListener mFocusListener = new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (!hasFocus && mInKbMode && isTypedTimeFullyLegal()) {
                finishKbMode();

                if (mOnTimeChangedListener != null) {
                    mOnTimeChangedListener.onTimeChanged(mDelegator,
                            mRadialTimePickerView.getCurrentHour(),
                            mRadialTimePickerView.getCurrentMinute());
                }
            }
        }
    };
}
Loading