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

Commit 3a0751a3 authored by André Rivotti Casimiro's avatar André Rivotti Casimiro Committed by Roman Birg
Browse files

Fix set pattern screen after rotating the device 1/2

Allows the usage of a temporary pattern size while setting a new one.

Change-Id: I3e62c2da4f290986f6295da8dee6900454b49141
parent c3656a6e
Loading
Loading
Loading
Loading
+22 −3
Original line number Diff line number Diff line
@@ -780,9 +780,18 @@ public class LockPatternUtils {
     * @return The pattern.
     */
    public List<LockPatternView.Cell> stringToPattern(String string) {
        List<LockPatternView.Cell> result = Lists.newArrayList();

        final byte size = getLockPatternSize();
        return stringToPattern(string, size);
    }

    /**
     * Deserialize a pattern.
     * @param string The pattern serialized with {@link #patternToString}
     * @param byte The pattern size
     * @return The pattern.
     */
    public List<LockPatternView.Cell> stringToPattern(String string, byte size) {
        List<LockPatternView.Cell> result = Lists.newArrayList();
        LockPatternView.Cell.updateSize(size);

        final byte[] bytes = string.getBytes();
@@ -799,6 +808,16 @@ public class LockPatternUtils {
     * @return The pattern in string form.
     */
    public String patternToString(List<LockPatternView.Cell> pattern) {
       return patternToString(pattern, getLockPatternSize());
    }

    /**
     * Serialize a pattern.
     * @param pattern The pattern.
     * @param size The pattern size.
     * @return The pattern in string form.
     */
    public String patternToString(List<LockPatternView.Cell> pattern, byte size) {
        if (pattern == null) {
            return "";
        }
@@ -807,7 +826,7 @@ public class LockPatternUtils {
        byte[] res = new byte[patternSize];
        for (int i = 0; i < patternSize; i++) {
            LockPatternView.Cell cell = pattern.get(i);
            res[i] = (byte) (cell.getRow() * getLockPatternSize() + cell.getColumn());
            res[i] = (byte) (cell.getRow() * size + cell.getColumn());
        }
        return new String(res);
    }
+4 −3
Original line number Diff line number Diff line
@@ -1076,7 +1076,8 @@ public class LockPatternView extends View {
    protected Parcelable onSaveInstanceState() {
        Parcelable superState = super.onSaveInstanceState();
        return new SavedState(superState,
                mLockPatternUtils == null ? "" : mLockPatternUtils.patternToString(mPattern),
                mLockPatternUtils == null ? "" : mLockPatternUtils.patternToString(mPattern,
                        mPatternSize),
                mPatternDisplayMode.ordinal(), mPatternSize,
                mInputEnabled, mInStealthMode, mEnableHapticFeedback, mVisibleDots, mShowErrorPath);
    }
@@ -1085,13 +1086,13 @@ public class LockPatternView extends View {
    protected void onRestoreInstanceState(Parcelable state) {
        final SavedState ss = (SavedState) state;
        super.onRestoreInstanceState(ss.getSuperState());
        mPatternSize = ss.getPatternSize();
        if (mLockPatternUtils != null) {
            setPattern(
                    DisplayMode.Correct,
                    mLockPatternUtils.stringToPattern(ss.getSerializedPattern()));
                    mLockPatternUtils.stringToPattern(ss.getSerializedPattern(), mPatternSize));
        }
        mPatternDisplayMode = DisplayMode.values()[ss.getDisplayMode()];
        mPatternSize = ss.getPatternSize();
        mInputEnabled = ss.isInputEnabled();
        mInStealthMode = ss.isInStealthMode();
        mEnableHapticFeedback = ss.isTactileFeedbackEnabled();