diff --git a/res/values/cherish_arrays.xml b/res/values/cherish_arrays.xml
index 545aa80..88a66b5 100644
--- a/res/values/cherish_arrays.xml
+++ b/res/values/cherish_arrays.xml
@@ -1201,4 +1201,49 @@
- 16
- 17
+
+
+
+ - 12
+ - 25
+ - 38
+ - 50
+ - 62
+ - 75
+ - 88
+
+
+
+ - 0
+ - 1
+ - 2
+ - 3
+ - 4
+ - 5
+ - 6
+
+
+
+ - 15 seconds
+ - 30 seconds
+ - 1 minute
+ - 2 minutes
+ - 5 minutes
+ - 10 minutes
+ - 20 minutes
+ - 30 minutes
+ - 1 hour
+
+
+
+ - 0
+ - 1
+ - 2
+ - 3
+ - 4
+ - 5
+ - 6
+ - 7
+ - 8
+
diff --git a/res/values/cherish_strings.xml b/res/values/cherish_strings.xml
index ac9abb2..2ba6d6a 100644
--- a/res/values/cherish_strings.xml
+++ b/res/values/cherish_strings.xml
@@ -1079,4 +1079,12 @@
Vibrate on connect
Vibrate on call waiting
Vibrate on disconnect
+
+
+ Smart Pixels
+ Save battery by shutting off extra pixels
+ Auto-enable on battery saver
+ Enable with battery saver to increase power savings
+ Percent of pixels to disable
+ Burn-in protection interval
diff --git a/res/xml/cherish_settings_misc.xml b/res/xml/cherish_settings_misc.xml
index 5f7e116..c289a93 100644
--- a/res/xml/cherish_settings_misc.xml
+++ b/res/xml/cherish_settings_misc.xml
@@ -77,6 +77,12 @@
android:summary="@string/volume_steps_summary"
android:icon="@drawable/ic_volume"
android:fragment="com.cherish.settings.fragments.VolumeStepsFragment" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/com/cherish/settings/fragments/MiscSettings.java b/src/com/cherish/settings/fragments/MiscSettings.java
index 230ccd7..e7164d7 100644
--- a/src/com/cherish/settings/fragments/MiscSettings.java
+++ b/src/com/cherish/settings/fragments/MiscSettings.java
@@ -34,15 +34,29 @@ import com.cherish.settings.preferences.SystemSettingListPreference;
public class MiscSettings extends SettingsPreferenceFragment implements
OnPreferenceChangeListener {
+ private static final String SMART_PIXELS = "smart_pixels";
+
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
ContentResolver resolver = getActivity().getContentResolver();
addPreferencesFromResource(R.xml.cherish_settings_misc);
+ updateSmartPixelsPreference();
}
+ private void updateSmartPixelsPreference() {
+ PreferenceScreen prefSet = getPreferenceScreen();
+ boolean enableSmartPixels = getContext().getResources().
+ getBoolean(com.android.internal.R.bool.config_enableSmartPixels);
+ Preference smartPixels = findPreference(SMART_PIXELS);
+
+ if (!enableSmartPixels){
+ prefSet.removePreference(smartPixels);
+ }
+ }
+
@Override
public boolean onPreferenceChange(Preference preference, Object objValue) {
return false;
diff --git a/src/com/cherish/settings/preferences/fragments/SmartPixels.java b/src/com/cherish/settings/preferences/fragments/SmartPixels.java
new file mode 100644
index 0000000..6919a17
--- /dev/null
+++ b/src/com/cherish/settings/preferences/fragments/SmartPixels.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright (C) 2018 CarbonROM
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.cherish.settings.fragments;
+
+import android.content.Context;
+import android.content.ContentResolver;
+import android.content.res.Resources;
+import android.os.Bundle;
+import android.os.UserHandle;
+import android.os.PowerManager;
+import android.provider.SearchIndexableResource;
+import android.provider.Settings;
+
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
+
+import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
+
+import com.android.settings.R;
+import com.android.settings.SettingsPreferenceFragment;
+import com.android.settings.Utils;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settingslib.search.SearchIndexable;
+
+import com.cherish.settings.preferences.SystemSettingSwitchPreference;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
+public class SmartPixels extends SettingsPreferenceFragment implements
+ Preference.OnPreferenceChangeListener {
+ private static final String TAG = "SmartPixels";
+
+ private static final String ON_POWER_SAVE = "smart_pixels_on_power_save";
+
+ private SystemSettingSwitchPreference mSmartPixelsOnPowerSave;
+
+ ContentResolver resolver;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ addPreferencesFromResource(R.xml.cherish_settings_smart_pixels);
+
+ resolver = getActivity().getContentResolver();
+
+ mSmartPixelsOnPowerSave = (SystemSettingSwitchPreference) findPreference(ON_POWER_SAVE);
+
+ updateDependency();
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return MetricsEvent.CHERISH_SETTINGS;
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+ }
+
+ public boolean onPreferenceChange(Preference preference, Object objValue) {
+ final String key = preference.getKey();
+ updateDependency();
+ return true;
+ }
+
+ private void updateDependency() {
+ boolean mUseOnPowerSave = (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);
+ }
+ }
+
+ /**
+ * For Search.
+ */
+
+ public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+ new BaseSearchIndexProvider() {
+
+ @Override
+ public List getXmlResourcesToIndex(Context context,
+ boolean enabled) {
+ ArrayList result =
+ new ArrayList();
+ SearchIndexableResource sir = new SearchIndexableResource(context);
+ if (context.getResources().
+ getBoolean(com.android.internal.R.bool.config_enableSmartPixels)) {
+ sir.xmlResId = R.xml.cherish_settings_smart_pixels;
+ }
+ return result;
+ }
+
+ @Override
+ public List getNonIndexableKeys(Context context) {
+ List keys = super.getNonIndexableKeys(context);
+ return keys;
+ }
+ };
+}