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

Commit ec92ea39 authored by Doris Liu's avatar Doris Liu Committed by Android Git Automerger
Browse files

am 5bfdb772: am 4a799925: Merge "Fix...

am 5bfdb772: am 4a799925: Merge "Fix NumberPicker.setWrapSelectorWheel(boolean) not respecting user choice" into mnc-dev

* commit '5bfdb772':
  Fix NumberPicker.setWrapSelectorWheel(boolean) not respecting user choice
parents f2c1c620 5bfdb772
Loading
Loading
Loading
Loading
+21 −7
Original line number Original line Diff line number Diff line
@@ -148,6 +148,11 @@ public class NumberPicker extends LinearLayout {
     */
     */
    private static final int SIZE_UNSPECIFIED = -1;
    private static final int SIZE_UNSPECIFIED = -1;


    /**
     * User choice on whether the selector wheel should be wrapped.
     */
    private boolean mWrapSelectorWheelPreferred = true;

    /**
    /**
     * Use a custom NumberPicker formatting callback to use two-digit minutes
     * Use a custom NumberPicker formatting callback to use two-digit minutes
     * strings like "01". Keeping a static formatter etc. is the most efficient
     * strings like "01". Keeping a static formatter etc. is the most efficient
@@ -1353,10 +1358,21 @@ public class NumberPicker extends LinearLayout {
     * @param wrapSelectorWheel Whether to wrap.
     * @param wrapSelectorWheel Whether to wrap.
     */
     */
    public void setWrapSelectorWheel(boolean wrapSelectorWheel) {
    public void setWrapSelectorWheel(boolean wrapSelectorWheel) {
        final boolean wrappingAllowed = (mMaxValue - mMinValue) >= mSelectorIndices.length;
        mWrapSelectorWheelPreferred = wrapSelectorWheel;
        if ((!wrapSelectorWheel || wrappingAllowed) && wrapSelectorWheel != mWrapSelectorWheel) {
        updateWrapSelectorWheel();
            mWrapSelectorWheel = wrapSelectorWheel;

    }
    }

    /**
     * Whether or not the selector wheel should be wrapped is determined by user choice and whether
     * the choice is allowed. The former comes from {@link #setWrapSelectorWheel(boolean)}, the
     * latter is calculated based on min & max value set vs selector's visual length. Therefore,
     * this method should be called any time any of the 3 values (i.e. user choice, min and max
     * value) gets updated.
     */
    private void updateWrapSelectorWheel() {
        final boolean wrappingAllowed = (mMaxValue - mMinValue) >= mSelectorIndices.length;
        mWrapSelectorWheel = wrappingAllowed && mWrapSelectorWheelPreferred;
    }
    }


    /**
    /**
@@ -1412,8 +1428,7 @@ public class NumberPicker extends LinearLayout {
        if (mMinValue > mValue) {
        if (mMinValue > mValue) {
            mValue = mMinValue;
            mValue = mMinValue;
        }
        }
        boolean wrapSelectorWheel = mMaxValue - mMinValue > mSelectorIndices.length;
        updateWrapSelectorWheel();
        setWrapSelectorWheel(wrapSelectorWheel);
        initializeSelectorWheelIndices();
        initializeSelectorWheelIndices();
        updateInputTextView();
        updateInputTextView();
        tryComputeMaxWidth();
        tryComputeMaxWidth();
@@ -1450,8 +1465,7 @@ public class NumberPicker extends LinearLayout {
        if (mMaxValue < mValue) {
        if (mMaxValue < mValue) {
            mValue = mMaxValue;
            mValue = mMaxValue;
        }
        }
        boolean wrapSelectorWheel = mMaxValue - mMinValue > mSelectorIndices.length;
        updateWrapSelectorWheel();
        setWrapSelectorWheel(wrapSelectorWheel);
        initializeSelectorWheelIndices();
        initializeSelectorWheelIndices();
        updateInputTextView();
        updateInputTextView();
        tryComputeMaxWidth();
        tryComputeMaxWidth();