From 2efab55c9c2fbf6605595561debd62c319ef6c4c Mon Sep 17 00:00:00 2001 From: Adin Kwok Date: Thu, 12 Apr 2018 18:33:43 -0700 Subject: [PATCH] Cherish: Update Smart Pixels menu MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Menu updates preferences when changed externally via tile Now allows user to enable/disable auto-enable. Change-Id: Iaf78a60e5f083fde3c6fe562623169c01ba2ea22 Signed-off-by: shagbag913 Signed-off-by: Hưng Phan --- .../preferences/fragments/SmartPixels.java | 60 +++++++++++++++---- 1 file changed, 50 insertions(+), 10 deletions(-) diff --git a/src/com/cherish/settings/preferences/fragments/SmartPixels.java b/src/com/cherish/settings/preferences/fragments/SmartPixels.java index 6919a17..b8c0f3a 100644 --- a/src/com/cherish/settings/preferences/fragments/SmartPixels.java +++ b/src/com/cherish/settings/preferences/fragments/SmartPixels.java @@ -19,7 +19,10 @@ package com.cherish.settings.fragments; import android.content.Context; import android.content.ContentResolver; import android.content.res.Resources; +import android.database.ContentObserver; +import android.net.Uri; import android.os.Bundle; +import android.os.Handler; import android.os.UserHandle; import android.os.PowerManager; import android.provider.SearchIndexableResource; @@ -45,11 +48,17 @@ import java.util.List; public class SmartPixels extends SettingsPreferenceFragment implements Preference.OnPreferenceChangeListener { private static final String TAG = "SmartPixels"; - + private static final String ENABLE = "smart_pixels_enable"; private static final String ON_POWER_SAVE = "smart_pixels_on_power_save"; + private Handler mHandler = new Handler(); + private SmartPixelsObserver mSmartPixelsObserver; + private SystemSettingSwitchPreference mSmartPixelsEnable; private SystemSettingSwitchPreference mSmartPixelsOnPowerSave; + private boolean mIsSmartPixelsEnabled; + private boolean mIsSmartPixelsOnPowerSave; + ContentResolver resolver; @Override @@ -60,9 +69,10 @@ public class SmartPixels extends SettingsPreferenceFragment implements resolver = getActivity().getContentResolver(); + mSmartPixelsEnable = (SystemSettingSwitchPreference) findPreference(ENABLE); mSmartPixelsOnPowerSave = (SystemSettingSwitchPreference) findPreference(ON_POWER_SAVE); - updateDependency(); + mSmartPixelsObserver = new SmartPixelsObserver(mHandler); } @Override @@ -73,28 +83,58 @@ public class SmartPixels extends SettingsPreferenceFragment implements @Override public void onResume() { super.onResume(); + if (mSmartPixelsObserver != null) { + mSmartPixelsObserver.register(); + } } @Override public void onPause() { super.onPause(); + if (mSmartPixelsObserver != null) { + mSmartPixelsObserver.unregister(); + } } public boolean onPreferenceChange(Preference preference, Object objValue) { final String key = preference.getKey(); - updateDependency(); return true; } - private void updateDependency() { - boolean mUseOnPowerSave = (Settings.System.getIntForUser( + private void updatePreferences() { + mIsSmartPixelsEnabled = (Settings.System.getIntForUser( + resolver, Settings.System.SMART_PIXELS_ENABLE, + 0, UserHandle.USER_CURRENT) == 1); + mIsSmartPixelsOnPowerSave = (Settings.System.getIntForUser( resolver, Settings.System.SMART_PIXELS_ON_POWER_SAVE, 0, UserHandle.USER_CURRENT) == 1); - PowerManager pm = (PowerManager)getActivity().getSystemService(Context.POWER_SERVICE); - if (pm.isPowerSaveMode() && mUseOnPowerSave) { - mSmartPixelsOnPowerSave.setEnabled(false); - } else { - mSmartPixelsOnPowerSave.setEnabled(true); + + mSmartPixelsEnable.setChecked(mIsSmartPixelsEnabled); + mSmartPixelsOnPowerSave.setChecked(mIsSmartPixelsOnPowerSave); + } + + private class SmartPixelsObserver extends ContentObserver { + public SmartPixelsObserver(Handler handler) { + super(handler); + } + + public void register() { + resolver.registerContentObserver(Settings.System.getUriFor( + Settings.System.SMART_PIXELS_ENABLE), + false, this, UserHandle.USER_CURRENT); + resolver.registerContentObserver(Settings.System.getUriFor( + Settings.System.SMART_PIXELS_ON_POWER_SAVE), + false, this, UserHandle.USER_CURRENT); + } + + public void unregister() { + resolver.unregisterContentObserver(this); + } + + @Override + public void onChange(boolean selfChange) { + super.onChange(selfChange); + updatePreferences(); } }