diff options
| author | Felipe Leme <felipeal@google.com> | 2017-08-10 18:38:44 -0700 |
|---|---|---|
| committer | Felipe Leme <felipeal@google.com> | 2017-08-15 10:42:58 -0700 |
| commit | f480e8cad5e6cf4fed85a944adc01d96f51e966b (patch) | |
| tree | b397ded5cfbc6eb89f0085fd880e1e81d290691f /core/java/android/widget/TimePickerClockDelegate.java | |
| parent | 144d8cb6261b831bebcd2adb1ed73c1e9298190a (diff) | |
Improved autofill support on DatePicker and TimePicker:
- Save autofilled value so UI is properly highlighted.
- Notify TimePicker listener just once.
Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases
Test: cts-tradefed run commandAndExit cts-dev -m CtsWidgetTestCases -t android.widget.cts.DatePickerTest
Test: cts-tradefed run commandAndExit cts-dev -m CtsWidgetTestCases -t android.widget.cts.TimePickerTest
Fixes: 37098837
Change-Id: I38d64c107f6059b94c92676ea37681006474f519
Diffstat (limited to 'core/java/android/widget/TimePickerClockDelegate.java')
| -rw-r--r-- | core/java/android/widget/TimePickerClockDelegate.java | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/core/java/android/widget/TimePickerClockDelegate.java b/core/java/android/widget/TimePickerClockDelegate.java index 526246b28530..706b0ce225dc 100644 --- a/core/java/android/widget/TimePickerClockDelegate.java +++ b/core/java/android/widget/TimePickerClockDelegate.java @@ -506,19 +506,29 @@ class TimePickerClockDelegate extends TimePicker.AbstractTimePickerDelegate { mAmPmLayout.setLayoutParams(params); } + @Override + public void setDate(int hour, int minute) { + setHourInternal(hour, FROM_EXTERNAL_API, true, false); + setMinuteInternal(minute, FROM_EXTERNAL_API, false); + + onTimeChanged(); + } + /** * Set the current hour. */ @Override public void setHour(int hour) { - setHourInternal(hour, FROM_EXTERNAL_API, true); + setHourInternal(hour, FROM_EXTERNAL_API, true, true); } - private void setHourInternal(int hour, @ChangeSource int source, boolean announce) { + private void setHourInternal(int hour, @ChangeSource int source, boolean announce, + boolean notify) { if (mCurrentHour == hour) { return; } + resetAutofilledValue(); mCurrentHour = hour; updateHeaderHour(hour, announce); updateHeaderAmPm(); @@ -532,7 +542,9 @@ class TimePickerClockDelegate extends TimePicker.AbstractTimePickerDelegate { } mDelegator.invalidate(); - onTimeChanged(); + if (notify) { + onTimeChanged(); + } } /** @@ -557,14 +569,15 @@ class TimePickerClockDelegate extends TimePicker.AbstractTimePickerDelegate { */ @Override public void setMinute(int minute) { - setMinuteInternal(minute, FROM_EXTERNAL_API); + setMinuteInternal(minute, FROM_EXTERNAL_API, true); } - private void setMinuteInternal(int minute, @ChangeSource int source) { + private void setMinuteInternal(int minute, @ChangeSource int source, boolean notify) { if (mCurrentMinute == minute) { return; } + resetAutofilledValue(); mCurrentMinute = minute; updateHeaderMinute(minute, true); @@ -576,7 +589,9 @@ class TimePickerClockDelegate extends TimePicker.AbstractTimePickerDelegate { } mDelegator.invalidate(); - onTimeChanged(); + if (notify) { + onTimeChanged(); + } } /** @@ -870,7 +885,7 @@ class TimePickerClockDelegate extends TimePicker.AbstractTimePickerDelegate { valueChanged = true; } final boolean isTransition = mAllowAutoAdvance && autoAdvance; - setHourInternal(newValue, FROM_RADIAL_PICKER, !isTransition); + setHourInternal(newValue, FROM_RADIAL_PICKER, !isTransition, true); if (isTransition) { setCurrentItemShowing(MINUTE_INDEX, true, false); @@ -882,7 +897,7 @@ class TimePickerClockDelegate extends TimePicker.AbstractTimePickerDelegate { if (getMinute() != newValue) { valueChanged = true; } - setMinuteInternal(newValue, FROM_RADIAL_PICKER); + setMinuteInternal(newValue, FROM_RADIAL_PICKER, true); break; } @@ -897,10 +912,10 @@ class TimePickerClockDelegate extends TimePicker.AbstractTimePickerDelegate { public void onValueChanged(int pickerType, int newValue) { switch (pickerType) { case TextInputTimePickerView.HOURS: - setHourInternal(newValue, FROM_INPUT_PICKER, false); + setHourInternal(newValue, FROM_INPUT_PICKER, false, true); break; case TextInputTimePickerView.MINUTES: - setMinuteInternal(newValue, FROM_INPUT_PICKER); + setMinuteInternal(newValue, FROM_INPUT_PICKER, true); break; case TextInputTimePickerView.AMPM: setAmOrPm(newValue); |
