OSDN Git Service

Call OnTimeChangedListener on AM/PM change in clock-style TimePicker
authorAlan Viverette <alanv@google.com>
Tue, 19 Apr 2016 13:29:20 +0000 (09:29 -0400)
committerAlan Viverette <alanv@google.com>
Tue, 19 Apr 2016 13:29:20 +0000 (09:29 -0400)
Bug: 28257554
Change-Id: I25aabac783ea2b6e68be4b6c60f0d55a4c37af26

core/java/android/widget/RadialTimePickerView.java
core/java/android/widget/TimePickerClockDelegate.java

index 24d2c8e..8c8d38f 100644 (file)
@@ -563,10 +563,23 @@ public class RadialTimePickerView extends View {
         return minute * DEGREES_FOR_ONE_MINUTE;
     }
 
-    public void setAmOrPm(int val) {
-        mAmOrPm = (val % 2);
+    /**
+     * Sets whether the picker is showing AM or PM hours. Has no effect when
+     * in 24-hour mode.
+     *
+     * @param amOrPm {@link #AM} or {@link #PM}
+     * @return {@code true} if the value changed from what was previously set,
+     *         or {@code false} otherwise
+     */
+    public boolean setAmOrPm(int amOrPm) {
+        if (mAmOrPm == amOrPm || mIs24HourMode) {
+            return false;
+        }
+
+        mAmOrPm = amOrPm;
         invalidate();
         mTouchHelper.invalidateRoot();
+        return true;
     }
 
     public int getAmOrPm() {
index 0c3892d..b6200a1 100644 (file)
@@ -701,7 +701,10 @@ class TimePickerClockDelegate extends TimePicker.AbstractTimePickerDelegate impl
 
     private void setAmOrPm(int amOrPm) {
         updateAmPmLabelStates(amOrPm);
-        mRadialTimePickerView.setAmOrPm(amOrPm);
+
+        if (mRadialTimePickerView.setAmOrPm(amOrPm) && mOnTimeChangedListener != null) {
+            mOnTimeChangedListener.onTimeChanged(mDelegator, getHour(), getMinute());
+        }
     }
 
     private final OnValueChangedListener mDigitEnteredListener = new OnValueChangedListener() {