Cherish:Extend NavBar Pulse to LockScreen [3/3]

This commit is contained in:
neobuddy89
2020-08-30 07:46:59 +07:00
committed by Hưng Phan
parent a42f967428
commit bf615af6ad
3 changed files with 141 additions and 61 deletions

View File

@@ -704,6 +704,10 @@
<string name="pulse_color_chooser">Choose color</string>
<string name="smoothing_enabled_title">Turn on smoothing</string>
<string name="smoothing_enabled_summary">Each bar is animated more smoothly</string>
<string name="show_navbar_pulse_title">Navbar Pulse</string>
<string name="show_navbar_pulse_summary">Audio graphic equalizer on the navigation bar area, also if bar is hidden</string>
<string name="show_lockscreen_pulse_title">Lockscreen Pulse</string>
<string name="show_lockscreen_pulse_summary">Audio graphic equalizer on the lockscreen</string>
<string name="pulse_advanced_category">Advanced</string>
<string name="pulse_legacy_mode_advanced_category">Fading blocks mode settings</string>
<string name="pulse_custom_fudge_factor">Sanity level</string>

View File

@@ -1,13 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2012-2014 The TeamEos Project
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.
@@ -19,126 +16,130 @@
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
android:title="@string/pulse_settings" >
<com.cherish.settings.preferences.SystemSettingSwitchPreference
<SwitchPreference
android:key="navbar_pulse_enabled"
android:title="@string/show_pulse_title"
android:summary="@string/show_pulse_summary"
android:defaultValue="false" />
android:title="@string/show_navbar_pulse_title"
android:summary="@string/show_navbar_pulse_summary"/>
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="navbar_pulse_render_style"
<SwitchPreference
android:key="lockscreen_pulse_enabled"
android:title="@string/show_lockscreen_pulse_title"
android:summary="@string/show_lockscreen_pulse_summary"/>
<SwitchPreference
android:key="ambient_pulse_enabled"
android:title="@string/show_ambient_pulse_title"
android:summary="@string/show_ambient_pulse_summary"/>
<com.cherish.settings.preferences.SecureSettingListPreference
android:key="pulse_render_style"
android:title="@string/pulse_render_mode_title"
android:entries="@array/pulse_render_mode_entries"
android:entryValues="@array/pulse_render_mode_values"
android:defaultValue="0"
android:dependency="navbar_pulse_enabled" />
android:defaultValue="0" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
<com.cherish.settings.preferences.SecureSettingSwitchPreference
android:key="pulse_smoothing_enabled"
android:title="@string/smoothing_enabled_title"
android:summary="@string/smoothing_enabled_summary"
android:defaultValue="false"
android:dependency="navbar_pulse_enabled" />
android:defaultValue="false" />
<PreferenceCategory
android:key="pulse_color_category"
android:title="@string/pulse_color"
android:dependency="navbar_pulse_enabled">
android:title="@string/pulse_color">
<com.cherish.settings.preferences.SystemSettingListPreference
android:key="navbar_pulse_color_type"
<com.cherish.settings.preferences.SecureSettingListPreference
android:key="pulse_color_mode"
android:title="@string/pulse_color_mode"
android:entries="@array/pulse_color_mode_entries"
android:entryValues="@array/pulse_color_mode_values"
android:defaultValue="1"/>
<com.cherish.settings.colorpicker.ColorPickerPreference
android:key="navbar_pulse_color_user"
<com.cherish.settings.preferences.ColorSelectPreference
android:key="pulse_color_user"
android:title="@string/pulse_color_chooser"
android:persistent="false" />
<com.cherish.settings.preferences.CustomSystemSeekBarPreference
android:key="navbar_pulse_lavalamp_speed"
<com.cherish.settings.preferences.SimpleCustomSecureSeekBarPreference
android:key="pulse_lavalamp_speed"
android:title="@string/lavamp_speed_title"
android:max="30000"
android:defaultValue="10000"
settings:min="200"
android:min="200"
settings:interval="200"
settings:units="ms"/>
</PreferenceCategory>
<PreferenceCategory
android:key="pulse_fading_bars_category"
android:title="@string/pulse_legacy_mode_advanced_category"
android:dependency="navbar_pulse_enabled">
android:title="@string/pulse_legacy_mode_advanced_category">
<com.cherish.settings.preferences.CustomSystemSeekBarPreference
<com.cherish.settings.preferences.SimpleCustomSecureSeekBarPreference
android:key="pulse_custom_dimen"
android:title="@string/pulse_custom_dimen"
android:max="30"
android:defaultValue="14"
settings:min="1"
android:min="1"
settings:units="dp"/>
<com.cherish.settings.preferences.CustomSystemSeekBarPreference
<com.cherish.settings.preferences.SimpleCustomSecureSeekBarPreference
android:key="pulse_custom_div"
android:title="@string/pulse_custom_div"
android:max="44"
android:defaultValue="16"
settings:min="2"
android:min="2"
settings:interval="2"
settings:units="dp"/>
<com.cherish.settings.preferences.CustomSystemSeekBarPreference
<com.cherish.settings.preferences.SimpleCustomSecureSeekBarPreference
android:key="pulse_filled_block_size"
android:title="@string/pulse_filled_block_size"
android:max="8"
android:defaultValue="4"
settings:min="4"
android:min="4"
settings:units="dp"/>
<com.cherish.settings.preferences.CustomSystemSeekBarPreference
<com.cherish.settings.preferences.SimpleCustomSecureSeekBarPreference
android:key="pulse_empty_block_size"
android:title="@string/pulse_empty_block_size"
android:max="4"
android:defaultValue="1"
settings:min="0"
android:min="0"
settings:units="dp"/>
<com.cherish.settings.preferences.CustomSystemSeekBarPreference
<com.cherish.settings.preferences.SimpleCustomSecureSeekBarPreference
android:key="pulse_custom_fudge_factor"
android:title="@string/pulse_custom_fudge_factor"
android:max="6"
android:defaultValue="4"
settings:min="2"/>
android:min="2"/>
</PreferenceCategory>
<PreferenceCategory
android:key="pulse_2"
android:title="@string/pulse_solid_dimen_category"
android:dependency="navbar_pulse_enabled">
android:title="@string/pulse_solid_dimen_category">
<com.cherish.settings.preferences.CustomSystemSeekBarPreference
<com.cherish.settings.preferences.SimpleCustomSecureSeekBarPreference
android:key="pulse_solid_units_opacity"
android:title="@string/pulse_solid_units_opacity"
android:max="255"
android:defaultValue="200"
settings:min="0"/>
android:min="0"/>
<com.cherish.settings.preferences.CustomSystemSeekBarPreference
<com.cherish.settings.preferences.SimpleCustomSecureSeekBarPreference
android:key="pulse_solid_units_count"
android:title="@string/pulse_solid_units_count"
android:max="128"
android:defaultValue="64"
settings:interval="16"
settings:min="32"/>
android:min="32"/>
<com.cherish.settings.preferences.CustomSystemSeekBarPreference
<com.cherish.settings.preferences.SimpleCustomSecureSeekBarPreference
android:key="pulse_solid_fudge_factor"
android:title="@string/pulse_custom_fudge_factor"
android:max="7"
android:defaultValue="5"
settings:min="2"/>
android:min="2"/>
</PreferenceCategory>
</PreferenceScreen>
</PreferenceScreen>

