Cherish: Introduce awesome brightness slider and UI style [3/3]

Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
This commit is contained in:
ZeNiXxX
2020-12-29 13:54:44 +07:00
committed by Hưng Phan
parent 69d6ea5f4a
commit f1a46632db
4 changed files with 155 additions and 0 deletions

View File

@@ -1049,4 +1049,40 @@
<item>2</item>
<item>3</item>
</string-array>
<!-- Brightness sliders styles -->
<string-array name="brightness_slider_style_selector_entries" translatable="false">
<item>@string/brightness_slider_style_default</item>
<item>@string/brightness_slider_style_daniel</item>
<item>@string/brightness_slider_style_mememini</item>
<item>@string/brightness_slider_style_memeround</item>
<item>@string/brightness_slider_style_memeroundstroke</item>
<item>@string/brightness_slider_style_memestroke</item>
</string-array>
<string-array name="brightness_slider_style_selector_values" translatable="false">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
</string-array>
<!-- Notification Background styles -->
<string-array name="ui_style_selector_entries" translatable="false">
<item>@string/ui_style_default</item>
<item>@string/ui_style_no_corner_radius</item>
<item>@string/ui_style_rectangle</item>
<item>@string/ui_style_round_large</item>
<item>@string/ui_style_round_medium</item>
</string-array>
<string-array name="ui_style_selector_values" translatable="false">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
</string-array>
</resources>

View File

@@ -993,4 +993,21 @@
<string name="status_bar_carrier_color">Carrier label color</string>
<string name="status_bar_carrier_size">Carrier label size</string>
<string name="status_bar_carrier_font_style_title">Carrier Label Font</string>
<!-- Brightness Slider style -->
<string name="brightness_slider_style_title">Brightness slider style</string>
<string name="brightness_slider_style_default">Default</string>
<string name="brightness_slider_style_daniel">Daniel</string>
<string name="brightness_slider_style_mememini">Meme mini</string>
<string name="brightness_slider_style_memeround">Meme round</string>
<string name="brightness_slider_style_memeroundstroke">Meme round stroke</string>
<string name="brightness_slider_style_memestroke">Meme stroke</string>
<!-- GUI styles -->
<string name="ui_style_title">UI Style</string>
<string name="ui_style_default">Default</string>
<string name="ui_style_no_corner_radius">No Corner Radius</string>
<string name="ui_style_rectangle">Rectangle</string>
<string name="ui_style_round_large">Round Large</string>
<string name="ui_style_round_medium">Round Medium</string>
</resources>

View File

@@ -47,6 +47,22 @@
android:entries="@array/theme_type_titles"
android:entryValues="@array/theme_type_values"
android:defaultValue="1"/>
<ListPreference
android:key="ui_style"
android:title="@string/ui_style_title"
android:icon="@drawable/ic_ui"
android:entries="@array/ui_style_selector_entries"
android:entryValues="@array/ui_style_selector_values"
android:persistent="false" />
<ListPreference
android:key="brightness_slider_style"
android:icon="@drawable/ic_brightness"
android:title="@string/brightness_slider_style_title"
android:entries="@array/brightness_slider_style_selector_entries"
android:entryValues="@array/brightness_slider_style_selector_values"
android:persistent="false" />
</PreferenceCategory>
<PreferenceCategory

View File

