package com.android.systemui.qs.tiles;
+import android.app.ActivityManager;
import android.content.Intent;
import android.provider.Settings;
import android.widget.Switch;
public class NightDisplayTile extends QSTile<QSTile.BooleanState>
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
}
@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();
state.value = isActivated;
@Override
protected void setListening(boolean listening) {
+ mIsListening = listening;
if (listening) {
mController.setListener(this);
refreshState();
|| ((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);