From b6057bf285504364157b99825315f72cd13c117a Mon Sep 17 00:00:00 2001 From: SuperDroidBond Date: Wed, 8 Jan 2020 15:44:53 +0700 Subject: [PATCH] Cherish:Introduce RGB Gradient Picker [2/2] --- res/values-vi/cherish_strings.xml | 2 ++ res/values/cherish_strings.xml | 2 ++ res/xml/cherish_settings_theme.xml | 8 ++++++ .../settings/fragments/ThemeSettings.java | 28 ++++++++++++++++++- 4 files changed, 39 insertions(+), 1 deletion(-) diff --git a/res/values-vi/cherish_strings.xml b/res/values-vi/cherish_strings.xml index 0712d37..bf20d37 100644 --- a/res/values-vi/cherish_strings.xml +++ b/res/values-vi/cherish_strings.xml @@ -242,4 +242,6 @@ Chủ đề màu nhấn Gradients Chọn màu nhấn Tự làm Gradient + Chọn Gradient + Làm hiệu ứng Gradient diff --git a/res/values/cherish_strings.xml b/res/values/cherish_strings.xml index e580b1a..f108729 100644 --- a/res/values/cherish_strings.xml +++ b/res/values/cherish_strings.xml @@ -277,5 +277,7 @@ Accents-Gradients-Themes Accent picker Gradient Maker + Gradient picker + Gradient effect maker diff --git a/res/xml/cherish_settings_theme.xml b/res/xml/cherish_settings_theme.xml index 9c1eb71..9a304af 100644 --- a/res/xml/cherish_settings_theme.xml +++ b/res/xml/cherish_settings_theme.xml @@ -47,5 +47,13 @@ android:defaultValue="0xffffff" android:persistent="false" /> + + \ 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 27f79c2..2e337eb 100644 --- a/src/com/cherish/settings/fragments/ThemeSettings.java +++ b/src/com/cherish/settings/fragments/ThemeSettings.java @@ -4,12 +4,15 @@ import com.android.internal.logging.nano.MetricsProto; import static android.os.UserHandle.USER_SYSTEM; import android.app.UiModeManager; +import android.graphics.Color; import android.os.Bundle; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.os.UserHandle; +import android.os.SystemProperties; +import android.os.ServiceManager; import android.content.om.IOverlayManager; import android.os.RemoteException; import android.content.ContentResolver; @@ -42,9 +45,11 @@ public class ThemeSettings extends SettingsPreferenceFragment implements 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 static final String GRADIENT_COLOR = "gradient_color"; + private static final String GRADIENT_COLOR_PROP = "persist.sys.theme.gradientcolor"; private ColorPickerPreference mThemeColor; - + private ColorPickerPreference mGradientColor; private UiModeManager mUiModeManager; private IOverlayManager mOverlayService; private ListPreference mThemeSwitch; @@ -62,6 +67,7 @@ public class ThemeSettings extends SettingsPreferenceFragment implements mUiModeManager = getContext().getSystemService(UiModeManager.class); setupThemeSwitchPref(); setupAccentPref(); + setupGradientPref(); } @Override @@ -123,6 +129,16 @@ public class ThemeSettings extends SettingsPreferenceFragment implements 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 { + mOverlayService.reloadAndroidAssets(UserHandle.USER_CURRENT); + mOverlayService.reloadAssets("com.android.settings", UserHandle.USER_CURRENT); + mOverlayService.reloadAssets("com.android.systemui", UserHandle.USER_CURRENT); + } catch (RemoteException ignored) { + } } return true; } @@ -170,6 +186,16 @@ public class ThemeSettings extends SettingsPreferenceFragment implements mThemeColor.setOnPreferenceChangeListener(this); } + private void setupGradientPref() { + mGradientColor = (ColorPickerPreference) findPreference(GRADIENT_COLOR); + String colorVal = SystemProperties.get(GRADIENT_COLOR_PROP, "-1"); + int color = "-1".equals(colorVal) + ? Color.WHITE + : Color.parseColor("#" + colorVal); + mGradientColor.setNewPreviewColor(color); + mGradientColor.setOnPreferenceChangeListener(this); + } + @Override public int getMetricsCategory() { return MetricsProto.MetricsEvent.CHERISH_SETTINGS;