diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index 68a798369bc56..95a87641a3d73 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -2256,7 +2256,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, if ((diff1 & StatusBarManager.DISABLE_CLOCK) != 0) { boolean visible = (state1 & StatusBarManager.DISABLE_CLOCK) == 0; - mIconController.setClockVisibility(visible); + mIconController.setClockVisibilityByPolicy(visible); } if ((diff1 & StatusBarManager.DISABLE_EXPAND) != 0) { if ((state1 & StatusBarManager.DISABLE_EXPAND) != 0) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java index f415ae588c4e6..a035eee66f88d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java @@ -101,6 +101,9 @@ public class StatusBarIconController extends StatusBarIconList implements Tunabl private long mTransitionDeferringStartTime; private long mTransitionDeferringDuration; + private boolean mClockVisibleByPolicy = true; + private boolean mClockVisibleByUser = true; + private final ArraySet mIconBlacklist = new ArraySet<>(); private final Runnable mTransitionDeferringDoneRunnable = new Runnable() { @@ -189,6 +192,10 @@ public class StatusBarIconController extends StatusBarIconList implements Tunabl for (int i = 0; i < views.size(); i++) { setIcon(views.get(i).getSlot(), views.get(i).getStatusBarIcon()); } + + setClockVisibleByUser(!StatusBarIconController.getIconBlacklist(newValue) + .contains("clock")); + updateClockVisibility(); } private void loadDimens() { mIconSize = mContext.getResources().getDimensionPixelSize( @@ -332,8 +339,20 @@ public class StatusBarIconController extends StatusBarIconList implements Tunabl animateShow(mNotificationIconAreaInner, animate); } - public void setClockVisibility(boolean visible) { - mClock.setVisibility(visible ? View.VISIBLE : View.GONE); + public void setClockVisibleByUser(boolean visible) { + mClockVisibleByUser = visible; + updateClockVisibility(); + } + + public void setClockVisibilityByPolicy(boolean visible) { + mClockVisibleByPolicy = visible; + updateClockVisibility(); + } + + private void updateClockVisibility() { + int visibility = (mClockVisibleByPolicy && mClockVisibleByUser) + ? View.VISIBLE : View.GONE; + mClock.setVisibility(visibility); } public void dump(PrintWriter pw) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java index 66152fcd965e3..dd16147f7152a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java @@ -167,9 +167,6 @@ public class Clock extends TextView implements DemoMode, Tunable { if (CLOCK_SECONDS.equals(key)) { mShowSeconds = newValue != null && Integer.parseInt(newValue) != 0; updateShowSeconds(); - } else if (StatusBarIconController.ICON_BLACKLIST.equals(key)) { - ArraySet list = StatusBarIconController.getIconBlacklist(newValue); - setVisibility(list.contains("clock") ? View.GONE : View.VISIBLE); } }