@@ -53,6 +53,8 @@ import net.margaritov.preference.colorpicker.ColorPickerPreference;
public class ThemeSettings extends SettingsPreferenceFragment implements
OnPreferenceChangeListener {
private static final String BRIGHTNESS_SLIDER_STYLE = "brightness_slider_style";
private static final String UI_STYLE = "ui_style";
private static final String PREF_THEME_SWITCH = "theme_switch";
private static final String ACCENT_COLOR = "accent_color";
private static final String ACCENT_COLOR_PROP = "persist.sys.theme.accentcolor";
@@ -66,6 +68,8 @@ public class ThemeSettings extends SettingsPreferenceFragment implements
private ColorPickerPreference mThemeColor;
private ColorPickerPreference mGradientColor;
private ListPreference mThemeSwitch;
private ListPreference mBrightnessSliderStyle;
private ListPreference mUIStyle;
@Override
public void onCreate(Bundle icicle) {
@@ -76,6 +80,66 @@ public class ThemeSettings extends SettingsPreferenceFragment implements
PreferenceScreen prefScreen = getPreferenceScreen();
ContentResolver resolver = getActivity().getContentResolver();
mUIStyle = (ListPreference) findPreference(UI_STYLE);
int UIStyle = Settings.System.getInt(getActivity().getContentResolver(),
Settings.System.UI_STYLE, 0);
int UIStyleValue = getOverlayPosition(ThemesUtils.UI_THEMES);
if (UIStyleValue != 0) {
mUIStyle.setValue(String.valueOf(UIStyle));
}
mUIStyle.setSummary(mUIStyle.getEntry());
mUIStyle.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (preference == mUIStyle) {
String value = (String) newValue;
Settings.System.putInt(getActivity().getContentResolver(), Settings.System.UI_STYLE, Integer.valueOf(value));
int valueIndex = mUIStyle.findIndexOfValue(value);
mUIStyle.setSummary(mUIStyle.getEntries()[valueIndex]);
String overlayName = getOverlayName(ThemesUtils.UI_THEMES);
if (overlayName != null) {
handleOverlays(overlayName, false, mOverlayService);
}
if (valueIndex > 0) {
handleOverlays(ThemesUtils.UI_THEMES[valueIndex],
true, mOverlayService);
}
return true;
}
return false;
}
});
mBrightnessSliderStyle = (ListPreference) findPreference(BRIGHTNESS_SLIDER_STYLE);
int BrightnessSliderStyle = Settings.System.getInt(getActivity().getContentResolver(),
Settings.System.BRIGHTNESS_SLIDER_STYLE, 0);
int BrightnessSliderStyleValue = getOverlayPosition(ThemesUtils.BRIGHTNESS_SLIDER_THEMES);
if (BrightnessSliderStyleValue != 0) {
mBrightnessSliderStyle.setValue(String.valueOf(BrightnessSliderStyle));
}
mBrightnessSliderStyle.setSummary(mBrightnessSliderStyle.getEntry());
mBrightnessSliderStyle.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (preference == mBrightnessSliderStyle) {
String value = (String) newValue;
Settings.System.putInt(getActivity().getContentResolver(), Settings.System.BRIGHTNESS_SLIDER_STYLE, Integer.valueOf(value));
int valueIndex = mBrightnessSliderStyle.findIndexOfValue(value);
mBrightnessSliderStyle.setSummary(mBrightnessSliderStyle.getEntries()[valueIndex]);
String overlayName = getOverlayName(ThemesUtils.BRIGHTNESS_SLIDER_THEMES);
if (overlayName != null) {
handleOverlays(overlayName, false, mOverlayService);
}
if (valueIndex > 0) {
handleOverlays(ThemesUtils.BRIGHTNESS_SLIDER_THEMES[valueIndex],
true, mOverlayService);
}
return true;
}
return false;
}
});
mUiModeManager = getContext().getSystemService(UiModeManager.class);
mOverlayService = IOverlayManager.Stub
@@ -264,6 +328,28 @@ public class ThemeSettings extends SettingsPreferenceFragment implements
}
}
private String getOverlayName(String[] overlays) {
String overlayName = null;
for (int i = 0; i < overlays.length; i++) {
String overlay = overlays[i];
if (CherishUtils.isThemeEnabled(overlay)) {
overlayName = overlay;
}
}
return overlayName;
}
private int getOverlayPosition(String[] overlays) {
int position = -1;
for (int i = 0; i < overlays.length; i++) {
String overlay = overlays[i];
if (CherishUtils.isThemeEnabled(overlay)) {
position = i;
}
}
return position;
}
@Override
public int getMetricsCategory() {
return MetricsProto.MetricsEvent.CHERISH_SETTINGS;