diff options
author | Bruno Martins <bgcngm@gmail.com> | 2020-06-09 21:47:24 +0100 |
---|---|---|
committer | Luca Stefani <luca.stefani.ge1@gmail.com> | 2020-06-10 23:30:25 +0200 |
commit | f730abf925a48c48953eb7177af7f06cd7c76a09 (patch) | |
tree | 2fc48c4b3a019538a10cef7a3261c122b0c490d1 | |
parent | 230e19d9f7719dd67e6b4e47be75ccedc23cada0 (diff) | |
download | frameworks_base-f730abf925a48c48953eb7177af7f06cd7c76a09.tar.gz frameworks_base-f730abf925a48c48953eb7177af7f06cd7c76a09.tar.bz2 frameworks_base-f730abf925a48c48953eb7177af7f06cd7c76a09.zip |
AODTile: Rewrite AOD setting handling
This fixes the tile status on clean installs, which was showing as
active despite AOD being disabled.
Change-Id: I148cfb34938165395bc52c830d1f2e374b5427df
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/qs/tiles/AODTile.java | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/AODTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/AODTile.java index 0ecec4458f9..20243440378 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/AODTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/AODTile.java @@ -24,6 +24,7 @@ import android.service.quicksettings.Tile; import com.android.systemui.R; import com.android.systemui.plugins.qs.QSTile.BooleanState; import com.android.systemui.qs.QSHost; +import com.android.systemui.qs.SecureSetting; import com.android.systemui.qs.tileimpl.QSTileImpl; import com.android.systemui.statusbar.policy.BatteryController; @@ -33,15 +34,22 @@ import javax.inject.Inject; public class AODTile extends QSTileImpl<BooleanState> implements BatteryController.BatteryStateChangeCallback { - private boolean mAodDisabled; + private final Icon mIcon = ResourceIcon.get(R.drawable.ic_qs_aod); private final BatteryController mBatteryController; + private final SecureSetting mSetting; + @Inject public AODTile(QSHost host, BatteryController batteryController) { super(host); - mAodDisabled = Settings.Secure.getInt(mContext.getContentResolver(), - Settings.Secure.DOZE_ALWAYS_ON, 1) == 0; + + mSetting = new SecureSetting(mContext, mHandler, Settings.Secure.DOZE_ALWAYS_ON) { + @Override + protected void handleValueChanged(int value, boolean observedChange) { + handleRefreshState(value); + } + }; mBatteryController = batteryController; batteryController.observe(getLifecycle(), this); @@ -67,10 +75,7 @@ public class AODTile extends QSTileImpl<BooleanState> implements @Override public void handleClick() { - mAodDisabled = !mAodDisabled; - Settings.Secure.putInt(mContext.getContentResolver(), - Settings.Secure.DOZE_ALWAYS_ON, - mAodDisabled ? 0 : 1); + setEnabled(!mState.value); refreshState(); } @@ -79,6 +84,12 @@ public class AODTile extends QSTileImpl<BooleanState> implements return null; } + private void setEnabled(boolean enabled) { + Settings.Secure.putInt(mContext.getContentResolver(), + Settings.Secure.DOZE_ALWAYS_ON, + enabled ? 1 : 0); + } + @Override public CharSequence getTileLabel() { if (mBatteryController.isAodPowerSave()) { @@ -89,19 +100,19 @@ public class AODTile extends QSTileImpl<BooleanState> implements @Override protected void handleUpdateState(BooleanState state, Object arg) { + final int value = arg instanceof Integer ? (Integer) arg : mSetting.getValue(); + final boolean enable = value != 0; if (state.slash == null) { state.slash = new SlashState(); } state.icon = mIcon; - state.value = mAodDisabled; + state.value = enable; state.slash.isSlashed = state.value; state.label = mContext.getString(R.string.quick_settings_aod_label); if (mBatteryController.isAodPowerSave()) { state.state = Tile.STATE_UNAVAILABLE; - } else if (mAodDisabled) { - state.state = Tile.STATE_INACTIVE; } else { - state.state = Tile.STATE_ACTIVE; + state.state = enable ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE; } } |