diff options
3 files changed, 20 insertions, 9 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTile.java b/packages/SystemUI/src/com/android/systemui/qs/QSTile.java index cb685fe..6ef6e9e 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSTile.java @@ -123,7 +123,7 @@ public abstract class QSTile<TState extends State> implements Listenable { } public void userSwitch(int newUserId) { - mHandler.obtainMessage(H.USER_SWITCH, newUserId).sendToTarget(); + mHandler.obtainMessage(H.USER_SWITCH, newUserId, 0).sendToTarget(); } public void fireToggleStateChanged(boolean state) { diff --git a/packages/SystemUI/src/com/android/systemui/qs/SecureSetting.java b/packages/SystemUI/src/com/android/systemui/qs/SecureSetting.java index 3ed3d30..0ab6626 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/SecureSetting.java +++ b/packages/SystemUI/src/com/android/systemui/qs/SecureSetting.java @@ -16,6 +16,7 @@ package com.android.systemui.qs; +import android.app.ActivityManager; import android.content.Context; import android.database.ContentObserver; import android.os.Handler; @@ -28,32 +29,33 @@ public abstract class SecureSetting extends ContentObserver implements Listenabl private final Context mContext; private final String mSettingName; + private boolean mListening; + private int mUserId; + protected abstract void handleValueChanged(int value); public SecureSetting(Context context, Handler handler, String settingName) { super(handler); mContext = context; mSettingName = settingName; - rebindForCurrentUser(); - } - - public void rebindForCurrentUser() { + mUserId = ActivityManager.getCurrentUser(); setListening(true); } public int getValue() { - return Secure.getInt(mContext.getContentResolver(), mSettingName, 0); + return Secure.getIntForUser(mContext.getContentResolver(), mSettingName, 0, mUserId); } public void setValue(int value) { - Secure.putInt(mContext.getContentResolver(), mSettingName, value); + Secure.putIntForUser(mContext.getContentResolver(), mSettingName, value, mUserId); } @Override public void setListening(boolean listening) { + mListening = listening; if (listening) { mContext.getContentResolver().registerContentObserver( - Secure.getUriFor(mSettingName), false, this); + Secure.getUriFor(mSettingName), false, this, mUserId); } else { mContext.getContentResolver().unregisterContentObserver(this); } @@ -63,4 +65,12 @@ public abstract class SecureSetting extends ContentObserver implements Listenabl public void onChange(boolean selfChange) { handleValueChanged(getValue()); } + + public void setUserId(int userId) { + mUserId = userId; + if (mListening) { + setListening(false); + setListening(true); + } + } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java index a62bbff..01849c1 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java @@ -71,7 +71,8 @@ public class ColorInversionTile extends QSTile<QSTile.BooleanState> { @Override protected void handleUserSwitch(int newUserId) { - mSetting.rebindForCurrentUser(); + mSetting.setUserId(newUserId); + handleRefreshState(mSetting.getValue()); } @Override |