diff options
Diffstat (limited to 'services/core/java/com/android/server/notification/ZenModeHelper.java')
-rw-r--r-- | services/core/java/com/android/server/notification/ZenModeHelper.java | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/notification/ZenModeHelper.java b/services/core/java/com/android/server/notification/ZenModeHelper.java index 461c3a2..468ef8d 100644 --- a/services/core/java/com/android/server/notification/ZenModeHelper.java +++ b/services/core/java/com/android/server/notification/ZenModeHelper.java @@ -53,6 +53,7 @@ import android.util.SparseArray; import com.android.internal.R; import com.android.internal.logging.MetricsLogger; import com.android.server.LocalServices; +import cyanogenmod.providers.CMSettings; import libcore.io.IoUtils; @@ -89,6 +90,7 @@ public class ZenModeHelper { private ZenModeConfig mConfig; private AudioManagerInternal mAudioManager; private boolean mEffectsSuppressed; + private boolean mAllowLights; public ZenModeHelper(Context context, Looper looper, ConditionProviders conditionProviders) { mContext = context; @@ -378,6 +380,7 @@ public class ZenModeHelper { ZenLog.traceSetZenMode(zen, reason); mZenMode = zen; updateRingerModeAffectedStreams(); + readAllowLightsFromSettings(); setZenModeSetting(mZenMode); if (setRingerMode) { applyZenToRingerMode(); @@ -407,6 +410,24 @@ public class ZenModeHelper { return zen; } + public boolean getAllowLights() { + return mAllowLights; + } + + public void readAllowLightsFromSettings() { + switch (mZenMode) { + case Global.ZEN_MODE_NO_INTERRUPTIONS: + case Global.ZEN_MODE_ALARMS: + mAllowLights = CMSettings.System.getInt(mContext.getContentResolver(), + CMSettings.System.ZEN_ALLOW_LIGHTS, 1) == 1; + break; + case Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS: + mAllowLights = CMSettings.System.getInt(mContext.getContentResolver(), + CMSettings.System.ZEN_PRIORITY_ALLOW_LIGHTS, 1) == 1; + break; + } + } + private void applyRestrictions() { final boolean zen = mZenMode != Global.ZEN_MODE_OFF; @@ -415,13 +436,14 @@ public class ZenModeHelper { applyRestrictions(muteNotifications, USAGE_NOTIFICATION); // call restrictions - final boolean muteCalls = zen && !mConfig.allowCalls && !mConfig.allowRepeatCallers - || mEffectsSuppressed; + final boolean muteCalls = zen && !mConfig.allowCalls && !mConfig.allowRepeatCallers; applyRestrictions(muteCalls, USAGE_NOTIFICATION_RINGTONE); // alarm restrictions final boolean muteAlarms = mZenMode == Global.ZEN_MODE_NO_INTERRUPTIONS; applyRestrictions(muteAlarms, USAGE_ALARM); + + readAllowLightsFromSettings(); } private void applyRestrictions(boolean mute, int usage) { @@ -692,6 +714,10 @@ public class ZenModeHelper { private final class SettingsObserver extends ContentObserver { private final Uri ZEN_MODE = Global.getUriFor(Global.ZEN_MODE); + private final Uri ZEN_ALLOW_LIGHTS = CMSettings.System.getUriFor( + CMSettings.System.ZEN_ALLOW_LIGHTS); + private final Uri ZEN_PRIORITY_ALLOW_LIGHTS = CMSettings.System.getUriFor( + CMSettings.System.ZEN_PRIORITY_ALLOW_LIGHTS); public SettingsObserver(Handler handler) { super(handler); @@ -700,6 +726,10 @@ public class ZenModeHelper { public void observe() { final ContentResolver resolver = mContext.getContentResolver(); resolver.registerContentObserver(ZEN_MODE, false /*notifyForDescendents*/, this); + resolver.registerContentObserver( + ZEN_ALLOW_LIGHTS, false /*notifyForDescendents*/, this); + resolver.registerContentObserver( + ZEN_PRIORITY_ALLOW_LIGHTS, false /*notifyForDescendents*/, this); update(null); } @@ -714,6 +744,8 @@ public class ZenModeHelper { if (DEBUG) Log.d(TAG, "Fixing zen mode setting"); setZenModeSetting(mZenMode); } + } else if (ZEN_ALLOW_LIGHTS.equals(uri) || ZEN_PRIORITY_ALLOW_LIGHTS.equals(uri)) { + readAllowLightsFromSettings(); } } } |