summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSagarMakhar <sagarmakhar@gmail.com>2021-10-24 17:39:47 +0000
committeralk3pInjection <webmaster@raspii.tech>2022-02-18 09:36:24 +0800
commit8b3f5e3eab4e19ee8d9de9af8e0d0f6a70e6e10e (patch)
treec4957d8a14f779a8b56b8ad0396e976d65005199
parent45c5b77da5cf3f470deaf3e5e86b635544158030 (diff)
SystemUI: Add auto brightness button in QS brightness slider
[ghostrider-reborn] - Stripped from commit "Port brightness slider changes" to include only auto brightness icon, without runtime toggle - Change button color depending on state - Update off state icon from Amartya (@ yukiscape) - Minor refinements Original commit: [SQUASH] SystemUI: Port brightness slider changes Includes: - Brightness slider on footer - Auto brightness icon - Dropped + - buttons Squashed commit of the following: Author: SagarMakhar <sagarmakhar@gmail.com> Date: Sat Aug 21 13:26:11 2021 +0000 Quick QS brightness slider [1/2] Change-Id: I34e3e470177f23c5deb9fd5187991d09b207576a Signed-off-by: SagarMakhar <sagarmakhar@gmail.com> Author: SagarMakhar <sagarmakhar@gmail.com> Date: Thu Oct 8 19:49:58 2020 +0000 Fix brightness slider position after coming from landscape to portrait - Fix toggle vs position behavior on first boot - Fix position stucked in bottom after coming from landscape Change-Id: I611b0643ba3b5eabd08f52f8ca3b6b6513ecda1e Signed-off-by: SagarMakhar <sagarmakhar@gmail.com> Author: maxwen <max.weninger@gmail.com> Date: Mon Nov 19 12:37:01 2018 +0000 base: SystemUI: add tuner prefs for QS brightness buttons [1/2] * Add option for showing Auto brightness icon * Add option for showing brightness increase/decrease buttons * Citrus-CAF edits: Move options to CustomSquash * Squashed commits from: omnirom/android_frameworks_base@f26575a omnirom/android_frameworks_base@0c49a08 omnirom/android_frameworks_base@0382757 * Wight554: Add missing BrightnessDialog checks Signed-off-by: Adarsh-MR <adarshmr1998@gmail.com> Co-authored-by: Adarsh-MR <adarshmr1998@gmail.com> Signed-off-by: Vol Zhdanov <wight554@gmail.com> Signed-off-by: Shubham Singh <coolsks94@gmail.com> Signed-off-by: SagarMakhar <sagarmakhar@gmail.com> Change-Id: Ie24ebcc0fc7c0bb98411c77b29a2bd427302cdff Signed-off-by: SagarMakhar <sagarmakhar@gmail.com> Author: ezio84 <brabus84@gmail.com> Date: Tue Nov 20 23:51:33 2018 +0100 Refresh QS brightness icon and improve its touch area and padding Signed-off-by: xyyx <xyyx@mail.ru> Change-Id: I156940dd74df1f4bcdb5f407f1e702879821c326 Signed-off-by: SagarMakhar <sagarmakhar@gmail.com> Author: Alex Cruz <alex@dirtyunicorns.com> Date: Fri Nov 23 19:35:53 2018 +0100 Use brightness slider better values also for Settings brightness slider Change-Id: I4914213e59dd73f621b1a093f07ee192c81806c5 Signed-off-by: SagarMakhar <sagarmakhar@gmail.com> Author: ezio84 <brabus84@gmail.com> Date: Thu Nov 22 22:33:10 2018 +0100 Brightness slider + - buttons: use more granular values + - 10 was too much, we have the slider to quickly switch from low to high brightness or viceversa. With + - 2 we also avoid unwanted too fast slider movements Change-Id: I849956d75af37d47f6ab463a282bd4ad10098264 Signed-off-by: SagarMakhar <sagarmakhar@gmail.com> Author: Alex Cruz <alex@dirtyunicorns.com> Date: Thu Nov 15 23:16:45 2018 -0600 Multi-User fixes for brightness slider mod Previously this wasn't working in guest mode or in any multi- user accounts. While most don't care about this, this is just janky for our stuff not to work in these situations. Change-Id: Ic1ae93d2f4ccd023bd4ec4ed2b6edd9243f49e6a Signed-off-by: SagarMakhar <sagarmakhar@gmail.com> Author: Giuseppe Maggio <jertlokk@gmail.com> Date: Wed Nov 14 04:22:01 2018 +0100 base: Adapt custom brightness actions from QSPanel to BrightnessDialog This commit fixes the + and - controls under Settings > Display > Brightness. Change-Id: I9f8bd62e51b05f5166135b58b3d112bf155d6fc5 Signed-off-by: SagarMakhar <sagarmakhar@gmail.com> Author: ezio84 <brabus84@gmail.com> Date: Mon Nov 12 22:10:15 2018 +0100 Bottom brightness slider fixes and improvements - fix buttons for automatic mode P brightness management is different from O, now we must send the SCREEN_BRIGHTNESS value, then BrightnessUtils will convert it and the controller will set the level according to the set brightness mode - use ImageButton instead of ImageView to avoid buttons scaling when showing the brightness mirror - use + and - as icons for the slider buttons Change-Id: I1f7d35746e8907f1db202e6c13ac43e8a71aa043 Signed-off-by: SagarMakhar <sagarmakhar@gmail.com> Author: PMS22 <pratham220399@gmail.com> Date: Sun Apr 22 16:51:08 2018 +0000 Brightness slider: Vibrate after a long press - A small haptic feedback after long pressing feels good Change-Id: I1058bbcf24bbccaeeebb3f547905860552bd1131 Signed-off-by: SagarMakhar <sagarmakhar@gmail.com> Author: PMS22 <prathams99@rediff.com> Date: Sun May 13 05:56:11 2018 +0000 Brightness Buttons: Improve touch area - With 537fba7 there could be more button area to be used. But by increasing the width of the drawables, its possible to use even more area. Thanks to ezio84 for the new drawables (centered image in vector) Change-Id: I7d18569d364f3e1f756a1935895c02aab7a2dc4d Signed-off-by: SagarMakhar <sagarmakhar@gmail.com> Author: ezio84 <brabus84@gmail.com> Date: Wed Nov 8 11:36:53 2017 +0100k Footer brightness slider: Rework and improvements Change-Id: Ia2343d78b62323f9757ccb4b2ed740851791eef7 Signed-off-by: SagarMakhar <sagarmakhar@gmail.com> Author: Alex Cruz <du.alexcruz@gmail.com> Date: Sun Nov 5 21:16:22 2017 -0500 Make use of the brightness slider buttons Introduced in the commit below were two buttons that were used to mirror the Oxygen OS look. They did absolutely nothing until now. https://github.com/DirtyUnicorns/android_frameworks_base/commit/7f567fde01da0d313d123d711afa915cb05e4ee8 This works in two ways, single clicks and long clicks Single click = decreases and increases the brightness in intervals of 10 Long click = sets the brightness to low or high depending on which side you pick - Check for auto brightness mode and disable it if enabled before performing actions Thanks to xdnax, ezio84 and Thecrazyskull for the idea/suggestions Change-Id: I3267439145a9d2bbc16cb6c55586a7403472381c Signed-off-by: SagarMakhar <sagarmakhar@gmail.com> Author: JBCDroid2 <jonathan.lyndo@outlook.com> Date: Wed Nov 1 10:50:14 2017 -0400 Rework auto brightness implementation Change-Id: I111501430dd143dac4b90667453b5ebee09d0bbb Signed-off-by: SagarMakhar <sagarmakhar@gmail.com> Author: jhenrique09 <jhenrique09.mcz@hotmail.com> Date: Fri Oct 20 12:38:44 2017 -0200 Update paddings for Brightness control on footer Change-Id: I1ab302f9e8740cb8a229182249fb46dc929a7fa2 Signed-off-by: Shubham Singh <coolsks94@gmail.com> Signed-off-by: SagarMakhar <sagarmakhar@gmail.com> Author: SpiritCroc <spiritcroc@gmail.com> Date: Mon Oct 31 10:55:05 2016 +0100 Fix automatic brightness QS toggle icon Change-Id: Iedcc7b3f43f758664629bc66b12f22cff0059f8f Signed-off-by: SagarMakhar <sagarmakhar@gmail.com> Author: maxwen <max.weninger@gmail.com> Date: Sun Jan 3 11:52:48 2016 +0530 Add auto brightness toggle to Quick Settings - Not a new tile, just a small icon/toggle beside the brightness slider Change-Id: I99a39156f931943e98d539a07046698c16361d07 Signed-off-by: SagarMakhar <sagarmakhar@gmail.com> Author: maxwen <max.weninger@gmail.com> Date: Tue Apr 3 18:10:05 2018 +0200 base: SystemUI: add pref for qs brightness slider position (1/2) Change-Id: I5dfb7170b7d9f3328f9ab0a997135dc4db4cd3bf Signed-off-by: xyyx <xyyx@mail.ru> Signed-off-by: Shubham Singh <coolsks94@gmail.com> Signed-off-by: SagarMakhar <sagarmakhar@gmail.com> Author: SagarMakhar <sagarmakhar@gmail.com> Date: Sun Sep 15 18:15:58 2019 +0000 Revert "Remove unused auto brightness drawables." This reverts commit 1f2484b2f790b2f1cd80bda12d75c263331314a6. Signed-off-by: Arghya Chanda <arghyac35@gmail.com> Signed-off-by: SagarMakhar <sagarmakhar@gmail.com> Change-Id: Ic2a9fe9f999c03be4e73be9ec8a923cea4970819 Signed-off-by: SagarMakhar <sagarmakhar@gmail.com> Signed-off-by: SagarMakhar <sagarmakhar@gmail.com> Signed-off-by: Genkzsz11 <genkzsz11@gmail.com> idoybh (YAAP): Removed stupid QQS slider (It just takes it away form the thumb and serves no real purpose) Also minor improvement to some code Co-authored-by: maxwen <max.weninger@gmail.com> Co-authored-by: ezio84 <brabus84@gmail.com> Co-authored-by: Adithya R <gh0strider.2k18.reborn@gmail.com> Change-Id: I2b99460e31aad87a3cabbb19c61ed54f7817ff19
-rw-r--r--packages/SystemUI/res/drawable/bg_qs_brightness_auto_off.xml22
-rw-r--r--packages/SystemUI/res/drawable/bg_qs_brightness_auto_on.xml22
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_brightness_auto_off.xml28
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_brightness_auto_on.xml26
-rw-r--r--packages/SystemUI/res/layout/quick_settings_brightness_dialog.xml19
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessController.java49
-rw-r--r--packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessDialog.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSlider.java10
-rw-r--r--packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSliderView.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java1
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java31
12 files changed, 206 insertions, 11 deletions
diff --git a/packages/SystemUI/res/drawable/bg_qs_brightness_auto_off.xml b/packages/SystemUI/res/drawable/bg_qs_brightness_auto_off.xml
new file mode 100644
index 000000000000..36a1cacb6153
--- /dev/null
+++ b/packages/SystemUI/res/drawable/bg_qs_brightness_auto_off.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2021 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.
+ -->
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+ <corners android:radius="24dp" />
+ <solid android:color="?attr/offStateColor" />
+ <size android:width="48dp" android:height="48dp" />
+</shape>
diff --git a/packages/SystemUI/res/drawable/bg_qs_brightness_auto_on.xml b/packages/SystemUI/res/drawable/bg_qs_brightness_auto_on.xml
new file mode 100644
index 000000000000..7e1a9a0d282f
--- /dev/null
+++ b/packages/SystemUI/res/drawable/bg_qs_brightness_auto_on.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2021 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.
+ -->
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+ <corners android:radius="24dp" />
+ <solid android:color="?android:attr/colorAccent" />
+ <size android:width="48dp" android:height="48dp" />
+</shape>
diff --git a/packages/SystemUI/res/drawable/ic_qs_brightness_auto_off.xml b/packages/SystemUI/res/drawable/ic_qs_brightness_auto_off.xml
new file mode 100644
index 000000000000..4823216e91e2
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_brightness_auto_off.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2014 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="22dp"
+ android:height="22dp"
+ android:viewportWidth="22"
+ android:viewportHeight="22"
+ android:tint="?android:attr/textColorPrimary">
+
+ <path
+ android:pathData="M 19.31 8 L 19.31 3.31 L 14.62 3.31 L 11.31 0 L 8 3.31 L 3.31 3.31 L 3.31 8 L 0 11.31 L 3.31 14.62 L 3.31 19.31 L 8 19.31 L 11.31 22.62 L 14.62 19.31 L 19.31 19.31 L 19.31 14.62 L 22.62 11.31 Z M 2.83 11.31 L 5.31 8.83 L 5.31 5.31 L 8.83 5.31 L 11.31 2.83 L 13.79 5.31 L 15.68 5.31 L 12.93 8.06 L 12.31 6.31 L 10.31 6.31 L 7.9 13.09 L 5.31 15.68 L 5.31 13.79 Z M 12.46 11.96 L 11.71 11.96 L 12.28 11.39 Z M 10.68 10.31 L 11.31 8.31 L 11.64 9.31 Z M 17.31 13.79 L 17.31 17.31 L 13.79 17.31 L 11.31 19.79 L 8.83 17.31 L 6.36 17.31 L 8.36 15.31 L 9 15.31 L 9.35 14.31 L 10.35 13.31 L 12.9 13.31 L 13.6 15.31 L 15.5 15.31 L 13.63 10 L 17.31 6.32 L 17.31 8.83 L 19.79 11.31 Z"
+ android:fillColor="#ffffff"
+ android:strokeWidth="1"/>
+</vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_brightness_auto_on.xml b/packages/SystemUI/res/drawable/ic_qs_brightness_auto_on.xml
new file mode 100644
index 000000000000..fd104d099385
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_brightness_auto_on.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2014 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="36.0dip"
+ android:height="48.0dip"
+ android:viewportWidth="36.0"
+ android:viewportHeight="48.0"
+ android:tint="?android:attr/textColorPrimaryInverse">
+
+ <path android:fillColor="#FFFFFFFF"
+ android:pathData="m 17,19 -3.2,9 h 1.9 l 0.7,-2 h 3.2 l 0.7,2 h 1.9 L 19,19 Z M 16.85,24.65 18,21 19.15,24.65 Z M 26,20.69 V 16 H 21.31 L 18,12.69 14.69,16 H 10 v 4.69 L 6.69,24 10,27.31 V 32 h 4.69 L 18,35.31 21.31,32 H 26 V 27.31 L 29.31,24 Z m -2,5.79 V 30 H 20.48 L 18,32.48 15.52,30 H 12 V 26.48 L 9.52,24 12,21.52 V 18 h 3.52 L 18,15.52 20.48,18 H 24 v 3.52 L 26.48,24 Z" />
+</vector>
diff --git a/packages/SystemUI/res/layout/quick_settings_brightness_dialog.xml b/packages/SystemUI/res/layout/quick_settings_brightness_dialog.xml
index e95c6a79733c..f89ccb40ad04 100644
--- a/packages/SystemUI/res/layout/quick_settings_brightness_dialog.xml
+++ b/packages/SystemUI/res/layout/quick_settings_brightness_dialog.xml
@@ -13,20 +13,22 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
- <com.android.systemui.settings.brightness.BrightnessSliderView
+<com.android.systemui.settings.brightness.BrightnessSliderView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/brightness_slider"
android:layout_width="match_parent"
android:layout_height="@dimen/brightness_mirror_height"
android:layout_gravity="center"
android:contentDescription="@string/accessibility_brightness"
+ android:orientation="horizontal"
android:importantForAccessibility="no" >
<com.android.systemui.settings.brightness.ToggleSeekBar
android:id="@+id/slider"
- android:layout_width="match_parent"
+ android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
+ android:layout_weight="1"
android:minHeight="48dp"
android:thumb="@null"
android:background="@null"
@@ -35,4 +37,15 @@
android:progressDrawable="@drawable/brightness_progress_drawable"
android:splitTrack="false"
/>
- </com.android.systemui.settings.brightness.BrightnessSliderView>
+
+ <ImageButton
+ android:id="@+id/brightness_icon"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:background="@drawable/bg_qs_brightness_auto_on"
+ android:src="@drawable/ic_qs_brightness_auto_on"
+ android:contentDescription="@null"
+ android:layout_marginStart="8dp" />
+
+</com.android.systemui.settings.brightness.BrightnessSliderView>
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java
index ae0f5104d20f..29adcf0fa051 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java
@@ -116,7 +116,8 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> {
mBrightnessSlider = mBrightnessSliderFactory.create(getContext(), mView);
mView.setBrightnessView(mBrightnessSlider.getRootView());
- mBrightnessController = brightnessControllerFactory.create(mBrightnessSlider);
+ mBrightnessController = brightnessControllerFactory.create(
+ mBrightnessSlider.getIconView(), mBrightnessSlider);
}
@Override
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 1ad253e7f867..57a7766bccd3 100644
--- a/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessController.java
+++ b/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessController.java
@@ -42,12 +42,15 @@ import android.service.vr.IVrManager;
import android.service.vr.IVrStateCallbacks;
import android.util.Log;
import android.util.MathUtils;
+import android.view.View;
+import android.widget.ImageView;
import com.android.internal.display.BrightnessSynchronizer;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settingslib.RestrictedLockUtilsInternal;
import com.android.systemui.Dependency;
+import com.android.systemui.R;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.settings.CurrentUserTracker;
@@ -59,6 +62,7 @@ public class BrightnessController implements ToggleSlider.Listener {
private static final String TAG = "StatusBar.BrightnessController";
private static final int SLIDER_ANIMATION_DURATION = 3000;
+ private static final int MSG_UPDATE_ICON = 0;
private static final int MSG_UPDATE_SLIDER = 1;
private static final int MSG_ATTACH_LISTENER = 2;
private static final int MSG_DETACH_LISTENER = 3;
@@ -72,6 +76,9 @@ public class BrightnessController implements ToggleSlider.Listener {
private final float mMinimumBacklightForVr;
private final float mMaximumBacklightForVr;
+ private final ImageView mIcon;
+ private boolean mAutomaticAvailable;
+
private final int mDisplayId;
private final Context mContext;
private final ToggleSlider mControl;
@@ -223,6 +230,7 @@ public class BrightnessController implements ToggleSlider.Listener {
Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL,
UserHandle.USER_CURRENT);
mAutomatic = automatic != Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL;
+ mHandler.obtainMessage(MSG_UPDATE_ICON, mAutomatic ? 1 : 0).sendToTarget();
}
};
@@ -261,6 +269,9 @@ public class BrightnessController implements ToggleSlider.Listener {
mExternalChange = true;
try {
switch (msg.what) {
+ case MSG_UPDATE_ICON:
+ updateIcon(mAutomatic);
+ break;
case MSG_UPDATE_SLIDER:
updateSlider(Float.intBitsToFloat(msg.arg1), msg.arg2 != 0);
break;
@@ -282,9 +293,10 @@ public class BrightnessController implements ToggleSlider.Listener {
}
};
- public BrightnessController(Context context, ToggleSlider control,
+ public BrightnessController(Context context, ImageView icon, ToggleSlider control,
BroadcastDispatcher broadcastDispatcher) {
mContext = context;
+ mIcon = icon;
mControl = control;
mControl.setMax(GAMMA_SPACE_MAX);
mBackgroundHandler = new Handler((Looper) Dependency.get(Dependency.BG_LOOPER));
@@ -307,6 +319,26 @@ public class BrightnessController implements ToggleSlider.Listener {
mDisplayManager = context.getSystemService(DisplayManager.class);
mVrManager = IVrManager.Stub.asInterface(ServiceManager.getService(
Context.VR_SERVICE));
+ mAutomaticAvailable = context.getResources().getBoolean(
+ com.android.internal.R.bool.config_automatic_brightness_available);
+
+ if (mIcon != null) {
+ if (mAutomaticAvailable) {
+ mIcon.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ int newMode = mAutomatic ? Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL : Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
+ setMode(newMode);
+ }
+ });
+ }
+ }
+ }
+
+ private void setMode(int mode) {
+ Settings.System.putIntForUser(mContext.getContentResolver(),
+ Settings.System.SCREEN_BRIGHTNESS_MODE, mode,
+ mUserTracker.getCurrentUserId());
}
public void addStateChangedCallback(BrightnessStateChangeCallback cb) {
@@ -389,6 +421,17 @@ public class BrightnessController implements ToggleSlider.Listener {
mDisplayManager.setTemporaryBrightness(mDisplayId, brightness);
}
+ private void updateIcon(boolean automatic) {
+ if (mIcon != null) {
+ mIcon.setImageResource(automatic ?
+ R.drawable.ic_qs_brightness_auto_on :
+ R.drawable.ic_qs_brightness_auto_off);
+ mIcon.setBackgroundResource(automatic ?
+ R.drawable.bg_qs_brightness_auto_on :
+ R.drawable.bg_qs_brightness_auto_off);
+ }
+ }
+
private void updateVrMode(boolean isEnabled) {
if (mIsVrModeEnabled != isEnabled) {
mIsVrModeEnabled = isEnabled;
@@ -458,8 +501,8 @@ public class BrightnessController implements ToggleSlider.Listener {
}
/** Create a {@link BrightnessController} */
- public BrightnessController create(ToggleSlider toggleSlider) {
- return new BrightnessController(mContext, toggleSlider, mBroadcastDispatcher);
+ public BrightnessController create(ImageView icon, ToggleSlider toggleSlider) {
+ return new BrightnessController(mContext, icon, toggleSlider, mBroadcastDispatcher);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessDialog.java b/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessDialog.java
index 0f97e43c466b..220f766a73ee 100644
--- a/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessDialog.java
+++ b/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessDialog.java
@@ -76,7 +76,8 @@ public class BrightnessDialog extends Activity {
controller.init();
frame.addView(controller.getRootView(), MATCH_PARENT, WRAP_CONTENT);
- mBrightnessController = new BrightnessController(this, controller, mBroadcastDispatcher);
+ mBrightnessController = new BrightnessController(this, controller.getIconView(),
+ controller, mBroadcastDispatcher);
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSlider.java b/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSlider.java
index 0ff6216ea87e..50ae7d1d6ba1 100644
--- a/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSlider.java
+++ b/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSlider.java
@@ -21,6 +21,7 @@ import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.ImageView;
import android.widget.SeekBar;
import androidx.annotation.Nullable;
@@ -51,6 +52,7 @@ public class BrightnessSlider extends ViewController<BrightnessSliderView> imple
private BrightnessMirrorController mMirrorController;
private boolean mTracking;
private final FalsingManager mFalsingManager;
+ private ImageView mIconView;
private final Gefingerpoken mOnInterceptListener = new Gefingerpoken() {
@Override
@@ -71,8 +73,10 @@ public class BrightnessSlider extends ViewController<BrightnessSliderView> imple
BrightnessSlider(
BrightnessSliderView brightnessSliderView,
+ ImageView icon,
FalsingManager falsingManager) {
super(brightnessSliderView);
+ mIconView = icon;
mFalsingManager = falsingManager;
}
@@ -83,6 +87,9 @@ public class BrightnessSlider extends ViewController<BrightnessSliderView> imple
return mView;
}
+ public ImageView getIconView() {
+ return mIconView;
+ }
@Override
protected void onViewAttached() {
@@ -240,7 +247,8 @@ public class BrightnessSlider extends ViewController<BrightnessSliderView> imple
int layout = getLayout();
BrightnessSliderView root = (BrightnessSliderView) LayoutInflater.from(context)
.inflate(layout, viewRoot, false);
- return new BrightnessSlider(root, mFalsingManager);
+ ImageView icon = (ImageView) root.findViewById(R.id.brightness_icon);
+ return new BrightnessSlider(root, icon, mFalsingManager);
}
/** Get the layout to inflate based on what slider to use */
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 15aa2b730adf..a8a79cf5e22f 100644
--- a/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSliderView.java
+++ b/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSliderView.java
@@ -25,6 +25,7 @@ import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.FrameLayout;
+import android.widget.LinearLayout;
import android.widget.SeekBar.OnSeekBarChangeListener;
import androidx.annotation.NonNull;
@@ -38,7 +39,7 @@ import com.android.systemui.R;
* {@code FrameLayout} used to show and manipulate a {@link ToggleSeekBar}.
*
*/
-public class BrightnessSliderView extends FrameLayout {
+public class BrightnessSliderView extends LinearLayout {
@NonNull
private ToggleSeekBar mSlider;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
index 85b39ee94b03..133b00164337 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
@@ -1308,6 +1308,7 @@ public class StatusBar extends SystemUI implements DemoMode,
.withDefault(this::createDefaultQSFragment)
.build());
mBrightnessMirrorController = new BrightnessMirrorController(
+ mContext,
mNotificationShadeWindowView,
mNotificationPanelViewController,
mNotificationShadeDepthControllerLazy.get(),
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java
index 1e5251196379..de2c6dd4d65f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java
@@ -18,12 +18,16 @@ package com.android.systemui.statusbar.policy;
import android.annotation.NonNull;
import android.content.Context;
+import android.content.ContentResolver;
import android.content.res.Resources;
+import android.os.UserHandle;
+import android.provider.Settings;
import android.util.ArraySet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
+import android.widget.ImageView;
import com.android.systemui.R;
import com.android.systemui.settings.brightness.BrightnessSlider;
@@ -53,11 +57,15 @@ public class BrightnessMirrorController
private int mBrightnessMirrorBackgroundPadding;
private int mLastBrightnessSliderWidth = -1;
- public BrightnessMirrorController(NotificationShadeWindowView statusBarWindow,
+ private ImageView mIcon;
+ private Context mContext;
+
+ public BrightnessMirrorController(Context context, NotificationShadeWindowView statusBarWindow,
NotificationPanelViewController notificationPanelViewController,
NotificationShadeDepthController notificationShadeDepthController,
BrightnessSlider.Factory factory,
@NonNull Consumer<Boolean> visibilityCallback) {
+ mContext = context;
mStatusBarWindow = statusBarWindow;
mToggleSliderFactory = factory;
mBrightnessMirror = statusBarWindow.findViewById(R.id.brightness_mirror_container);
@@ -68,9 +76,12 @@ public class BrightnessMirrorController
mBrightnessMirror.setVisibility(View.INVISIBLE);
});
mVisibilityCallback = visibilityCallback;
+ mIcon = (ImageView) mBrightnessMirror.findViewById(R.id.brightness_icon);
+ mIcon.setVisibility(View.VISIBLE);
}
public void showMirror() {
+ updateIcon();
mBrightnessMirror.setVisibility(View.VISIBLE);
mVisibilityCallback.accept(true);
mNotificationPanel.setPanelAlpha(0, true /* animate */);
@@ -177,4 +188,22 @@ public class BrightnessMirrorController
public interface BrightnessMirrorListener {
void onBrightnessMirrorReinflated(View brightnessMirror);
}
+
+ private void updateIcon() {
+ if (mIcon == null) {
+ return;
+ }
+ // enable the auto brightness icon
+ mIcon = (ImageView) mBrightnessMirror.findViewById(R.id.brightness_icon);
+ boolean automatic = Settings.System.getIntForUser(mContext.getContentResolver(),
+ Settings.System.SCREEN_BRIGHTNESS_MODE,
+ Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL,
+ UserHandle.USER_CURRENT) != Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL;
+ mIcon.setImageResource(automatic ?
+ R.drawable.ic_qs_brightness_auto_on :
+ R.drawable.ic_qs_brightness_auto_off);
+ mIcon.setBackgroundResource(automatic ?
+ R.drawable.bg_qs_brightness_auto_on :
+ R.drawable.bg_qs_brightness_auto_off);
+ }
}