From 22b278cc53deec9ada28b72e69b35fe7149a2865 Mon Sep 17 00:00:00 2001 From: AgentFabulous Date: Sat, 11 Apr 2020 15:32:46 +0700 Subject: [PATCH] Cherish: Introduce RGB Accenter [2/2] --- res/drawable/ic_accent_picker.xml | 21 ++++++++++++++ res/values-vi/cherish_strings.xml | 6 ++++ res/values/cherish_strings.xml | 7 +++++ res/xml/cherish_settings_theme.xml | 14 ++++++++++ .../settings/fragments/ThemeSettings.java | 28 +++++++++++++++++++ 5 files changed, 76 insertions(+) create mode 100644 res/drawable/ic_accent_picker.xml diff --git a/res/drawable/ic_accent_picker.xml b/res/drawable/ic_accent_picker.xml new file mode 100644 index 0000000..9eacf18 --- /dev/null +++ b/res/drawable/ic_accent_picker.xml @@ -0,0 +1,21 @@ + + + + + + + \ No newline at end of file diff --git a/res/values-vi/cherish_strings.xml b/res/values-vi/cherish_strings.xml index be55088..0712d37 100644 --- a/res/values-vi/cherish_strings.xml +++ b/res/values-vi/cherish_strings.xml @@ -236,4 +236,10 @@ Sáng Google dark Solarized dark + + Màu nhấn RGB| Chủ đề Gradient + Chủ đề + Chủ đề màu nhấn Gradients + Chọn màu nhấn + Tự làm Gradient diff --git a/res/values/cherish_strings.xml b/res/values/cherish_strings.xml index bf78da6..e580b1a 100644 --- a/res/values/cherish_strings.xml +++ b/res/values/cherish_strings.xml @@ -270,5 +270,12 @@ Baked Green Choco X Pitch black + + + RGB Accent | Gradient Theming + Themes + Accents-Gradients-Themes + Accent picker + Gradient Maker diff --git a/res/xml/cherish_settings_theme.xml b/res/xml/cherish_settings_theme.xml index e85adbb..9c1eb71 100644 --- a/res/xml/cherish_settings_theme.xml +++ b/res/xml/cherish_settings_theme.xml @@ -34,4 +34,18 @@ android:defaultValue="1"/> + + + + + + \ No newline at end of file diff --git a/src/com/cherish/settings/fragments/ThemeSettings.java b/src/com/cherish/settings/fragments/ThemeSettings.java index 5a06043..27f79c2 100644 --- a/src/com/cherish/settings/fragments/ThemeSettings.java +++ b/src/com/cherish/settings/fragments/ThemeSettings.java @@ -34,11 +34,16 @@ import java.util.Objects; import com.android.internal.util.cherish.ThemesUtils; import com.android.internal.util.cherish.CherishUtils; +import net.margaritov.preference.colorpicker.ColorPickerPreference; public class ThemeSettings extends SettingsPreferenceFragment implements OnPreferenceChangeListener { 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"; + + private ColorPickerPreference mThemeColor; private UiModeManager mUiModeManager; private IOverlayManager mOverlayService; @@ -52,8 +57,11 @@ public class ThemeSettings extends SettingsPreferenceFragment implements PreferenceScreen prefScreen = getPreferenceScreen(); ContentResolver resolver = getActivity().getContentResolver(); + mOverlayService = IOverlayManager.Stub + .asInterface(ServiceManager.getService(Context.OVERLAY_SERVICE)); mUiModeManager = getContext().getSystemService(UiModeManager.class); setupThemeSwitchPref(); + setupAccentPref(); } @Override @@ -99,6 +107,16 @@ public class ThemeSettings extends SettingsPreferenceFragment implements handleBackgrounds(true, context, UiModeManager.MODE_NIGHT_YES, ThemesUtils.PITCH_BLACK); break; } + try { + mOverlayService.reloadAndroidAssets(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 == mThemeColor) { + int color = (Integer) objValue; + String hexColor = String.format("%08X", (0xFFFFFFFF & color)); + SystemProperties.set(ACCENT_COLOR_PROP, hexColor); try { mOverlayService.reloadAndroidAssets(UserHandle.USER_CURRENT); mOverlayService.reloadAssets("com.android.settings", UserHandle.USER_CURRENT); @@ -141,6 +159,16 @@ public class ThemeSettings extends SettingsPreferenceFragment implements } } } + + private void setupAccentPref() { + mThemeColor = (ColorPickerPreference) findPreference(ACCENT_COLOR); + String colorVal = SystemProperties.get(ACCENT_COLOR_PROP, "-1"); + int color = "-1".equals(colorVal) + ? Color.WHITE + : Color.parseColor("#" + colorVal); + mThemeColor.setNewPreviewColor(color); + mThemeColor.setOnPreferenceChangeListener(this); + } @Override public int getMetricsCategory() {