Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ccacfcf4 authored by DvTonder's avatar DvTonder Committed by Gerrit Code Review
Browse files

Frameworks: Allow/Prevent notification light in Zen mode (1 of 3)

This allows the user to prevent the notification lights from showing during Zen mode

Change-Id: I831c475204c8647d8ee281094aca837ee9594eb4
parent 31ecbdc5
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -1236,6 +1236,7 @@ public class NotificationManagerService extends SystemService {
            mDisableNotificationEffects = true;
        }
        mZenModeHelper.initZenMode();
        mZenModeHelper.readAllowLightsFromSettings();
        mInterruptionFilter = mZenModeHelper.getZenModeListenerInterruptionFilter();

        mUserProfiles.updateCache(getContext());
@@ -2785,8 +2786,9 @@ public class NotificationManagerService extends SystemService {
        // light
        // release the light
        boolean wasShowLights = mLights.remove(record.getKey());
        final boolean aboveThresholdWithLight = aboveThreshold || isLedNotificationForcedOn(record);
        if ((notification.flags & Notification.FLAG_SHOW_LIGHTS) != 0 && aboveThresholdWithLight) {
        final boolean canInterruptWithLight = canInterrupt || isLedNotificationForcedOn(record)
                || (!canInterrupt && mZenModeHelper.getAllowLights());
        if ((notification.flags & Notification.FLAG_SHOW_LIGHTS) != 0 && canInterruptWithLight) {
            mLights.add(record.getKey());
            updateLightsLocked();
            if (mUseAttentionLight) {
+33 −0
Original line number Diff line number Diff line
@@ -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;

@@ -422,6 +443,8 @@ public class ZenModeHelper {
        // 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 +715,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 +727,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 +745,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();
            }
        }
    }