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

Commit 5efe0d19 authored by Alan Viverette's avatar Alan Viverette
Browse files

Convert getHourForDegrees result to 12-hour format when needed

Also prevents the selector from jumping between the inner and outer
circle during touch exploration in 24-hour mode.

Bug: 19101918
Change-Id: If342056b378927397f8651dad5e8d806bcda03a6
parent de8d2840
Loading
Loading
Loading
Loading
+19 −1
Original line number Diff line number Diff line
@@ -1381,11 +1381,19 @@ public class RadialTimePickerView extends View implements View.OnTouchListener {
        @Override
        protected int getVirtualViewAt(float x, float y) {
            final int id;

            // Calling getDegreesXY() has side-effects, so we need to cache the
            // current inner circle value and restore after the call.
            final boolean wasOnInnerCircle = mIsOnInnerCircle;
            final int degrees = getDegreesFromXY(x, y);
            final boolean isOnInnerCircle = mIsOnInnerCircle;
            mIsOnInnerCircle = wasOnInnerCircle;

            if (degrees != -1) {
                final int snapDegrees = snapOnly30s(degrees, 0) % 360;
                if (mShowHours) {
                    final int hour = getHourForDegrees(snapDegrees, mIsOnInnerCircle);
                    final int hour24 = getHourForDegrees(snapDegrees, isOnInnerCircle);
                    final int hour = mIs24HourMode ? hour24 : hour24To12(hour24);
                    id = makeId(TYPE_HOUR, hour);
                } else {
                    final int current = getCurrentMinute();
@@ -1514,6 +1522,16 @@ public class RadialTimePickerView extends View implements View.OnTouchListener {
            return hour24;
        }

        private int hour24To12(int hour24) {
            if (hour24 == 0) {
                return 12;
            } else if (hour24 > 12) {
                return hour24 - 12;
            } else {
                return hour24;
            }
        }

        private void getBoundsForVirtualView(int virtualViewId, Rect bounds) {
            final float radius;
            final int type = getTypeFromId(virtualViewId);