From a84ca65600dc29334721f89d82c3f455baf2b237 Mon Sep 17 00:00:00 2001 From: ShevT Date: Sun, 19 May 2024 20:40:23 +0900 Subject: [PATCH] Evolver: Add quick settings brightness slider customizations Co-authored-by: Pranav Vashi Signed-off-by: AnierinB --- res/values/evolution_arrays.xml | 24 ++++++++ res/values/evolution_strings.xml | 12 ++++ res/xml/evolution_settings_quick_settings.xml | 35 +++++++++++ .../quicksettings/QuickSettings.java | 59 +++++++++++++++++-- 4 files changed, 126 insertions(+), 4 deletions(-) diff --git a/res/values/evolution_arrays.xml b/res/values/evolution_arrays.xml index 5d2fa76..d8014aa 100644 --- a/res/values/evolution_arrays.xml +++ b/res/values/evolution_arrays.xml @@ -80,4 +80,28 @@ 0 3 + + + + @string/quick_settings_show_brightness_slider_never + @string/quick_settings_show_brightness_slider_expanded + @string/quick_settings_show_brightness_slider_always + + + + 0 + 1 + 2 + + + + @string/quick_settings_brightness_slider_position_top + @string/quick_settings_brightness_slider_position_bottom + + + + 0 + 1 + + diff --git a/res/values/evolution_strings.xml b/res/values/evolution_strings.xml index fda413d..593da0d 100644 --- a/res/values/evolution_strings.xml +++ b/res/values/evolution_strings.xml @@ -127,6 +127,18 @@ Display an indicator when the screen is being projected + Brightness slider + Brightness slider + Never show + Only show when expanded + Always show + Brightness slider position + Top + Bottom + Auto brightness icon + Show icon toggle for adaptive brightness next to the slider + Haptic feedback + Provide haptic feedback on changing brightness using slider Lock screen Hide on secure lock screen Hide all quick settings in the notification shade while the device is locked diff --git a/res/xml/evolution_settings_quick_settings.xml b/res/xml/evolution_settings_quick_settings.xml index a4948ea..97d0859 100644 --- a/res/xml/evolution_settings_quick_settings.xml +++ b/res/xml/evolution_settings_quick_settings.xml @@ -9,6 +9,41 @@ xmlns:settings="http://schemas.android.com/apk/res/com.android.settings" android:title="@string/quick_settings_title"> + + + + + + + + + + + + + + + diff --git a/src/org/evolution/settings/fragments/quicksettings/QuickSettings.java b/src/org/evolution/settings/fragments/quicksettings/QuickSettings.java index 48b5f99..d6d35d7 100644 --- a/src/org/evolution/settings/fragments/quicksettings/QuickSettings.java +++ b/src/org/evolution/settings/fragments/quicksettings/QuickSettings.java @@ -9,11 +9,14 @@ import android.content.ContentResolver; import android.content.Context; import android.content.res.Resources; import android.os.Bundle; +import android.os.UserHandle; +import androidx.preference.ListPreference; import androidx.preference.Preference; import androidx.preference.Preference.OnPreferenceChangeListener; import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceScreen; +import androidx.preference.SwitchPreference; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; @@ -23,6 +26,10 @@ import com.android.settingslib.search.SearchIndexable; import java.util.List; +import lineageos.preference.LineageSecureSettingSwitchPreference; +import lineageos.providers.LineageSettings; + +import org.evolution.settings.preferences.SystemSettingSwitchPreference; import org.evolution.settings.utils.DeviceUtils; @SearchIndexable @@ -30,24 +37,55 @@ public class QuickSettings extends SettingsPreferenceFragment implements Preference.OnPreferenceChangeListener { private static final String TAG = "QuickSettings"; + + private static final String KEY_BRIGHTNESS_SLIDER_POSITION = "qs_brightness_slider_position"; + private static final String KEY_BRIGHTNESS_SLIDER_HAPTIC = "qs_brightness_slider_haptic"; + private static final String KEY_INTERFACE_CATEGORY = "quick_settings_interface_category"; private static final String KEY_MISCELLANEOUS_CATEGORY = "quick_settings_miscellaneous_category"; private static final String KEY_QS_BLUETOOTH_SHOW_DIALOG = "qs_bt_show_dialog"; + private static final String KEY_SHOW_BRIGHTNESS_SLIDER = "qs_show_brightness_slider"; + private static final String KEY_SHOW_AUTO_BRIGHTNESS = "qs_show_auto_brightness"; + private PreferenceCategory mInterfaceCategory; private PreferenceCategory mMiscellaneousCategory; + private ListPreference mShowBrightnessSlider; + private ListPreference mBrightnessSliderPosition; + private LineageSecureSettingSwitchPreference mShowAutoBrightness; + private SystemSettingSwitchPreference mBrightnessSliderHaptic; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.evolution_settings_quick_settings); - final Context context = getContext(); - final ContentResolver resolver = context.getContentResolver(); + final Context mContext = getContext(); + final ContentResolver resolver = mContext.getContentResolver(); final PreferenceScreen prefScreen = getPreferenceScreen(); - final Resources resources = context.getResources(); + final Resources resources = mContext.getResources(); + + mShowBrightnessSlider = findPreference(KEY_SHOW_BRIGHTNESS_SLIDER); + mShowBrightnessSlider.setOnPreferenceChangeListener(this); + boolean showSlider = LineageSettings.Secure.getIntForUser(resolver, + LineageSettings.Secure.QS_SHOW_BRIGHTNESS_SLIDER, 1, UserHandle.USER_CURRENT) > 0; + + mBrightnessSliderPosition = findPreference(KEY_BRIGHTNESS_SLIDER_POSITION); + mBrightnessSliderPosition.setEnabled(showSlider); + + mBrightnessSliderHaptic = findPreference(KEY_BRIGHTNESS_SLIDER_HAPTIC); + mBrightnessSliderHaptic.setEnabled(showSlider); + + mShowAutoBrightness = findPreference(KEY_SHOW_AUTO_BRIGHTNESS); + boolean automaticAvailable = mContext.getResources().getBoolean( + com.android.internal.R.bool.config_automatic_brightness_available); + if (automaticAvailable) { + mShowAutoBrightness.setEnabled(showSlider); + } else { + prefScreen.removePreference(mShowAutoBrightness); + } mMiscellaneousCategory = (PreferenceCategory) findPreference(KEY_MISCELLANEOUS_CATEGORY); - if (!DeviceUtils.deviceSupportsBluetooth(context)) { + if (!DeviceUtils.deviceSupportsBluetooth(mContext)) { prefScreen.removePreference(mMiscellaneousCategory); } } @@ -56,6 +94,14 @@ public class QuickSettings extends SettingsPreferenceFragment implements public boolean onPreferenceChange(Preference preference, Object newValue) { final Context context = getContext(); final ContentResolver resolver = context.getContentResolver(); + if (preference == mShowBrightnessSlider) { + int value = Integer.parseInt((String) newValue); + mBrightnessSliderPosition.setEnabled(value > 0); + mBrightnessSliderHaptic.setEnabled(value > 0); + if (mShowAutoBrightness != null) + mShowAutoBrightness.setEnabled(value > 0); + return true; + } return false; } @@ -72,6 +118,11 @@ public class QuickSettings extends SettingsPreferenceFragment implements List keys = super.getNonIndexableKeys(context); final Resources resources = context.getResources(); + boolean autoBrightnessAvailable = resources.getBoolean( + com.android.internal.R.bool.config_automatic_brightness_available); + if (!autoBrightnessAvailable) { + keys.add(KEY_SHOW_AUTO_BRIGHTNESS); + } if (!DeviceUtils.deviceSupportsBluetooth(context)) { keys.add(KEY_QS_BLUETOOTH_SHOW_DIALOG); }