From eb2bf7d188b28096ae2b933483c121256c0d04ee Mon Sep 17 00:00:00 2001 From: yuemingw Date: Tue, 23 Jan 2018 16:05:08 +0000 Subject: [PATCH] Block brightness slider quick settings when DISALLOW_CONFIG_BRIGHTNESS is set. Test: manual Bug: 67628870 Change-Id: I30af889e7758c7ea30fa796138d4ca3fefc6e8e9 --- .../SystemUI/src/com/android/systemui/qs/QSPanel.java | 1 + .../android/systemui/settings/BrightnessController.java | 14 ++++++++++++++ .../com/android/systemui/settings/ToggleSeekBar.java | 17 +++++++++++++++++ .../com/android/systemui/settings/ToggleSliderView.java | 7 +++++++ 4 files changed, 39 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java index 8f41084b2b2c..310e12e7945b 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java @@ -317,6 +317,7 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne } public void refreshAllTiles() { + mBrightnessController.checkRestrictionAndSetEnabled(); for (TileRecord r : mRecords) { r.tile.refreshState(); } diff --git a/packages/SystemUI/src/com/android/systemui/settings/BrightnessController.java b/packages/SystemUI/src/com/android/systemui/settings/BrightnessController.java index 3db30fcbbe6b..15e92f48890f 100644 --- a/packages/SystemUI/src/com/android/systemui/settings/BrightnessController.java +++ b/packages/SystemUI/src/com/android/systemui/settings/BrightnessController.java @@ -31,6 +31,7 @@ import android.os.PowerManager; import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserHandle; +import android.os.UserManager; import android.provider.Settings; import android.service.vr.IVrManager; import android.service.vr.IVrStateCallbacks; @@ -39,6 +40,7 @@ import android.widget.ImageView; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; +import com.android.settingslib.RestrictedLockUtils; import com.android.systemui.Dependency; import java.util.ArrayList; @@ -384,6 +386,18 @@ public class BrightnessController implements ToggleSlider.Listener { } } + public void checkRestrictionAndSetEnabled() { + mBackgroundHandler.post(new Runnable() { + @Override + public void run() { + ((ToggleSliderView)mControl).setEnforcedAdmin( + RestrictedLockUtils.checkIfRestrictionEnforced(mContext, + UserManager.DISALLOW_CONFIG_BRIGHTNESS, + mUserTracker.getCurrentUserId())); + } + }); + } + private void setMode(int mode) { Settings.System.putIntForUser(mContext.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, mode, diff --git a/packages/SystemUI/src/com/android/systemui/settings/ToggleSeekBar.java b/packages/SystemUI/src/com/android/systemui/settings/ToggleSeekBar.java index 722aba591ea8..8ed4c75e8673 100644 --- a/packages/SystemUI/src/com/android/systemui/settings/ToggleSeekBar.java +++ b/packages/SystemUI/src/com/android/systemui/settings/ToggleSeekBar.java @@ -17,14 +17,21 @@ package com.android.systemui.settings; import android.content.Context; +import android.content.Intent; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.accessibility.AccessibilityNodeInfo; import android.widget.SeekBar; +import com.android.settingslib.RestrictedLockUtils; +import com.android.systemui.Dependency; +import com.android.systemui.plugins.ActivityStarter; + public class ToggleSeekBar extends SeekBar { private String mAccessibilityLabel; + private RestrictedLockUtils.EnforcedAdmin mEnforcedAdmin = null; + public ToggleSeekBar(Context context) { super(context); } @@ -39,6 +46,12 @@ public class ToggleSeekBar extends SeekBar { @Override public boolean onTouchEvent(MotionEvent event) { + if (mEnforcedAdmin != null) { + Intent intent = RestrictedLockUtils.getShowAdminSupportDetailsIntent( + mContext, mEnforcedAdmin); + Dependency.get(ActivityStarter.class).postStartActivityDismissingKeyguard(intent, 0); + return true; + } if (!isEnabled()) { setEnabled(true); } @@ -57,4 +70,8 @@ public class ToggleSeekBar extends SeekBar { info.setText(mAccessibilityLabel); } } + + public void setEnforcedAdmin(RestrictedLockUtils.EnforcedAdmin admin) { + mEnforcedAdmin = admin; + } } diff --git a/packages/SystemUI/src/com/android/systemui/settings/ToggleSliderView.java b/packages/SystemUI/src/com/android/systemui/settings/ToggleSliderView.java index 07b9ec27629f..90744a62677d 100644 --- a/packages/SystemUI/src/com/android/systemui/settings/ToggleSliderView.java +++ b/packages/SystemUI/src/com/android/systemui/settings/ToggleSliderView.java @@ -29,6 +29,7 @@ import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; import android.widget.TextView; +import com.android.settingslib.RestrictedLockUtils; import com.android.systemui.R; import com.android.systemui.statusbar.policy.BrightnessMirrorController; @@ -95,6 +96,12 @@ public class ToggleSliderView extends RelativeLayout implements ToggleSlider { } } + public void setEnforcedAdmin(RestrictedLockUtils.EnforcedAdmin admin) { + mToggle.setEnabled(admin == null); + mSlider.setEnabled(admin == null); + mSlider.setEnforcedAdmin(admin); + } + public void setOnChangedListener(Listener l) { mListener = l; } -- 2.11.0