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

Commit 3197513e authored by Beverly's avatar Beverly Committed by android-build-merger
Browse files

Merge "Don't show ringer status if dnd overrides it" into pi-dev

am: a4e8196c

Change-Id: Ic6f4fcf844c403f117a49843f5b6ea84f943be41
parents 6bf26910 a4e8196c
Loading
Loading
Loading
Loading
+11 −0
Original line number Original line Diff line number Diff line
@@ -1469,6 +1469,17 @@ public class ZenModeConfig implements Parcelable {
                && !allowRepeatCallers;
                && !allowRepeatCallers;
    }
    }


    /**
     * Determines if DND is currently overriding the ringer
     */
    public static boolean isZenOverridingRinger(int zen, ZenModeConfig zenConfig) {
        // TODO (beverlyt): check if apps can bypass dnd b/77729075
        return zen == Global.ZEN_MODE_NO_INTERRUPTIONS
                || zen == Global.ZEN_MODE_ALARMS
                || (zen == Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS
                && ZenModeConfig.areAllPriorityOnlyNotificationZenSoundsMuted(zenConfig));
    }

    /**
    /**
     * Determines whether dnd behavior should mute all sounds controlled by ringer
     * Determines whether dnd behavior should mute all sounds controlled by ringer
     */
     */
+57 −15
Original line number Original line Diff line number Diff line
@@ -32,6 +32,7 @@ import android.graphics.Rect;
import android.media.AudioManager;
import android.media.AudioManager;
import android.os.Handler;
import android.os.Handler;
import android.provider.AlarmClock;
import android.provider.AlarmClock;
import android.service.notification.ZenModeConfig;
import android.support.annotation.VisibleForTesting;
import android.support.annotation.VisibleForTesting;
import android.text.format.DateUtils;
import android.text.format.DateUtils;
import android.util.AttributeSet;
import android.util.AttributeSet;
@@ -48,10 +49,8 @@ import com.android.systemui.BatteryMeterView;
import com.android.systemui.Dependency;
import com.android.systemui.Dependency;
import com.android.systemui.Prefs;
import com.android.systemui.Prefs;
import com.android.systemui.R;
import com.android.systemui.R;
import com.android.systemui.SysUiServiceProvider;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.qs.QSDetail.Callback;
import com.android.systemui.qs.QSDetail.Callback;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.phone.PhoneStatusBarView;
import com.android.systemui.statusbar.phone.PhoneStatusBarView;
import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.statusbar.phone.StatusBarIconController.TintedIconManager;
import com.android.systemui.statusbar.phone.StatusBarIconController.TintedIconManager;
@@ -61,8 +60,10 @@ import com.android.systemui.statusbar.policy.DarkIconDispatcher;
import com.android.systemui.statusbar.policy.DarkIconDispatcher.DarkReceiver;
import com.android.systemui.statusbar.policy.DarkIconDispatcher.DarkReceiver;
import com.android.systemui.statusbar.policy.DateView;
import com.android.systemui.statusbar.policy.DateView;
import com.android.systemui.statusbar.policy.NextAlarmController;
import com.android.systemui.statusbar.policy.NextAlarmController;
import com.android.systemui.statusbar.policy.ZenModeController;


import java.util.Locale;
import java.util.Locale;
import java.util.Objects;


/**
/**
 * View that contains the top-most bits of the screen (primarily the status bar with date, time, and
 * View that contains the top-most bits of the screen (primarily the status bar with date, time, and
@@ -70,7 +71,8 @@ import java.util.Locale;
 * contents.
 * contents.
 */
 */
