summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/dagger/ReferenceSystemUIModule.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessController.java45
-rw-r--r--packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSliderController.java38
-rw-r--r--packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSliderView.java18
-rw-r--r--packages/SystemUI/src/com/android/systemui/settings/brightness/ToggleSeekBar.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/settings/brightness/dagger/BrightnessSliderModule.kt36
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/settings/BrightnessSliderControllerKosmos.kt2
7 files changed, 107 insertions, 38 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/ReferenceSystemUIModule.java b/packages/SystemUI/src/com/android/systemui/dagger/ReferenceSystemUIModule.java
index 1fc549469b55..3050cba12f09 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/ReferenceSystemUIModule.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/ReferenceSystemUIModule.java
@@ -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,
diff --git a/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessController.java b/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessController.java
index 90d27f4b33e9..c65c3b854b82 100644
--- a/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessController.java
+++ b/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessController.java
@@ -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);
}
diff --git a/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSliderController.java b/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSliderController.java
index 503d0bfbc301..02eca74fd751 100644
--- a/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSliderController.java
+++ b/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSliderController.java
@@ -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,16 +249,20 @@ public class BrightnessSliderController extends ViewController<BrightnessSliderV
return mView.isVisibleToUser();
}
+ protected void handleSliderProgressChange(SeekBar seekBar, int progress, boolean fromUser) {
+ if (mListener != null) {
+ mListener.onChanged(mTracking, progress, false);
+ if (fromUser) {
+ mBrightnessSliderHapticPlugin.onProgressChanged(progress, true);
+ }
+ }
+ }
+
private final SeekBar.OnSeekBarChangeListener mSeekListener =
new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
- if (mListener != null) {
- mListener.onChanged(mTracking, progress, false);
- if (fromUser) {
- mBrightnessSliderHapticPlugin.onProgressChanged(progress, true);
- }
- }
+ handleSliderProgressChange(seekBar, progress, fromUser);
}
@Override
@@ -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;
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSliderView.java b/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSliderView.java
index a39d25a5ef30..550ac62c0bde 100644
--- a/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSliderView.java
+++ b/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSliderView.java
@@ -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);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/settings/brightness/ToggleSeekBar.java b/packages/SystemUI/src/com/android/systemui/settings/brightness/ToggleSeekBar.java
index c241f2165c8f..a0985fc61b07 100644
--- a/packages/SystemUI/src/com/android/systemui/settings/brightness/ToggleSeekBar.java
+++ b/packages/SystemUI/src/com/android/systemui/settings/brightness/ToggleSeekBar.java
@@ -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();
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/settings/brightness/dagger/BrightnessSliderModule.kt b/packages/SystemUI/src/com/android/systemui/settings/brightness/dagger/BrightnessSliderModule.kt
new file mode 100644
index 000000000000..fbe442eb4b5e
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/settings/brightness/dagger/BrightnessSliderModule.kt
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.settings.brightness.dagger
+
+import com.android.systemui.settings.brightness.BrightnessController
+import com.android.systemui.settings.brightness.BrightnessSliderController
+import dagger.Binds
+import dagger.Module
+
+@Module
+abstract class BrightnessSliderModule {
+
+ @Binds
+ abstract fun bindBrightnessSliderControllerFactory(
+ factory: BrightnessSliderController.BrightnessSliderControllerFactory
+ ): BrightnessSliderController.Factory
+
+ @Binds
+ abstract fun bindBrightnessControllerFactory(
+ factory: BrightnessController.BrightnessControllerFactory
+ ): BrightnessController.Factory
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/settings/BrightnessSliderControllerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/settings/BrightnessSliderControllerKosmos.kt
index 5d146fbffaca..3d45a51b9f3b 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/settings/BrightnessSliderControllerKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/settings/BrightnessSliderControllerKosmos.kt
@@ -29,7 +29,7 @@ import com.android.systemui.util.time.systemClock
/** This factory creates empty mocks. */
var Kosmos.brightnessSliderControllerFactory by
Kosmos.Fixture<BrightnessSliderController.Factory> {
- BrightnessSliderController.Factory(
+ BrightnessSliderController.BrightnessSliderControllerFactory(
falsingManager,
uiEventLogger,
vibratorHelper,