Merge "QS: Inversion tile: Don't consider initial 0 setting trackable." into lmp-mr1-dev

This commit is contained in:
John Spurlock
2014-11-20 13:20:06 +00:00
committed by Android (Google) Code Review
2 changed files with 15 additions and 6 deletions

View File

@@ -26,24 +26,26 @@ import com.android.systemui.statusbar.policy.Listenable;
/** Helper for managing a secure setting. **/ /** Helper for managing a secure setting. **/
public abstract class SecureSetting extends ContentObserver implements Listenable { public abstract class SecureSetting extends ContentObserver implements Listenable {
private static final int DEFAULT = 0;
private final Context mContext; private final Context mContext;
private final String mSettingName; private final String mSettingName;
private boolean mListening; private boolean mListening;
private int mUserId; private int mUserId;
private int mObservedValue = DEFAULT;
protected abstract void handleValueChanged(int value); protected abstract void handleValueChanged(int value, boolean observedChange);
public SecureSetting(Context context, Handler handler, String settingName) { public SecureSetting(Context context, Handler handler, String settingName) {
super(handler); super(handler);
mContext = context; mContext = context;
mSettingName = settingName; mSettingName = settingName;
mUserId = ActivityManager.getCurrentUser(); mUserId = ActivityManager.getCurrentUser();
setListening(true);
} }
public int getValue() { public int getValue() {
return Secure.getIntForUser(mContext.getContentResolver(), mSettingName, 0, mUserId); return Secure.getIntForUser(mContext.getContentResolver(), mSettingName, DEFAULT, mUserId);
} }
public void setValue(int value) { public void setValue(int value) {
@@ -52,18 +54,23 @@ public abstract class SecureSetting extends ContentObserver implements Listenabl
@Override @Override
public void setListening(boolean listening) { public void setListening(boolean listening) {
if (listening == mListening) return;
mListening = listening; mListening = listening;
if (listening) { if (listening) {
mObservedValue = getValue();
mContext.getContentResolver().registerContentObserver( mContext.getContentResolver().registerContentObserver(
Secure.getUriFor(mSettingName), false, this, mUserId); Secure.getUriFor(mSettingName), false, this, mUserId);
} else { } else {
mContext.getContentResolver().unregisterContentObserver(this); mContext.getContentResolver().unregisterContentObserver(this);
mObservedValue = DEFAULT;
} }
} }
@Override @Override
public void onChange(boolean selfChange) { public void onChange(boolean selfChange) {
handleValueChanged(getValue()); final int value = getValue();
handleValueChanged(value, value != mObservedValue);
mObservedValue = value;
} }
public void setUserId(int userId) { public void setUserId(int userId) {

View File

@@ -41,8 +41,10 @@ public class ColorInversionTile extends QSTile<QSTile.BooleanState> {
mSetting = new SecureSetting(mContext, mHandler, mSetting = new SecureSetting(mContext, mHandler,
Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED) { Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED) {
@Override @Override
protected void handleValueChanged(int value) { protected void handleValueChanged(int value, boolean observedChange) {
mUsageTracker.trackUsage(); if (value != 0 || observedChange) {
mUsageTracker.trackUsage();
}
if (mListening) { if (mListening) {
handleRefreshState(value); handleRefreshState(value);
} }