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

Commit b9dc0c7b authored by Fabian Kozynski's avatar Fabian Kozynski
Browse files

Brightness slider doesn't jump when panel is open

Slider starts listening and is set to current value as soon as QSPanel
starts opening.

Slider animation duration is proportional to change value.

QSPanel decides when to listen based on QSFragment listening and
expanded variables.

Test: manual
Change-Id: Ie310da4942b57d8016da0986071445b1cd3349df
Fixes: 78209596
parent e0ef793d
Loading
Loading
Loading
Loading
+2 −3
Original line number Original line Diff line number Diff line
@@ -256,7 +256,7 @@ public class QSFragment extends Fragment implements QS, CommandQueue.Callbacks {
    public void setExpanded(boolean expanded) {
    public void setExpanded(boolean expanded) {
        if (DEBUG) Log.d(TAG, "setExpanded " + expanded);
        if (DEBUG) Log.d(TAG, "setExpanded " + expanded);
        mQsExpanded = expanded;
        mQsExpanded = expanded;
        mQSPanel.setListening(mListening && mQsExpanded);
        mQSPanel.setListening(mListening, mQsExpanded);
        updateQsState();
        updateQsState();
    }
    }


@@ -287,8 +287,7 @@ public class QSFragment extends Fragment implements QS, CommandQueue.Callbacks {
        mListening = listening;
        mListening = listening;
        mHeader.setListening(listening);
        mHeader.setListening(listening);
        mFooter.setListening(listening);
        mFooter.setListening(listening);
        mQSPanel.setListening(mListening && mQsExpanded);
        mQSPanel.setListening(mListening, mQsExpanded);
        mQSPanel.getFooter().setListening(listening);
    }
    }


    @Override
    @Override
+15 −6
Original line number Original line Diff line number Diff line
@@ -353,14 +353,23 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne
        if (mListening) {
        if (mListening) {
            refreshAllTiles();
            refreshAllTiles();
        }
        }
        if (mBrightnessView.getVisibility() == View.VISIBLE) {
    }

    public void setListening(boolean listening, boolean expanded) {
        setListening(listening && expanded);
        getFooter().setListening(listening);
        // Set the listening as soon as the QS fragment starts listening regardless of the expansion,
        // so it will update the current brightness before the slider is visible.
        setBrightnessListening(listening);
    }

    public void setBrightnessListening(boolean listening) {
        if (listening) {
        if (listening) {
            mBrightnessController.registerCallbacks();
            mBrightnessController.registerCallbacks();
        } else {
        } else {
            mBrightnessController.unregisterCallbacks();
            mBrightnessController.unregisterCallbacks();
        }
        }
    }
    }
    }


    public void refreshAllTiles() {
    public void refreshAllTiles() {
        mBrightnessController.checkRestrictionAndSetEnabled();
        mBrightnessController.checkRestrictionAndSetEnabled();
+5 −3
Original line number Original line Diff line number Diff line
@@ -460,7 +460,7 @@ public class BrightnessController implements ToggleSlider.Listener {


    private void animateSliderTo(int target) {
    private void animateSliderTo(int target) {
        if (!mControlValueInitialized) {
        if (!mControlValueInitialized) {
            // Don't animate the first value since it's default state isn't meaningful to users.
            // Don't animate the first value since its default state isn't meaningful to users.
            mControl.setValue(target);
            mControl.setValue(target);
            mControlValueInitialized = true;
            mControlValueInitialized = true;
        }
        }
@@ -473,7 +473,9 @@ public class BrightnessController implements ToggleSlider.Listener {
            mControl.setValue((int) animation.getAnimatedValue());
            mControl.setValue((int) animation.getAnimatedValue());
            mExternalChange = false;
            mExternalChange = false;
        });
        });
        mSliderAnimator.setDuration(SLIDER_ANIMATION_DURATION);
        final long animationDuration = SLIDER_ANIMATION_DURATION * Math.abs(
                mControl.getValue() - target) / GAMMA_SPACE_MAX;
        mSliderAnimator.setDuration(animationDuration);
        mSliderAnimator.start();
        mSliderAnimator.start();
    }
    }