Cherish:Cleanup and add rgb accenter

Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
This commit is contained in:
Hưng Phan
2021-08-14 15:16:35 +07:00
parent 9f91b1ce49
commit b5482b8f86
5 changed files with 89 additions and 62 deletions

View File

@@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
android:width="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?android:attr/colorControlNormal" >
<path android:fillColor="?android:attr/colorAccent"
android:pathData="M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z"/>
</vector>

View File

@@ -679,6 +679,7 @@
<!-- Brightness sliders styles --> <!-- Brightness sliders styles -->
<string-array name="brightness_slider_style_selector_entries" translatable="false"> <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_daniel</item>
<item>@string/brightness_slider_style_mememini</item> <item>@string/brightness_slider_style_mememini</item>
<item>@string/brightness_slider_style_memeround</item> <item>@string/brightness_slider_style_memeround</item>
@@ -690,14 +691,15 @@
</string-array> </string-array>
<string-array name="brightness_slider_style_selector_values" translatable="false"> <string-array name="brightness_slider_style_selector_values" translatable="false">
<item>0</item>
<item>1</item> <item>1</item>
<item>2</item> <item>2</item>
<item>3</item> <item>3</item>
<item>4</item> <item>4</item>
<item>5</item> <item>5</item>
<item>6</item> <item>6</item>
<item>12</item> <item>7</item>
<item>14</item> <item>8</item>
</string-array> </string-array>
<!-- Notification Background styles --> <!-- Notification Background styles -->

View File

@@ -93,10 +93,11 @@
<!--Accenter --> <!--Accenter -->
<string name="themes_hub_title">Themes</string> <string name="themes_hub_title">Themes</string>
<string name="themes_hub_summary">Accents-Gradients-Themes</string> <string name="themes_hub_summary">Accents-Gradients-Themes</string>
<string name="accent_color">Accent picker</string> <string name="rgb_accent_picker_title_dark">Accent Picker</string>
<string name="accent_summary">Gradient Maker</string> <string name="rgb_accent_picker_summary">Choose the accent color yourself</string>
<string name="gradient_color">Gradient picker</string>
<string name="gradient_summary">Gradient effect maker</string> <string name="theme_option_reset_title">Reset Theme Options</string>
<string name="theme_option_reset_message">Are you sure you want to reset themes-accent to default?</string>
<!--ThemePicker--> <!--ThemePicker-->
<string name="theme_select_title">Styles and Wallpapers</string> <string name="theme_select_title">Styles and Wallpapers</string>
@@ -751,6 +752,7 @@
<!-- Brightness Slider style --> <!-- Brightness Slider style -->
<string name="brightness_slider_style_title">Brightness slider style</string> <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_daniel">Daniel</string>
<string name="brightness_slider_style_mememini">Meme mini</string> <string name="brightness_slider_style_mememini">Meme mini</string>
<string name="brightness_slider_style_memeround">Meme round</string> <string name="brightness_slider_style_memeround">Meme round</string>

View File

@@ -61,20 +61,12 @@
settings:interval="1"/> settings:interval="1"/>
<net.margaritov.preference.colorpicker.ColorPickerPreference <net.margaritov.preference.colorpicker.ColorPickerPreference
android:key="accent_color"
android:icon="@drawable/ic_accent_picker" android:icon="@drawable/ic_accent_picker"
android:title="@string/accent_color" android:key="rgb_accent_picker_dark"
android:summary="@string/accent_summary" android:title="@string/rgb_accent_picker_title_dark"
android:defaultValue="0xffffff" android:summary="@string/rgb_accent_picker_summary"
android:persistent="false" /> android:persistent="false"
settings:iconSpaceReserved="false" />
<net.margaritov.preference.colorpicker.ColorPickerPreference
android:key="gradient_color"
android:icon="@drawable/ic_accent_picker"
android:title="@string/gradient_color"
android:summary="@string/gradient_summary"
android:defaultValue="0xffffff"
android:persistent="false" />
<Preference <Preference
android:key="clock_style" android:key="clock_style"

View File