View File

@@ -29,6 +29,7 @@ import net.margaritov.preference.colorpicker.ColorPickerPreference;
import com.android.internal.util.cherish.CherishUtils;
import android.content.Context;
import android.content.ContentResolver;
import android.graphics.Color;
import android.os.Bundle;
import android.os.UserHandle;
@@ -47,12 +48,15 @@ import android.provider.Settings;
public class PulseSettings extends SettingsPreferenceFragment implements
Preference.OnPreferenceChangeListener, Indexable {
private static final String TAG = PulseSettings.class.getSimpleName();
private static final String PULSE_COLOR_MODE_KEY = "navbar_pulse_color_type";
private static final String PULSE_COLOR_MODE_CHOOSER_KEY = "navbar_pulse_color_user";
private static final String PULSE_COLOR_MODE_LAVA_SPEED_KEY = "navbar_pulse_lavalamp_speed";
private static final String NAVBAR_PULSE_ENABLED_KEY = "navbar_pulse_enabled";
private static final String LOCKSCREEN_PULSE_ENABLED_KEY = "lockscreen_pulse_enabled";
private static final String PULSE_SMOOTHING_KEY = "pulse_smoothing_enabled";
private static final String PULSE_COLOR_MODE_KEY = "pulse_color_mode";
private static final String PULSE_COLOR_MODE_CHOOSER_KEY = "pulse_color_user";
private static final String PULSE_COLOR_MODE_LAVA_SPEED_KEY = "pulse_lavalamp_speed";
private static final String PULSE_RENDER_CATEGORY_SOLID = "pulse_2";
private static final String PULSE_RENDER_CATEGORY_FADING = "pulse_fading_bars_category";
private static final String PULSE_RENDER_MODE_KEY = "navbar_pulse_render_style";
private static final String PULSE_RENDER_MODE_KEY = "pulse_render_style";
private static final int RENDER_STYLE_FADING_BARS = 0;
private static final int RENDER_STYLE_SOLID_LINES = 1;
private static final int COLOR_TYPE_ACCENT = 0;
@@ -60,11 +64,17 @@ public class PulseSettings extends SettingsPreferenceFragment implements
private static final int COLOR_TYPE_LAVALAMP = 2;
private static final int COLOR_TYPE_AUTO = 3;
private SwitchPreference mNavbarPulse;
private SwitchPreference mLockscreenPulse;
private SwitchPreference mPulseSmoothing;
private Preference mRenderMode;
private ListPreference mColorModePref;
private ColorPickerPreference mColorPickerPref;
private Preference mLavaSpeedPref;
private PreferenceCategory mFadingBarsCat;
private PreferenceCategory mSolidBarsCat;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -73,13 +83,27 @@ public class PulseSettings extends SettingsPreferenceFragment implements
mFooterPreferenceMixin.createFooterPreference()
.setTitle(R.string.pulse_help_policy_notice_summary);
ContentResolver resolver = getContentResolver();
mNavbarPulse = (SwitchPreference) findPreference(NAVBAR_PULSE_ENABLED_KEY);
boolean navbarPulse = Settings.Secure.getIntForUser(resolver,
Settings.Secure.NAVBAR_PULSE_ENABLED, 0, UserHandle.USER_CURRENT) != 0;
mNavbarPulse.setChecked(navbarPulse);
mNavbarPulse.setOnPreferenceChangeListener(this);
mLockscreenPulse = (SwitchPreference) findPreference(LOCKSCREEN_PULSE_ENABLED_KEY);
boolean lockscreenPulse = Settings.Secure.getIntForUser(resolver,
Settings.Secure.LOCKSCREEN_PULSE_ENABLED, 0, UserHandle.USER_CURRENT) != 0;
mLockscreenPulse.setChecked(lockscreenPulse);
mLockscreenPulse.setOnPreferenceChangeListener(this);
mColorModePref = (ListPreference) findPreference(PULSE_COLOR_MODE_KEY);
mColorPickerPref = (ColorPickerPreference) findPreference(PULSE_COLOR_MODE_CHOOSER_KEY);
mLavaSpeedPref = findPreference(PULSE_COLOR_MODE_LAVA_SPEED_KEY);
mColorModePref.setOnPreferenceChangeListener(this);
int colorMode = Settings.System.getIntForUser(getContentResolver(),
Settings.System.PULSE_COLOR_TYPE, COLOR_TYPE_ACCENT, UserHandle.USER_CURRENT);
mColorPickerPref.setDefaultValue(CherishUtils.getThemeAccentColor(getContext()));
int colorMode = Settings.Secure.getIntForUser(getContentResolver(),
Settings.Secure.PULSE_COLOR_MODE, COLOR_TYPE_ACCENT, UserHandle.USER_CURRENT);
if (colorMode == COLOR_TYPE_ACCENT) {
mColorPickerPref.setNewPreviewColor(CherishUtils.getThemeAccentColor(getContext()));
}
@@ -87,23 +111,72 @@ public class PulseSettings extends SettingsPreferenceFragment implements
mRenderMode = findPreference(PULSE_RENDER_MODE_KEY);
mRenderMode.setOnPreferenceChangeListener(this);
int renderMode = Settings.System.getIntForUser(getContentResolver(),
Settings.System.PULSE_RENDER_STYLE_URI, 0, UserHandle.USER_CURRENT);
updateRenderCategories(renderMode);
mFadingBarsCat = (PreferenceCategory) findPreference(
PULSE_RENDER_CATEGORY_FADING);
mSolidBarsCat = (PreferenceCategory) findPreference(
PULSE_RENDER_CATEGORY_SOLID);
mPulseSmoothing = (SwitchPreference) findPreference(PULSE_SMOOTHING_KEY);
updateAllPrefs();
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (preference.equals(mColorModePref)) {
ContentResolver resolver = getContext().getContentResolver();
if (preference == mNavbarPulse) {
boolean val = (Boolean) newValue;
Settings.Secure.putIntForUser(resolver,
Settings.Secure.NAVBAR_PULSE_ENABLED, val ? 1 : 0, UserHandle.USER_CURRENT);
updateAllPrefs();
return true;
} else if (preference == mLockscreenPulse) {
boolean val = (Boolean) newValue;
Settings.Secure.putIntForUser(resolver,
Settings.Secure.LOCKSCREEN_PULSE_ENABLED, val ? 1 : 0, UserHandle.USER_CURRENT);
updateAllPrefs();
return true;
} else if (preference == mColorModePref) {
updateColorPrefs(Integer.valueOf(String.valueOf(newValue)));
return true;
} else if (preference.equals(mRenderMode)) {
} else if (preference == mRenderMode) {
updateRenderCategories(Integer.valueOf(String.valueOf(newValue)));
return true;
}
return false;
}
private void updateAllPrefs() {
ContentResolver resolver = getContentResolver();
boolean navbarPulse = Settings.Secure.getIntForUser(resolver,
Settings.Secure.NAVBAR_PULSE_ENABLED, 0, UserHandle.USER_CURRENT) != 0;
boolean lockscreenPulse = Settings.Secure.getIntForUser(resolver,
Settings.Secure.LOCKSCREEN_PULSE_ENABLED, 0, UserHandle.USER_CURRENT) != 0;
mPulseSmoothing.setEnabled(navbarPulse || lockscreenPulse);
mColorModePref.setEnabled(navbarPulse || lockscreenPulse);
if (navbarPulse || lockscreenPulse) {
int colorMode = Settings.Secure.getIntForUser(resolver,
Settings.Secure.PULSE_COLOR_MODE, COLOR_TYPE_ACCENT, UserHandle.USER_CURRENT);
updateColorPrefs(colorMode);
} else {
mColorPickerPref.setEnabled(false);
mLavaSpeedPref.setEnabled(false);
}
mRenderMode.setEnabled(navbarPulse || lockscreenPulse);
if (navbarPulse || lockscreenPulse) {
int renderMode = Settings.Secure.getIntForUser(resolver,
Settings.Secure.PULSE_RENDER_STYLE, RENDER_STYLE_SOLID_LINES, UserHandle.USER_CURRENT);
updateRenderCategories(renderMode);
} else {
mFadingBarsCat.setEnabled(false);
mSolidBarsCat.setEnabled(false);
}
}
private void updateColorPrefs(int val) {
switch (val) {
case COLOR_TYPE_ACCENT:
@@ -126,12 +199,14 @@ public class PulseSettings extends SettingsPreferenceFragment implements
}
private void updateRenderCategories(int mode) {
PreferenceCategory fadingBarsCat = (PreferenceCategory) findPreference(
PULSE_RENDER_CATEGORY_FADING);
fadingBarsCat.setEnabled(mode == RENDER_STYLE_FADING_BARS);
PreferenceCategory solidBarsCat = (PreferenceCategory) findPreference(
PULSE_RENDER_CATEGORY_SOLID);
solidBarsCat.setEnabled(mode == RENDER_STYLE_SOLID_LINES);
mFadingBarsCat.setEnabled(mode == RENDER_STYLE_FADING_BARS);
mSolidBarsCat.setEnabled(mode == RENDER_STYLE_SOLID_LINES);
}
public static void reset(Context mContext) {
ContentResolver resolver = mContext.getContentResolver();
Settings.Secure.putIntForUser(resolver,
Settings.Secure.LOCKSCREEN_PULSE_ENABLED, 1, UserHandle.USER_CURRENT);
}
@Override