public class QuickStatusBarHeader extends RelativeLayout implements
public class QuickStatusBarHeader extends RelativeLayout implements
        View.OnClickListener, NextAlarmController.NextAlarmChangeCallback {
        View.OnClickListener, NextAlarmController.NextAlarmChangeCallback,
        ZenModeController.Callback {
    private static final String TAG = "QuickStatusBarHeader";
    private static final String TAG = "QuickStatusBarHeader";
    private static final boolean DEBUG = false;
    private static final boolean DEBUG = false;


@@ -117,6 +119,7 @@ public class QuickStatusBarHeader extends RelativeLayout implements
    private DateView mDateView;
    private DateView mDateView;


    private NextAlarmController mAlarmController;
    private NextAlarmController mAlarmController;
    private ZenModeController mZenController;
    /** Counts how many times the long press tooltip has been shown to the user. */
    /** Counts how many times the long press tooltip has been shown to the user. */
    private int mShownCount;
    private int mShownCount;


@@ -136,6 +139,7 @@ public class QuickStatusBarHeader extends RelativeLayout implements
    public QuickStatusBarHeader(Context context, AttributeSet attrs) {
    public QuickStatusBarHeader(Context context, AttributeSet attrs) {
        super(context, attrs);
        super(context, attrs);
        mAlarmController = Dependency.get(NextAlarmController.class);
        mAlarmController = Dependency.get(NextAlarmController.class);
        mZenController = Dependency.get(ZenModeController.class);
        mShownCount = getStoredShownCount();
        mShownCount = getStoredShownCount();
    }
    }


@@ -182,7 +186,24 @@ public class QuickStatusBarHeader extends RelativeLayout implements
    }
    }


    private void updateStatusText() {
    private void updateStatusText() {
        boolean changed = updateRingerStatus() || updateAlarmStatus();

        if (changed) {
            boolean alarmVisible = mNextAlarmTextView.getVisibility() == View.VISIBLE;
            boolean ringerVisible = mRingerModeTextView.getVisibility() == View.VISIBLE;
            mStatusSeparator.setVisibility(alarmVisible && ringerVisible ? View.VISIBLE
                    : View.GONE);
            updateTooltipShow();
        }
    }

    private boolean updateRingerStatus() {
        boolean isOriginalVisible = mRingerModeTextView.getVisibility() == View.VISIBLE;
        CharSequence originalRingerText = mRingerModeTextView.getText();

        boolean ringerVisible = false;
        boolean ringerVisible = false;
        if (!ZenModeConfig.isZenOverridingRinger(mZenController.getZen(),
                mZenController.getConfig())) {
            if (mRingerMode == AudioManager.RINGER_MODE_VIBRATE) {
            if (mRingerMode == AudioManager.RINGER_MODE_VIBRATE) {
                mRingerModeIcon.setImageResource(R.drawable.stat_sys_ringer_vibrate);
                mRingerModeIcon.setImageResource(R.drawable.stat_sys_ringer_vibrate);
                mRingerModeTextView.setText(R.string.qs_status_phone_vibrate);
                mRingerModeTextView.setText(R.string.qs_status_phone_vibrate);
@@ -192,9 +213,18 @@ public class QuickStatusBarHeader extends RelativeLayout implements
                mRingerModeTextView.setText(R.string.qs_status_phone_muted);
                mRingerModeTextView.setText(R.string.qs_status_phone_muted);
                ringerVisible = true;
                ringerVisible = true;
            }
            }
        }
        mRingerModeIcon.setVisibility(ringerVisible ? View.VISIBLE : View.GONE);
        mRingerModeIcon.setVisibility(ringerVisible ? View.VISIBLE : View.GONE);
        mRingerModeTextView.setVisibility(ringerVisible ? View.VISIBLE : View.GONE);
        mRingerModeTextView.setVisibility(ringerVisible ? View.VISIBLE : View.GONE);


        return isOriginalVisible != ringerVisible ||
                !Objects.equals(originalRingerText, mRingerModeTextView.getText());
    }

    private boolean updateAlarmStatus() {
        boolean isOriginalVisible = mNextAlarmTextView.getVisibility() == View.VISIBLE;
        CharSequence originalAlarmText = mNextAlarmTextView.getText();

        boolean alarmVisible = false;
        boolean alarmVisible = false;
        if (mNextAlarm != null) {
        if (mNextAlarm != null) {
            alarmVisible = true;
            alarmVisible = true;
@@ -202,10 +232,10 @@ public class QuickStatusBarHeader extends RelativeLayout implements
        }
        }
        mNextAlarmIcon.setVisibility(alarmVisible ? View.VISIBLE : View.GONE);
        mNextAlarmIcon.setVisibility(alarmVisible ? View.VISIBLE : View.GONE);
        mNextAlarmTextView.setVisibility(alarmVisible ? View.VISIBLE : View.GONE);
        mNextAlarmTextView.setVisibility(alarmVisible ? View.VISIBLE : View.GONE);
        mStatusSeparator.setVisibility(alarmVisible && ringerVisible ? View.VISIBLE : View.GONE);
        updateTooltipShow();
    }


        return isOriginalVisible != alarmVisible ||
                !Objects.equals(originalAlarmText, mNextAlarmTextView.getText());
    }


    private void applyDarkness(int id, Rect tintArea, float intensity, int color) {
    private void applyDarkness(int id, Rect tintArea, float intensity, int color) {
        View v = findViewById(id);
        View v = findViewById(id);
@@ -368,10 +398,12 @@ public class QuickStatusBarHeader extends RelativeLayout implements
        mListening = listening;
        mListening = listening;


        if (listening) {
        if (listening) {
            mZenController.addCallback(this);
            mAlarmController.addCallback(this);
            mAlarmController.addCallback(this);
            mContext.registerReceiver(mRingerReceiver,
            mContext.registerReceiver(mRingerReceiver,
                    new IntentFilter(AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION));
                    new IntentFilter(AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION));
        } else {
        } else {
            mZenController.removeCallback(this);
            mAlarmController.removeCallback(this);
            mAlarmController.removeCallback(this);
            mContext.unregisterReceiver(mRingerReceiver);
            mContext.unregisterReceiver(mRingerReceiver);
        }
        }
@@ -391,6 +423,17 @@ public class QuickStatusBarHeader extends RelativeLayout implements
        updateStatusText();
        updateStatusText();
    }
    }


    @Override
    public void onZenChanged(int zen) {
        updateStatusText();

    }

    @Override
    public void onConfigChanged(ZenModeConfig config) {
        updateStatusText();
    }

    private void updateTooltipShow() {
    private void updateTooltipShow() {
        if (hasStatusText()) {
        if (hasStatusText()) {
            hideLongPressTooltip(true /* shouldShowStatusText */);
            hideLongPressTooltip(true /* shouldShowStatusText */);
@@ -547,5 +590,4 @@ public class QuickStatusBarHeader extends RelativeLayout implements
    public static float getColorIntensity(@ColorInt int color) {
    public static float getColorIntensity(@ColorInt int color) {
        return color == Color.WHITE ? 0 : 1;
        return color == Color.WHITE ? 0 : 1;
    }
    }

}
}
+16 −10
Original line number Original line Diff line number Diff line
@@ -50,6 +50,7 @@ import android.os.UserManager;
import android.provider.Settings;
import android.provider.Settings;
import android.provider.Settings.Global;
import android.provider.Settings.Global;
import android.service.notification.StatusBarNotification;
import android.service.notification.StatusBarNotification;
import android.service.notification.ZenModeConfig;
import android.telecom.TelecomManager;
import android.telecom.TelecomManager;
import android.util.ArraySet;
import android.util.ArraySet;
import android.util.Log;
import android.util.Log;
@@ -286,6 +287,11 @@ public class PhoneStatusBarPolicy implements Callback, Callbacks,
        updateVolumeZen();
        updateVolumeZen();
    }
    }


    @Override
    public void onConfigChanged(ZenModeConfig config) {
        updateVolumeZen();
    }

    @Override
    @Override
    public void onLocationActiveChanged(boolean active) {
    public void onLocationActiveChanged(boolean active) {
        updateLocation();
        updateLocation();
@@ -363,17 +369,17 @@ public class PhoneStatusBarPolicy implements Callback, Callbacks,
            zenDescription = mContext.getString(R.string.interruption_level_priority);
            zenDescription = mContext.getString(R.string.interruption_level_priority);
        }
        }


        if (zen != Global.ZEN_MODE_NO_INTERRUPTIONS && zen != Global.ZEN_MODE_ALARMS &&
        if (!ZenModeConfig.isZenOverridingRinger(zen, mZenController.getConfig())) {
                audioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_VIBRATE) {
            if (audioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_VIBRATE) {
                volumeVisible = true;
                volumeVisible = true;
                volumeIconId = R.drawable.stat_sys_ringer_vibrate;
                volumeIconId = R.drawable.stat_sys_ringer_vibrate;
                volumeDescription = mContext.getString(R.string.accessibility_ringer_vibrate);
                volumeDescription = mContext.getString(R.string.accessibility_ringer_vibrate);
        } else if (zen != Global.ZEN_MODE_NO_INTERRUPTIONS && zen != Global.ZEN_MODE_ALARMS &&
            } else if (audioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_SILENT) {
                audioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_SILENT) {
                volumeVisible = true;
                volumeVisible = true;
                volumeIconId = R.drawable.stat_sys_ringer_silent;
                volumeIconId = R.drawable.stat_sys_ringer_silent;
                volumeDescription = mContext.getString(R.string.accessibility_ringer_silent);
                volumeDescription = mContext.getString(R.string.accessibility_ringer_silent);
            }
            }
        }


        if (zenVisible) {
        if (zenVisible) {
            mIconController.setIcon(mSlotZen, zenIconId, zenDescription);
            mIconController.setIcon(mSlotZen, zenIconId, zenDescription);