Loading core/java/android/service/notification/ZenModeConfig.java +11 −0 Original line number Diff line number Diff line Loading @@ -1469,6 +1469,17 @@ public class ZenModeConfig implements Parcelable { && !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 */ Loading packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java +57 −15 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import android.graphics.Rect; import android.media.AudioManager; import android.os.Handler; import android.provider.AlarmClock; import android.service.notification.ZenModeConfig; import android.support.annotation.VisibleForTesting; import android.text.format.DateUtils; import android.util.AttributeSet; Loading @@ -48,10 +49,8 @@ import com.android.systemui.BatteryMeterView; import com.android.systemui.Dependency; import com.android.systemui.Prefs; import com.android.systemui.R; import com.android.systemui.SysUiServiceProvider; import com.android.systemui.plugins.ActivityStarter; 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.StatusBarIconController; import com.android.systemui.statusbar.phone.StatusBarIconController.TintedIconManager; Loading @@ -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.DateView; import com.android.systemui.statusbar.policy.NextAlarmController; import com.android.systemui.statusbar.policy.ZenModeController; 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 Loading @@ -70,7 +71,8 @@ import java.util.Locale; * contents. */ 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 boolean DEBUG = false; Loading Loading @@ -117,6 +119,7 @@ public class QuickStatusBarHeader extends RelativeLayout implements private DateView mDateView; private NextAlarmController mAlarmController; private ZenModeController mZenController; /** Counts how many times the long press tooltip has been shown to the user. */ private int mShownCount; Loading @@ -136,6 +139,7 @@ public class QuickStatusBarHeader extends RelativeLayout implements public QuickStatusBarHeader(Context context, AttributeSet attrs) { super(context, attrs); mAlarmController = Dependency.get(NextAlarmController.class); mZenController = Dependency.get(ZenModeController.class); mShownCount = getStoredShownCount(); } Loading Loading @@ -182,7 +186,24 @@ public class QuickStatusBarHeader extends RelativeLayout implements } 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; if (!ZenModeConfig.isZenOverridingRinger(mZenController.getZen(), mZenController.getConfig())) { if (mRingerMode == AudioManager.RINGER_MODE_VIBRATE) { mRingerModeIcon.setImageResource(R.drawable.stat_sys_ringer_vibrate); mRingerModeTextView.setText(R.string.qs_status_phone_vibrate); Loading @@ -192,9 +213,18 @@ public class QuickStatusBarHeader extends RelativeLayout implements mRingerModeTextView.setText(R.string.qs_status_phone_muted); ringerVisible = true; } } mRingerModeIcon.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; if (mNextAlarm != null) { alarmVisible = true; Loading @@ -202,10 +232,10 @@ public class QuickStatusBarHeader extends RelativeLayout implements } mNextAlarmIcon.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) { View v = findViewById(id); Loading Loading @@ -368,10 +398,12 @@ public class QuickStatusBarHeader extends RelativeLayout implements mListening = listening; if (listening) { mZenController.addCallback(this); mAlarmController.addCallback(this); mContext.registerReceiver(mRingerReceiver, new IntentFilter(AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION)); } else { mZenController.removeCallback(this); mAlarmController.removeCallback(this); mContext.unregisterReceiver(mRingerReceiver); } Loading @@ -391,6 +423,17 @@ public class QuickStatusBarHeader extends RelativeLayout implements updateStatusText(); } @Override public void onZenChanged(int zen) { updateStatusText(); } @Override public void onConfigChanged(ZenModeConfig config) { updateStatusText(); } private void updateTooltipShow() { if (hasStatusText()) { hideLongPressTooltip(true /* shouldShowStatusText */); Loading Loading @@ -547,5 +590,4 @@ public class QuickStatusBarHeader extends RelativeLayout implements public static float getColorIntensity(@ColorInt int color) { return color == Color.WHITE ? 0 : 1; } } packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java +16 −10 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ import android.os.UserManager; import android.provider.Settings; import android.provider.Settings.Global; import android.service.notification.StatusBarNotification; import android.service.notification.ZenModeConfig; import android.telecom.TelecomManager; import android.util.ArraySet; import android.util.Log; Loading Loading @@ -286,6 +287,11 @@ public class PhoneStatusBarPolicy implements Callback, Callbacks, updateVolumeZen(); } @Override public void onConfigChanged(ZenModeConfig config) { updateVolumeZen(); } @Override public void onLocationActiveChanged(boolean active) { updateLocation(); Loading Loading @@ -363,17 +369,17 @@ public class PhoneStatusBarPolicy implements Callback, Callbacks, zenDescription = mContext.getString(R.string.interruption_level_priority); } if (zen != Global.ZEN_MODE_NO_INTERRUPTIONS && zen != Global.ZEN_MODE_ALARMS && audioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_VIBRATE) { if (!ZenModeConfig.isZenOverridingRinger(zen, mZenController.getConfig())) { if (audioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_VIBRATE) { volumeVisible = true; volumeIconId = R.drawable.stat_sys_ringer_vibrate; volumeDescription = mContext.getString(R.string.accessibility_ringer_vibrate); } else if (zen != Global.ZEN_MODE_NO_INTERRUPTIONS && zen != Global.ZEN_MODE_ALARMS && audioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_SILENT) { } else if (audioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_SILENT) { volumeVisible = true; volumeIconId = R.drawable.stat_sys_ringer_silent; volumeDescription = mContext.getString(R.string.accessibility_ringer_silent); } } if (zenVisible) { mIconController.setIcon(mSlotZen, zenIconId, zenDescription); Loading Loading
core/java/android/service/notification/ZenModeConfig.java +11 −0 Original line number Diff line number Diff line Loading @@ -1469,6 +1469,17 @@ public class ZenModeConfig implements Parcelable { && !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 */ Loading
packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java +57 −15 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import android.graphics.Rect; import android.media.AudioManager; import android.os.Handler; import android.provider.AlarmClock; import android.service.notification.ZenModeConfig; import android.support.annotation.VisibleForTesting; import android.text.format.DateUtils; import android.util.AttributeSet; Loading @@ -48,10 +49,8 @@ import com.android.systemui.BatteryMeterView; import com.android.systemui.Dependency; import com.android.systemui.Prefs; import com.android.systemui.R; import com.android.systemui.SysUiServiceProvider; import com.android.systemui.plugins.ActivityStarter; 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.StatusBarIconController; import com.android.systemui.statusbar.phone.StatusBarIconController.TintedIconManager; Loading @@ -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.DateView; import com.android.systemui.statusbar.policy.NextAlarmController; import com.android.systemui.statusbar.policy.ZenModeController; 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 Loading @@ -70,7 +71,8 @@ import java.util.Locale; * contents. */ 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 boolean DEBUG = false; Loading Loading @@ -117,6 +119,7 @@ public class QuickStatusBarHeader extends RelativeLayout implements private DateView mDateView; private NextAlarmController mAlarmController; private ZenModeController mZenController; /** Counts how many times the long press tooltip has been shown to the user. */ private int mShownCount; Loading @@ -136,6 +139,7 @@ public class QuickStatusBarHeader extends RelativeLayout implements public QuickStatusBarHeader(Context context, AttributeSet attrs) { super(context, attrs); mAlarmController = Dependency.get(NextAlarmController.class); mZenController = Dependency.get(ZenModeController.class); mShownCount = getStoredShownCount(); } Loading Loading @@ -182,7 +186,24 @@ public class QuickStatusBarHeader extends RelativeLayout implements } 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; if (!ZenModeConfig.isZenOverridingRinger(mZenController.getZen(), mZenController.getConfig())) { if (mRingerMode == AudioManager.RINGER_MODE_VIBRATE) { mRingerModeIcon.setImageResource(R.drawable.stat_sys_ringer_vibrate); mRingerModeTextView.setText(R.string.qs_status_phone_vibrate); Loading @@ -192,9 +213,18 @@ public class QuickStatusBarHeader extends RelativeLayout implements mRingerModeTextView.setText(R.string.qs_status_phone_muted); ringerVisible = true; } } mRingerModeIcon.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; if (mNextAlarm != null) { alarmVisible = true; Loading @@ -202,10 +232,10 @@ public class QuickStatusBarHeader extends RelativeLayout implements } mNextAlarmIcon.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) { View v = findViewById(id); Loading Loading @@ -368,10 +398,12 @@ public class QuickStatusBarHeader extends RelativeLayout implements mListening = listening; if (listening) { mZenController.addCallback(this); mAlarmController.addCallback(this); mContext.registerReceiver(mRingerReceiver, new IntentFilter(AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION)); } else { mZenController.removeCallback(this); mAlarmController.removeCallback(this); mContext.unregisterReceiver(mRingerReceiver); } Loading @@ -391,6 +423,17 @@ public class QuickStatusBarHeader extends RelativeLayout implements updateStatusText(); } @Override public void onZenChanged(int zen) { updateStatusText(); } @Override public void onConfigChanged(ZenModeConfig config) { updateStatusText(); } private void updateTooltipShow() { if (hasStatusText()) { hideLongPressTooltip(true /* shouldShowStatusText */); Loading Loading @@ -547,5 +590,4 @@ public class QuickStatusBarHeader extends RelativeLayout implements public static float getColorIntensity(@ColorInt int color) { return color == Color.WHITE ? 0 : 1; } }
packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java +16 −10 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ import android.os.UserManager; import android.provider.Settings; import android.provider.Settings.Global; import android.service.notification.StatusBarNotification; import android.service.notification.ZenModeConfig; import android.telecom.TelecomManager; import android.util.ArraySet; import android.util.Log; Loading Loading @@ -286,6 +287,11 @@ public class PhoneStatusBarPolicy implements Callback, Callbacks, updateVolumeZen(); } @Override public void onConfigChanged(ZenModeConfig config) { updateVolumeZen(); } @Override public void onLocationActiveChanged(boolean active) { updateLocation(); Loading Loading @@ -363,17 +369,17 @@ public class PhoneStatusBarPolicy implements Callback, Callbacks, zenDescription = mContext.getString(R.string.interruption_level_priority); } if (zen != Global.ZEN_MODE_NO_INTERRUPTIONS && zen != Global.ZEN_MODE_ALARMS && audioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_VIBRATE) { if (!ZenModeConfig.isZenOverridingRinger(zen, mZenController.getConfig())) { if (audioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_VIBRATE) { volumeVisible = true; volumeIconId = R.drawable.stat_sys_ringer_vibrate; volumeDescription = mContext.getString(R.string.accessibility_ringer_vibrate); } else if (zen != Global.ZEN_MODE_NO_INTERRUPTIONS && zen != Global.ZEN_MODE_ALARMS && audioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_SILENT) { } else if (audioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_SILENT) { volumeVisible = true; volumeIconId = R.drawable.stat_sys_ringer_silent; volumeDescription = mContext.getString(R.string.accessibility_ringer_silent); } } if (zenVisible) { mIconController.setIcon(mSlotZen, zenIconId, zenDescription); Loading