diff options
author | Jason Monk <jmonk@google.com> | 2015-06-30 12:18:26 -0400 |
---|---|---|
committer | Jason Monk <jmonk@google.com> | 2015-06-30 19:21:10 +0000 |
commit | 72965ad53b4c935e115e49fe12189781954a4077 (patch) | |
tree | c388b8cfae7d83bef7afd5cf3e670ab6f545a444 /src/com/android/settings/notification | |
parent | d9bd96b3094039fdcb8c76042a6f2dc21d6c7875 (diff) | |
download | packages_apps_Settings-72965ad53b4c935e115e49fe12189781954a4077.zip packages_apps_Settings-72965ad53b4c935e115e49fe12189781954a4077.tar.gz packages_apps_Settings-72965ad53b4c935e115e49fe12189781954a4077.tar.bz2 |
Handle adjust volume user restriction
- Finish all do not disturb pages immediately
- Disable relevant items in Sounds & notification
Bug: 21642285
Change-Id: I8de9bd10b8cea8adaa306b1ae388ab7d1ccc4e7e
Diffstat (limited to 'src/com/android/settings/notification')
3 files changed, 34 insertions, 2 deletions
diff --git a/src/com/android/settings/notification/NotificationSettings.java b/src/com/android/settings/notification/NotificationSettings.java index 2a56c90..e7a154c 100644 --- a/src/com/android/settings/notification/NotificationSettings.java +++ b/src/com/android/settings/notification/NotificationSettings.java @@ -38,6 +38,7 @@ import android.os.Handler; import android.os.Looper; import android.os.Message; import android.os.UserHandle; +import android.os.UserManager; import android.os.Vibrator; import android.preference.Preference; import android.preference.Preference.OnPreferenceChangeListener; @@ -81,6 +82,15 @@ public class NotificationSettings extends SettingsPreferenceFragment implements private static final String KEY_LOCK_SCREEN_NOTIFICATIONS = "lock_screen_notifications"; private static final String KEY_NOTIFICATION_ACCESS = "manage_notification_access"; private static final String KEY_ZEN_ACCESS = "manage_zen_access"; + private static final String KEY_ZEN_MODE = "zen_mode"; + + private static final String[] RESTRICTED_KEYS = { + KEY_MEDIA_VOLUME, + KEY_ALARM_VOLUME, + KEY_RING_VOLUME, + KEY_ZEN_ACCESS, + KEY_ZEN_MODE, + }; private static final int SAMPLE_CUTOFF = 2000; // manually cap sample playback at 2 seconds @@ -109,6 +119,8 @@ public class NotificationSettings extends SettingsPreferenceFragment implements private ComponentName mSuppressor; private int mRingerMode = -1; + private UserManager mUserManager; + @Override protected int getMetricsCategory() { return MetricsLogger.NOTIFICATION; @@ -119,6 +131,7 @@ public class NotificationSettings extends SettingsPreferenceFragment implements super.onCreate(savedInstanceState); mContext = getActivity(); mPM = mContext.getPackageManager(); + mUserManager = UserManager.get(getContext()); mVoiceCapable = Utils.isVoiceCapable(mContext); mSecure = new LockPatternUtils(getActivity()).isSecure(UserHandle.myUserId()); @@ -175,6 +188,13 @@ public class NotificationSettings extends SettingsPreferenceFragment implements for (VolumeSeekBarPreference volumePref : mVolumePrefs) { volumePref.onActivityResume(); } + boolean isRestricted = mUserManager.hasUserRestriction(UserManager.DISALLOW_ADJUST_VOLUME); + for (String key : RESTRICTED_KEYS) { + Preference pref = findPreference(key); + if (pref != null) { + pref.setEnabled(!isRestricted); + } + } } @Override diff --git a/src/com/android/settings/notification/VolumeSeekBarPreference.java b/src/com/android/settings/notification/VolumeSeekBarPreference.java index 2bbf9ef..2603016 100644 --- a/src/com/android/settings/notification/VolumeSeekBarPreference.java +++ b/src/com/android/settings/notification/VolumeSeekBarPreference.java @@ -139,6 +139,10 @@ public class VolumeSeekBarPreference extends SeekBarPreference updateIconView(); mCallback.onStreamValueChanged(mStream, mSeekBar.getProgress()); updateSuppressionText(); + if (!isEnabled()) { + mSeekBar.setEnabled(false); + mVolumizer.stop(); + } } // during initialization, this preference is the SeekBar listener diff --git a/src/com/android/settings/notification/ZenModeSettingsBase.java b/src/com/android/settings/notification/ZenModeSettingsBase.java index 9824dc7..41c9b08 100644 --- a/src/com/android/settings/notification/ZenModeSettingsBase.java +++ b/src/com/android/settings/notification/ZenModeSettingsBase.java @@ -22,16 +22,17 @@ import android.database.ContentObserver; import android.net.Uri; import android.os.Bundle; import android.os.Handler; +import android.os.UserManager; import android.provider.Settings; import android.provider.Settings.Global; import android.service.notification.ZenModeConfig; import android.util.Log; -import com.android.settings.SettingsPreferenceFragment; +import com.android.settings.RestrictedSettingsFragment; import java.util.Objects; -abstract public class ZenModeSettingsBase extends SettingsPreferenceFragment { +abstract public class ZenModeSettingsBase extends RestrictedSettingsFragment { protected static final String TAG = "ZenModeSettings"; protected static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); @@ -45,6 +46,10 @@ abstract public class ZenModeSettingsBase extends SettingsPreferenceFragment { abstract protected void onZenModeChanged(); abstract protected void onZenModeConfigChanged(); + public ZenModeSettingsBase() { + super(UserManager.DISALLOW_ADJUST_VOLUME); + } + @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); @@ -60,6 +65,9 @@ abstract public class ZenModeSettingsBase extends SettingsPreferenceFragment { updateZenMode(true /*fireChanged*/); updateZenModeConfig(true /*fireChanged*/); mSettingsObserver.register(); + if (isUiRestricted()) { + finish(); + } } @Override |