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

Commit 581bcc15 authored by Vadym Omelnytskyi's avatar Vadym Omelnytskyi Committed by Android (Google) Code Review
Browse files

Merge "Brightness Slider: changes for extension" into main

parents 8f07875b 2484b2cb
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -61,6 +61,7 @@ import com.android.systemui.scene.SceneContainerFrameworkModule;
import com.android.systemui.screenshot.ReferenceScreenshotModule;
import com.android.systemui.settings.MultiUserUtilsModule;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.settings.brightness.dagger.BrightnessSliderModule;
import com.android.systemui.shade.NotificationShadeWindowControllerImpl;
import com.android.systemui.shade.ShadeModule;
import com.android.systemui.startable.Dependencies;
@@ -124,6 +125,7 @@ import javax.inject.Named;
        AccessibilityRepositoryModule.class,
        AospPolicyModule.class,
        BatterySaverModule.class,
        BrightnessSliderModule.class,
        CentralSurfacesModule.class,
        ClipboardOverlayOverrideModule.class,
        CollapsedStatusBarFragmentStartableModule.class,
+27 −18
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@ import static com.android.settingslib.display.BrightnessUtils.convertGammaToLine
import static com.android.settingslib.display.BrightnessUtils.convertLinearToGammaFloat;

import android.animation.ValueAnimator;
import android.annotation.NonNull;
import android.content.Context;
import android.database.ContentObserver;
import android.hardware.display.BrightnessInfo;
@@ -42,6 +41,7 @@ import android.service.vr.IVrStateCallbacks;
import android.util.Log;
import android.util.MathUtils;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.android.internal.annotations.VisibleForTesting;
@@ -72,19 +72,19 @@ import java.util.concurrent.Executor;

public class BrightnessController implements ToggleSlider.Listener, MirroredBrightnessController {
    private static final String TAG = "CentralSurfaces.BrightnessController";
    private static final int SLIDER_ANIMATION_DURATION = 3000;
    protected static final int SLIDER_ANIMATION_DURATION = 3000;

    private static final int MSG_UPDATE_SLIDER = 1;
    private static final int MSG_ATTACH_LISTENER = 2;
    private static final int MSG_DETACH_LISTENER = 3;
    private static final int MSG_VR_MODE_CHANGED = 4;
    protected static final int MSG_UPDATE_SLIDER = 1;
    protected static final int MSG_ATTACH_LISTENER = 2;
    protected static final int MSG_DETACH_LISTENER = 3;
    protected static final int MSG_VR_MODE_CHANGED = 4;

    private static final Uri BRIGHTNESS_MODE_URI =
    protected static final Uri BRIGHTNESS_MODE_URI =
            Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS_MODE);

    private final int mDisplayId;
    private final Context mContext;
    private final ToggleSlider mControl;
    protected final ToggleSlider mControl;
    private final DisplayManager mDisplayManager;
    private final UserTracker mUserTracker;
    private final DisplayTracker mDisplayTracker;
@@ -109,10 +109,10 @@ public class BrightnessController implements ToggleSlider.Listener, MirroredBrig
    private boolean mTrackingTouch = false; // Brightness adjusted via touch events.
    private volatile boolean mIsVrModeEnabled;
    private boolean mListening;
    private boolean mExternalChange;
    protected boolean mExternalChange;
    private boolean mControlValueInitialized;
    private float mBrightnessMin = PowerManager.BRIGHTNESS_MIN;
    private float mBrightnessMax = PowerManager.BRIGHTNESS_MAX;
    protected float mBrightnessMin = PowerManager.BRIGHTNESS_MIN;
    protected float mBrightnessMax = PowerManager.BRIGHTNESS_MAX;
    private boolean mIsBrightnessOverriddenByWindow = false;

    private ValueAnimator mSliderAnimator;
