From f0a60dd2060148e5f7fc915d5ad9c313c0626a79 Mon Sep 17 00:00:00 2001 From: Jason Monk Date: Tue, 30 Jun 2015 10:54:48 -0400 Subject: [PATCH] Don't allow do not disturb when volume restricted Bug: 21642285 Change-Id: I8e31f809506b48855eb90c67727c026deb120af5 --- .../src/com/android/systemui/qs/tiles/DndTile.java | 9 +++++++++ .../systemui/statusbar/policy/ZenModeController.java | 1 + .../systemui/statusbar/policy/ZenModeControllerImpl.java | 9 +++++++++ 3 files changed, 19 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java index 1b74eb6cd3bee..359ed5f0afd00 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java @@ -28,6 +28,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.View.OnAttachStateChangeListener; import android.view.ViewGroup; +import android.widget.Toast; import com.android.internal.logging.MetricsLogger; import com.android.systemui.Prefs; @@ -98,6 +99,14 @@ public class DndTile extends QSTile { @Override public void handleClick() { + if (mController.isVolumeRestricted()) { + // Collapse the panels, so the user can see the toast. + mHost.collapsePanels(); + Toast.makeText(mContext, mContext.getString( + com.android.internal.R.string.error_message_change_not_allowed), + Toast.LENGTH_LONG).show(); + return; + } mDisable.setAllowAnimation(true); mDisableTotalSilence.setAllowAnimation(true); MetricsLogger.action(mContext, getMetricsCategory(), !mState.value); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeController.java index 9d84a85483cde..b2df40a069e8d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeController.java @@ -36,6 +36,7 @@ public interface ZenModeController { ComponentName getEffectsSuppressor(); boolean isCountdownConditionSupported(); int getCurrentUser(); + boolean isVolumeRestricted(); public static class Callback { public void onZenChanged(int zen) {} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeControllerImpl.java index 5b80ac28a6f62..c07f1a86415ee 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeControllerImpl.java @@ -29,6 +29,7 @@ import android.database.ContentObserver; import android.net.Uri; import android.os.Handler; import android.os.UserHandle; +import android.os.UserManager; import android.provider.Settings.Global; import android.provider.Settings.Secure; import android.service.notification.Condition; @@ -57,6 +58,7 @@ public class ZenModeControllerImpl implements ZenModeController { private final LinkedHashMap mConditions = new LinkedHashMap(); private final AlarmManager mAlarmManager; private final SetupObserver mSetupObserver; + private final UserManager mUserManager; private int mUserId; private boolean mRequesting; @@ -84,6 +86,13 @@ public class ZenModeControllerImpl implements ZenModeController { mAlarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); mSetupObserver = new SetupObserver(handler); mSetupObserver.register(); + mUserManager = context.getSystemService(UserManager.class); + } + + @Override + public boolean isVolumeRestricted() { + return mUserManager.hasUserRestriction(UserManager.DISALLOW_ADJUST_VOLUME, + new UserHandle(mUserId)); } @Override