summaryrefslogtreecommitdiff
path: root/core/java/android/widget/TimePickerClockDelegate.java
diff options
context:
space:
mode:
authorFelipe Leme <felipeal@google.com>2017-08-10 18:38:44 -0700
committerFelipe Leme <felipeal@google.com>2017-08-15 10:42:58 -0700
commitf480e8cad5e6cf4fed85a944adc01d96f51e966b (patch)
treeb397ded5cfbc6eb89f0085fd880e1e81d290691f /core/java/android/widget/TimePickerClockDelegate.java
parent144d8cb6261b831bebcd2adb1ed73c1e9298190a (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.java35
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);