From dd32d90843baec8c2311ca7a9607031aec3ab5b6 Mon Sep 17 00:00:00 2001 From: Justin Klaassen Date: Sun, 31 Jul 2016 10:25:36 -0700 Subject: [PATCH] Fix Night display QSTile for secondary users Bug: 30459698 Change-Id: I8d56caabf6401239ab9e05ebbe54ecc64a1ab695 --- .../systemui/qs/tiles/NightDisplayTile.java | 23 +++++++++++++++++-- .../systemui/statusbar/phone/QSTileHost.java | 3 +++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/NightDisplayTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/NightDisplayTile.java index 2d1f753898b77..9415b27f7570d 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/NightDisplayTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/NightDisplayTile.java @@ -16,6 +16,7 @@ package com.android.systemui.qs.tiles; +import android.app.ActivityManager; import android.content.Intent; import android.provider.Settings; import android.widget.Switch; @@ -29,11 +30,12 @@ import com.android.systemui.qs.QSTile; public class NightDisplayTile extends QSTile implements NightDisplayController.Callback { - private final NightDisplayController mController; + private NightDisplayController mController; + private boolean mIsListening; public NightDisplayTile(Host host) { super(host); - mController = new NightDisplayController(mContext); + mController = new NightDisplayController(mContext, ActivityManager.getCurrentUser()); } @Override @@ -53,6 +55,22 @@ public class NightDisplayTile extends QSTile mController.setActivated(activated); } + @Override + protected void handleUserSwitch(int newUserId) { + // Stop listening to the old controller. + if (mIsListening) { + mController.setListener(null); + } + + // Make a new controller for the new user. + mController = new NightDisplayController(mContext, newUserId); + if (mIsListening) { + mController.setListener(this); + } + + super.handleUserSwitch(newUserId); + } + @Override protected void handleUpdateState(BooleanState state, Object arg) { final boolean isActivated = mController.isActivated(); @@ -79,6 +97,7 @@ public class NightDisplayTile extends QSTile @Override protected void setListening(boolean listening) { + mIsListening = listening; if (listening) { mController.setListener(this); refreshState(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java index 405ccd601ff6e..10facea1e8f8c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java @@ -334,6 +334,9 @@ public class QSTileHost implements QSTile.Host, Tunable { || ((CustomTile) tile).getUser() == currentUser)) { if (DEBUG) Log.d(TAG, "Adding " + tile); tile.removeCallbacks(); + if (!(tile instanceof CustomTile) && mCurrentUser != currentUser) { + tile.userSwitch(currentUser); + } newTiles.put(tileSpec, tile); } else { if (DEBUG) Log.d(TAG, "Creating tile: " + tileSpec);