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

Commit a758ba6b authored by Jason Monk's avatar Jason Monk
Browse files

Fix QS labels on language change

Some tiles now won't do updates if the state hasn't changed (rotation) to avoid
breaking the animation state. To handle this, state is cleared when the
configuration changes.

Bug: 22206214
Change-Id: I029fb4c75cc920a6c9907b65e8c48d28c21d529a
parent a9b9907f
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -158,6 +158,9 @@ public class QSPanel extends ViewGroup {
            mColumns = columns;
            postInvalidate();
        }
        for (TileRecord r : mRecords) {
            r.tile.clearState();
        }
        if (mListening) {
            refreshAllTiles();
        }
+15 −2
Original line number Diff line number Diff line
@@ -61,8 +61,8 @@ public abstract class QSTile<TState extends State> implements Listenable {
    protected final Handler mUiHandler = new Handler(Looper.getMainLooper());

    private Callback mCallback;
    protected final TState mState = newTileState();
    private final TState mTmpState = newTileState();
    protected TState mState = newTileState();
    private TState mTmpState = newTileState();
    private boolean mAnnounceNextStateChange;

    abstract protected TState newTileState();
@@ -139,6 +139,10 @@ public abstract class QSTile<TState extends State> implements Listenable {
        mHandler.obtainMessage(H.REFRESH_STATE, arg).sendToTarget();
    }

    public final void clearState() {
        mHandler.sendEmptyMessage(H.CLEAR_STATE);
    }

    public void userSwitch(int newUserId) {
        mHandler.obtainMessage(H.USER_SWITCH, newUserId, 0).sendToTarget();
    }
@@ -178,6 +182,11 @@ public abstract class QSTile<TState extends State> implements Listenable {
        // optional
    }

    protected void handleClearState() {
        mTmpState = newTileState();
        mState = newTileState();
    }

    protected void handleRefreshState(Object arg) {
        handleUpdateState(mTmpState, arg);
        final boolean changed = mTmpState.copyTo(mState);
@@ -246,6 +255,7 @@ public abstract class QSTile<TState extends State> implements Listenable {
        private static final int TOGGLE_STATE_CHANGED = 8;
        private static final int SCAN_STATE_CHANGED = 9;
        private static final int DESTROY = 10;
        private static final int CLEAR_STATE = 11;

        private H(Looper looper) {
            super(looper);
@@ -286,6 +296,9 @@ public abstract class QSTile<TState extends State> implements Listenable {
                } else if (msg.what == DESTROY) {
                    name = "handleDestroy";
                    handleDestroy();
                } else if (msg.what == CLEAR_STATE) {
                    name = "handleClearState";
                    handleClearState();
                } else {
                    throw new IllegalArgumentException("Unknown msg: " + msg.what);
                }