@@ -253,10 +253,8 @@ public class BrightnessController implements ToggleSlider.Listener, MirroredBrig
            if (info == null) {
                return;
            }
            mBrightnessMax = info.brightnessMaximum;
            mBrightnessMin = info.brightnessMinimum;
            mIsBrightnessOverriddenByWindow = info.isBrightnessOverrideByWindow;

            updateBrightnessInfo(info);
            // Value is passed as intbits, since this is what the message takes.
            final int valueAsIntBits = Float.floatToIntBits(info.brightness);
            mMainHandler.obtainMessage(MSG_UPDATE_SLIDER, valueAsIntBits,
@@ -264,6 +262,12 @@ public class BrightnessController implements ToggleSlider.Listener, MirroredBrig
        }
    };

    protected void updateBrightnessInfo(BrightnessInfo info) {
        mBrightnessMax = info.brightnessMaximum;
        mBrightnessMin = info.brightnessMinimum;
        mIsBrightnessOverriddenByWindow = info.isBrightnessOverrideByWindow;
    }

    private final IVrStateCallbacks mVrStateCallbacks = new IVrStateCallbacks.Stub() {
        @Override
        public void onVrStateChanged(boolean enabled) {
@@ -301,7 +305,7 @@ public class BrightnessController implements ToggleSlider.Listener, MirroredBrig
        }
    };

    private final Handler mMainHandler;
    protected final Handler mMainHandler;

    private final UserTracker.Callback mUserChangedCallback =
            new UserTracker.Callback() {
@@ -459,7 +463,7 @@ public class BrightnessController implements ToggleSlider.Listener, MirroredBrig
        return !mAutomatic && !mTrackingTouch;
    }

    private void updateSlider(float brightnessValue, boolean inVrMode) {
    protected void updateSlider(float brightnessValue, boolean inVrMode) {
        final float min = mBrightnessMin;
        final float max = mBrightnessMax;

@@ -502,12 +506,17 @@ public class BrightnessController implements ToggleSlider.Listener, MirroredBrig
        mSliderAnimator.start();
    }


    /** Factory interface for creating a {@link BrightnessController}. */
    public interface Factory {
        @NonNull
        BrightnessController create(ToggleSlider toggleSlider);
    }

    /** Factory for creating a {@link BrightnessController}. */
    @AssistedFactory
    public interface Factory {
    public interface BrightnessControllerFactory extends Factory {
        /** Create a {@link BrightnessController} */
        @NonNull
        BrightnessController create(ToggleSlider toggleSlider);
    }

+28 −10
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.SeekBar;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.android.internal.logging.UiEventLogger;
@@ -42,6 +43,7 @@ import com.android.systemui.statusbar.VibratorHelper;
import com.android.systemui.statusbar.policy.BrightnessMirrorController;
import com.android.systemui.util.ViewController;
import com.android.systemui.util.time.SystemClock;

import com.google.android.msdl.domain.MSDLPlayer;

import javax.inject.Inject;
@@ -89,7 +91,7 @@ public class BrightnessSliderController extends ViewController<BrightnessSliderV
        }
    };

    BrightnessSliderController(
    protected BrightnessSliderController(
            BrightnessSliderView brightnessSliderView,
            FalsingManager falsingManager,
            UiEventLogger uiEventLogger,
@@ -247,10 +249,7 @@ public class BrightnessSliderController extends ViewController<BrightnessSliderV
        return mView.isVisibleToUser();
    }

    private final SeekBar.OnSeekBarChangeListener mSeekListener =
            new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
    protected void handleSliderProgressChange(SeekBar seekBar, int progress, boolean fromUser) {
        if (mListener != null) {
            mListener.onChanged(mTracking, progress, false);
            if (fromUser) {
@@ -259,6 +258,13 @@ public class BrightnessSliderController extends ViewController<BrightnessSliderV
        }
    }

    private final SeekBar.OnSeekBarChangeListener mSeekListener =
            new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            handleSliderProgressChange(seekBar, progress, fromUser);
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            mTracking = true;
@@ -289,11 +295,21 @@ public class BrightnessSliderController extends ViewController<BrightnessSliderV
        }
    };

    /** Factory interface for creating a {@link BrightnessSliderController}. */
    public interface Factory {
        @NonNull
        BrightnessSliderController create(
                Context context,
                @Nullable ViewGroup viewRoot);

        int getLayout();
    }

    /**
     * Creates a {@link BrightnessSliderController} with its associated view.
     */
    public static class Factory {

    public static class BrightnessSliderControllerFactory implements Factory {
        private final FalsingManager mFalsingManager;
        private final UiEventLogger mUiEventLogger;
        private final VibratorHelper mVibratorHelper;
@@ -303,7 +319,7 @@ public class BrightnessSliderController extends ViewController<BrightnessSliderV
        private final BrightnessWarningToast mBrightnessWarningToast;

        @Inject
        public Factory(
        public BrightnessSliderControllerFactory(
                FalsingManager falsingManager,
                UiEventLogger uiEventLogger,
                VibratorHelper vibratorHelper,
@@ -328,6 +344,8 @@ public class BrightnessSliderController extends ViewController<BrightnessSliderV
         * @param viewRoot the {@link ViewGroup} that will contain the hierarchy. The inflated
         *                 hierarchy will not be attached
         */
        @Override
        @NonNull
        public BrightnessSliderController create(
                Context context,
                @Nullable ViewGroup viewRoot) {
@@ -345,7 +363,7 @@ public class BrightnessSliderController extends ViewController<BrightnessSliderV
        }

        /** Get the layout to inflate based on what slider to use */
        private int getLayout() {
        public int getLayout() {
            return R.layout.quick_settings_brightness_dialog;
        }
    }
+11 −7
Original line number Diff line number Diff line
@@ -43,12 +43,12 @@ import java.util.Collections;
public class BrightnessSliderView extends FrameLayout {

    @NonNull
    private ToggleSeekBar mSlider;
    protected ToggleSeekBar mSlider;
    private DispatchTouchEventListener mListener;
    private Gefingerpoken mOnInterceptListener;
    @Nullable
    private Drawable mProgressDrawable;
    private float mScale = 1f;
    protected Drawable mProgressDrawable;
    protected float mScale = 1f;
    private final Rect mSystemGestureExclusionRect = new Rect();

    public BrightnessSliderView(Context context) {
@@ -65,6 +65,10 @@ public class BrightnessSliderView extends FrameLayout {
        super.onFinishInflate();
        setLayerType(LAYER_TYPE_HARDWARE, null);

        initBrightnessViewComponents();
    }

    protected void initBrightnessViewComponents() {
        mSlider = requireViewById(R.id.slider);
        mSlider.setAccessibilityLabel(getContentDescription().toString());
        setBoundaryOffset();
@@ -81,7 +85,7 @@ public class BrightnessSliderView extends FrameLayout {
        }
    }

    private void setBoundaryOffset() {
    protected void setBoundaryOffset() {
         //  BrightnessSliderView uses hardware layer; if the background of its children exceed its
         //  boundary, it'll be cropped. We need to expand its boundary so that the background of
         //  ToggleSeekBar (i.e. the focus state) can be correctly rendered.
@@ -131,7 +135,7 @@ public class BrightnessSliderView extends FrameLayout {
     * @param admin
     * @see ToggleSeekBar#setEnforcedAdmin
     */
    void setAdminBlocker(ToggleSeekBar.AdminBlocker blocker) {
    protected void setAdminBlocker(ToggleSeekBar.AdminBlocker blocker) {
        mSlider.setAdminBlocker(blocker);
    }

@@ -211,7 +215,7 @@ public class BrightnessSliderView extends FrameLayout {
        }
    }

    private void applySliderScale() {
    protected void applySliderScale() {
        if (mProgressDrawable != null) {
            final Rect r = mProgressDrawable.getBounds();
            int height = (int) (mProgressDrawable.getIntrinsicHeight() * mScale);
@@ -229,7 +233,7 @@ public class BrightnessSliderView extends FrameLayout {
     * Interface to attach a listener for {@link View#dispatchTouchEvent}.
     */
    @FunctionalInterface
    interface DispatchTouchEventListener {
    public interface DispatchTouchEventListener {
        boolean onDispatchTouchEvent(MotionEvent ev);
    }
}
+2 −2
Original line number Diff line number Diff line
@@ -85,12 +85,12 @@ public class ToggleSeekBar extends SeekBar {
        }
    }

    void setAdminBlocker(AdminBlocker blocker) {
    public void setAdminBlocker(AdminBlocker blocker) {
        mAdminBlocker = blocker;
        setEnabled(blocker == null);
    }

    interface AdminBlocker {
    public interface AdminBlocker {
        boolean block();
    }
}
Loading