@@ -4,6 +4,10 @@ import static com.cherish.settings.utils.Utils.handleOverlays;
import com.android.internal.logging.nano.MetricsProto; import com.android.internal.logging.nano.MetricsProto;
import static android.os.UserHandle.USER_SYSTEM; import static android.os.UserHandle.USER_SYSTEM;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.app.UiModeManager; import android.app.UiModeManager;
import android.graphics.Color; import android.graphics.Color;
import android.os.Bundle; import android.os.Bundle;
@@ -22,6 +26,7 @@ import android.os.RemoteException;
import android.provider.SearchIndexableResource; import android.provider.SearchIndexableResource;
import android.provider.Settings; import android.provider.Settings;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.res.Resources; import android.content.res.Resources;
@@ -39,6 +44,9 @@ import com.android.settings.display.FontPickerPreferenceController;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import android.provider.Settings; import android.provider.Settings;
import com.android.settings.R; import com.android.settings.R;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MenuInflater;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentManager;
import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.AbstractPreferenceController;
@@ -71,24 +79,22 @@ public class ThemeSettings extends DashboardFragment implements OnPreferenceChan
private static final String PREF_THEME_SWITCH = "theme_switch"; private static final String PREF_THEME_SWITCH = "theme_switch";
private static final String QS_HEADER_STYLE = "qs_header_style"; private static final String QS_HEADER_STYLE = "qs_header_style";
private static final String QS_TILE_STYLE = "qs_tile_style"; private static final String QS_TILE_STYLE = "qs_tile_style";
private static final String ACCENT_COLOR = "accent_color"; private static final String PREF_RGB_ACCENT_PICKER_DARK = "rgb_accent_picker_dark";
private static final String ACCENT_COLOR_PROP = "persist.sys.theme.accentcolor";
private static final String GRADIENT_COLOR = "gradient_color";
private static final String GRADIENT_COLOR_PROP = "persist.sys.theme.gradientcolor";
private static final String PREF_NB_COLOR = "navbar_color"; private static final String PREF_NB_COLOR = "navbar_color";
static final int DEFAULT_QS_PANEL_COLOR = 0xffffffff; static final int DEFAULT_QS_PANEL_COLOR = 0xffffffff;
static final int DEFAULT = 0xff1a73e8; static final int DEFAULT = 0xff1a73e8;
private static final String QS_PANEL_COLOR = "qs_panel_color"; private static final String QS_PANEL_COLOR = "qs_panel_color";
private static final String SWITCH_STYLE = "switch_style"; private static final String SWITCH_STYLE = "switch_style";
private static final String HIDE_NOTCH = "display_hide_notch"; private static final String HIDE_NOTCH = "display_hide_notch";
private static final int MENU_RESET = Menu.FIRST;
private SystemSettingListPreference mSwitchStyle; private SystemSettingListPreference mSwitchStyle;
private ColorPickerPreference mQsPanelColor; private ColorPickerPreference mQsPanelColor;
private Context mContext;
private IOverlayManager mOverlayService; private IOverlayManager mOverlayService;
private UiModeManager mUiModeManager; private UiModeManager mUiModeManager;
private ColorPickerPreference mThemeColor; private ColorPickerPreference rgbAccentPickerDark;
private ColorPickerPreference mGradientColor;
private ListPreference mThemeSwitch; private ListPreference mThemeSwitch;
private ListPreference mBrightnessSliderStyle; private ListPreference mBrightnessSliderStyle;
private ListPreference mSystemSliderStyle; private ListPreference mSystemSliderStyle;
@@ -154,6 +160,7 @@ public class ThemeSettings extends DashboardFragment implements OnPreferenceChan
PreferenceScreen prefScreen = getPreferenceScreen(); PreferenceScreen prefScreen = getPreferenceScreen();
ContentResolver resolver = getActivity().getContentResolver(); ContentResolver resolver = getActivity().getContentResolver();
final Resources res = getResources(); final Resources res = getResources();
mContext = getActivity();
mIntentFilter = new IntentFilter(); mIntentFilter = new IntentFilter();
mIntentFilter.addAction("com.android.server.ACTION_FONT_CHANGED"); mIntentFilter.addAction("com.android.server.ACTION_FONT_CHANGED");
@@ -271,9 +278,15 @@ public class ThemeSettings extends DashboardFragment implements OnPreferenceChan
mOverlayService = IOverlayManager.Stub mOverlayService = IOverlayManager.Stub
.asInterface(ServiceManager.getService(Context.OVERLAY_SERVICE)); .asInterface(ServiceManager.getService(Context.OVERLAY_SERVICE));
setupAccentPref(); rgbAccentPickerDark = (ColorPickerPreference) findPreference(PREF_RGB_ACCENT_PICKER_DARK);
String colorValDark = Settings.Secure.getStringForUser(mContext.getContentResolver(),
Settings.Secure.ACCENT_DARK, UserHandle.USER_CURRENT);
int colorDark = (colorValDark == null)
? DEFAULT
: Color.parseColor("#" + colorValDark);
rgbAccentPickerDark.setNewPreviewColor(colorDark);
rgbAccentPickerDark.setOnPreferenceChangeListener(this);
setSystemSliderPref(); setSystemSliderPref();
setupGradientPref();
setupNavbarSwitchPref(); setupNavbarSwitchPref();
} }
@@ -288,20 +301,12 @@ public class ThemeSettings extends DashboardFragment implements OnPreferenceChan
@Override @Override
public boolean onPreferenceChange(Preference preference, Object objValue) { public boolean onPreferenceChange(Preference preference, Object objValue) {
ContentResolver resolver = getActivity().getContentResolver(); ContentResolver resolver = getActivity().getContentResolver();
if (preference == mThemeColor) { if (preference == rgbAccentPickerDark) {
int color = (Integer) objValue; int colorDark = (Integer) objValue;
String hexColor = String.format("%08X", (0xFFFFFFFF & color)); String hexColor = String.format("%08X", (0xFFFFFFFF & colorDark));
SystemProperties.set(ACCENT_COLOR_PROP, hexColor); Settings.Secure.putStringForUser(mContext.getContentResolver(),
try { Settings.Secure.ACCENT_DARK,
mOverlayService.reloadAndroidAssets(UserHandle.USER_CURRENT); hexColor, UserHandle.USER_CURRENT);
mOverlayService.reloadAssets("com.android.settings", UserHandle.USER_CURRENT);
mOverlayService.reloadAssets("com.android.systemui", UserHandle.USER_CURRENT);
} catch (RemoteException ignored) {
}
} else if (preference == mGradientColor) {
int color = (Integer) objValue;
String hexColor = String.format("%08X", (0xFFFFFFFF & color));
SystemProperties.set(GRADIENT_COLOR_PROP, hexColor);
try { try {
mOverlayService.reloadAndroidAssets(UserHandle.USER_CURRENT); mOverlayService.reloadAndroidAssets(UserHandle.USER_CURRENT);
mOverlayService.reloadAssets("com.android.settings", UserHandle.USER_CURRENT); mOverlayService.reloadAssets("com.android.settings", UserHandle.USER_CURRENT);
@@ -446,27 +451,6 @@ public class ThemeSettings extends DashboardFragment implements OnPreferenceChan
} }
} }
private void setupAccentPref() {
mThemeColor = (ColorPickerPreference) findPreference(ACCENT_COLOR);
String colorVal = SystemProperties.get(ACCENT_COLOR_PROP, "-1");
int color = "-1".equals(colorVal)
? DEFAULT
: Color.parseColor("#" + colorVal);
mThemeColor.setNewPreviewColor(color);
mThemeColor.setOnPreferenceChangeListener(this);
}
private void setupGradientPref() {
mGradientColor = (ColorPickerPreference) findPreference(GRADIENT_COLOR);
String colorVal = SystemProperties.get(GRADIENT_COLOR_PROP, "-1");
int color = "-1".equals(colorVal)
? DEFAULT
: Color.parseColor("#" + colorVal);
mGradientColor.setNewPreviewColor(color);
mGradientColor.setOnPreferenceChangeListener(this);
}
private void setupNavbarSwitchPref() { private void setupNavbarSwitchPref() {
mGesbar = (ListPreference) findPreference(PREF_NB_COLOR); mGesbar = (ListPreference) findPreference(PREF_NB_COLOR);
mGesbar.setOnPreferenceChangeListener(this); mGesbar.setOnPreferenceChangeListener(this);
@@ -493,6 +477,43 @@ public class ThemeSettings extends DashboardFragment implements OnPreferenceChan
return overlayName; return overlayName;
} }
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.add(0, MENU_RESET, 0, R.string.reset)
.setIcon(R.drawable.ic_menu_reset)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MENU_RESET:
resetToDefault();
return true;
default:
return super.onContextItemSelected(item);
}
}
private void resetToDefault() {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(getActivity());
alertDialog.setTitle(R.string.theme_option_reset_title);
alertDialog.setMessage(R.string.theme_option_reset_message);
alertDialog.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
resetValues();
}
});
alertDialog.setNegativeButton(R.string.cancel, null);
alertDialog.create().show();
}
private void resetValues() {
final Context context = getContext();
rgbAccentPickerDark = (ColorPickerPreference) findPreference(PREF_RGB_ACCENT_PICKER_DARK);
rgbAccentPickerDark.setNewPreviewColor(DEFAULT);
}
private int getOverlayPosition(String[] overlays) { private int getOverlayPosition(String[] overlays) {
int position = -1; int position = -1;
for (int i = 0; i < overlays.length; i++) { for (int i = 0; i < overlays.length; i++) {