diff --git a/res/drawable/ic_action_reset_alpha.png b/res/drawable/ic_action_reset_alpha.png new file mode 100644 index 0000000..6bb2548 Binary files /dev/null and b/res/drawable/ic_action_reset_alpha.png differ diff --git a/res/drawable/ic_action_set_alpha.png b/res/drawable/ic_action_set_alpha.png new file mode 100644 index 0000000..f42a0e2 Binary files /dev/null and b/res/drawable/ic_action_set_alpha.png differ diff --git a/res/values/cherish_strings.xml b/res/values/cherish_strings.xml index cbde4e0..63ce206 100644 --- a/res/values/cherish_strings.xml +++ b/res/values/cherish_strings.xml @@ -426,4 +426,22 @@ Date font size Clock font size + + Lockscreen Colors + Lockscreen Clock + Change color of lockscreen widgets + Lockscreen Date + Reset lockscreen colors + Are you sure you want to reset these colors to default? + Lockscreen colors + Owner info + Lockscreen Bottom Left shortcut + Lockscreen Lock icon + Lockscreen Bottom Right shortcut + Lockscreen Shortcuts + Lockscreen Indication text + Weather Temp Color + Weather City Color + Weather Icon Color + YES diff --git a/res/xml/cherish_settings_lockscreen.xml b/res/xml/cherish_settings_lockscreen.xml index 8a15448..4f2b76e 100644 --- a/res/xml/cherish_settings_lockscreen.xml +++ b/res/xml/cherish_settings_lockscreen.xml @@ -62,6 +62,13 @@ android:summary="@string/lock_date_font_summary" android:persistent="false" /> + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/com/cherish/settings/fragments/LockColors.java b/src/com/cherish/settings/fragments/LockColors.java new file mode 100644 index 0000000..2789d12 --- /dev/null +++ b/src/com/cherish/settings/fragments/LockColors.java @@ -0,0 +1,324 @@ +/* + * Copyright (C) 2015 The Dirty Unicorns 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. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.cherish.settings.fragments; + +import android.app.ActivityManager; +import android.app.AlertDialog; +import android.app.Dialog; +import android.content.Context; +import android.content.ContentResolver; +import android.content.DialogInterface; +import android.content.res.Resources; +import android.database.ContentObserver; +import android.os.Bundle; +import androidx.preference.ListPreference; +import androidx.preference.SwitchPreference; +import androidx.preference.Preference; +import androidx.preference.Preference.OnPreferenceChangeListener; +import androidx.preference.PreferenceScreen; +import android.provider.Settings; +import android.view.Menu; +import android.view.MenuItem; +import android.view.MenuInflater; + +import java.util.ArrayList; +import java.util.List; + +import com.android.settings.R; +import com.android.settings.SettingsPreferenceFragment; +import com.android.internal.logging.nano.MetricsProto; + +import net.margaritov.preference.colorpicker.ColorPickerPreference; + +public class LockColors extends SettingsPreferenceFragment implements Preference.OnPreferenceChangeListener { + + private static final String TAG = "LockscreenColors"; + + private static final String LOCKSCREEN_PHONE_ICON_COLOR = "lockscreen_phone_icon_color"; + private static final String LOCKSCREEN_CAMERA_ICON_COLOR = "lockscreen_camera_icon_color"; + private static final String LOCKSCREEN_INDICATION_TEXT_COLOR = "lockscreen_indication_text_color"; + private static final String LOCKSCREEN_CLOCK_COLOR = "lockscreen_clock_color"; + private static final String LOCKSCREEN_CLOCK_DATE_COLOR = "lockscreen_clock_date_color"; + private static final String LOCKSCREEN_OWNER_INFO_COLOR = "lockscreen_owner_info_color"; + /* private static final String LOCKSCREEN_WEATHER_TEMP_COLOR = "lockscreen_weather_temp_color"; + private static final String LOCKSCREEN_WEATHER_CITY_COLOR = "lockscreen_weather_city_color"; + private static final String LOCKSCREEN_WEATHER_ICON_COLOR = "lockscreen_weather_icon_color";*/ + + static final int DEFAULT = 0xffffffff; + static final int TRANSPARENT = 0x99FFFFFF; + + private static final int MENU_RESET = Menu.FIRST; + + private ColorPickerPreference mLockscreenPhoneColorPicker; + private ColorPickerPreference mLockscreenCameraColorPicker; + private ColorPickerPreference mLockscreenIndicationTextColorPicker; + private ColorPickerPreference mLockscreenClockColorPicker; + private ColorPickerPreference mLockscreenClockDateColorPicker; + private ColorPickerPreference mLockscreenOwnerInfoColorPicker; + /*private ColorPickerPreference mWeatherRightTextColorPicker; + private ColorPickerPreference mWeatherLeftTextColorPicker; + private ColorPickerPreference mWeatherIconColorPicker;*/ + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + addPreferencesFromResource(R.xml.lock_colors); + + PreferenceScreen prefSet = getPreferenceScreen(); + ContentResolver resolver = getActivity().getContentResolver(); + + int intColor; + String hexColor; + + mLockscreenPhoneColorPicker = (ColorPickerPreference) findPreference(LOCKSCREEN_PHONE_ICON_COLOR); + mLockscreenPhoneColorPicker.setOnPreferenceChangeListener(this); + intColor = Settings.System.getInt(getContentResolver(), + Settings.System.LOCKSCREEN_PHONE_ICON_COLOR, TRANSPARENT); + hexColor = String.format("#%08x", (0x99FFFFFF & intColor)); + mLockscreenPhoneColorPicker.setSummary(hexColor); + mLockscreenPhoneColorPicker.setNewPreviewColor(intColor); + + mLockscreenCameraColorPicker = (ColorPickerPreference) findPreference(LOCKSCREEN_CAMERA_ICON_COLOR); + mLockscreenCameraColorPicker.setOnPreferenceChangeListener(this); + intColor = Settings.System.getInt(getContentResolver(), + Settings.System.LOCKSCREEN_CAMERA_ICON_COLOR, TRANSPARENT); + hexColor = String.format("#%08x", (0x99FFFFFF & intColor)); + mLockscreenCameraColorPicker.setSummary(hexColor); + mLockscreenCameraColorPicker.setNewPreviewColor(intColor); + + mLockscreenIndicationTextColorPicker = (ColorPickerPreference) findPreference(LOCKSCREEN_INDICATION_TEXT_COLOR); + mLockscreenIndicationTextColorPicker.setOnPreferenceChangeListener(this); + intColor = Settings.System.getInt(getContentResolver(), + Settings.System.LOCKSCREEN_INDICATION_TEXT_COLOR, DEFAULT); + hexColor = String.format("#%08x", (0xffffffff & intColor)); + mLockscreenIndicationTextColorPicker.setSummary(hexColor); + mLockscreenIndicationTextColorPicker.setNewPreviewColor(intColor); + + mLockscreenClockColorPicker = (ColorPickerPreference) findPreference(LOCKSCREEN_CLOCK_COLOR); + mLockscreenClockColorPicker.setOnPreferenceChangeListener(this); + intColor = Settings.System.getInt(getContentResolver(), + Settings.System.LOCKSCREEN_CLOCK_COLOR, DEFAULT); + hexColor = String.format("#%08x", (0xffffffff & intColor)); + mLockscreenClockColorPicker.setSummary(hexColor); + mLockscreenClockColorPicker.setNewPreviewColor(intColor); + + mLockscreenClockDateColorPicker = (ColorPickerPreference) findPreference(LOCKSCREEN_CLOCK_DATE_COLOR); + mLockscreenClockDateColorPicker.setOnPreferenceChangeListener(this); + intColor = Settings.System.getInt(getContentResolver(), + Settings.System.LOCKSCREEN_CLOCK_DATE_COLOR, DEFAULT); + hexColor = String.format("#%08x", (0xffffffff & intColor)); + mLockscreenClockDateColorPicker.setSummary(hexColor); + mLockscreenClockDateColorPicker.setNewPreviewColor(intColor); + + mLockscreenOwnerInfoColorPicker = (ColorPickerPreference) findPreference(LOCKSCREEN_OWNER_INFO_COLOR); + mLockscreenOwnerInfoColorPicker.setOnPreferenceChangeListener(this); + intColor = Settings.System.getInt(resolver, + Settings.System.LOCKSCREEN_OWNER_INFO_COLOR, DEFAULT); + hexColor = String.format("#%08x", (0xffffffff & intColor)); + mLockscreenOwnerInfoColorPicker.setSummary(hexColor); + mLockscreenOwnerInfoColorPicker.setNewPreviewColor(intColor); +/* + mWeatherRightTextColorPicker = (ColorPickerPreference) findPreference(LOCKSCREEN_WEATHER_TEMP_COLOR); + mWeatherRightTextColorPicker.setOnPreferenceChangeListener(this); + intColor = Settings.System.getInt(getContentResolver(), + Settings.System.LOCK_SCREEN_WEATHER_TEMP_COLOR, DEFAULT); + hexColor = String.format("#%08x", (0xffffffff & intColor)); + mWeatherRightTextColorPicker.setSummary(hexColor); + mWeatherRightTextColorPicker.setNewPreviewColor(intColor); + + mWeatherLeftTextColorPicker = (ColorPickerPreference) findPreference(LOCKSCREEN_WEATHER_CITY_COLOR); + mWeatherLeftTextColorPicker.setOnPreferenceChangeListener(this); + intColor = Settings.System.getInt(getContentResolver(), + Settings.System.LOCK_SCREEN_WEATHER_CITY_COLOR, DEFAULT); + hexColor = String.format("#%08x", (0xffffffff & intColor)); + mWeatherLeftTextColorPicker.setSummary(hexColor); + mWeatherLeftTextColorPicker.setNewPreviewColor(intColor); + + mWeatherIconColorPicker = (ColorPickerPreference) findPreference(LOCKSCREEN_WEATHER_ICON_COLOR); + mWeatherIconColorPicker.setOnPreferenceChangeListener(this); + intColor = Settings.System.getInt(getContentResolver(), + Settings.System.LOCK_SCREEN_WEATHER_ICON_COLOR, TRANSPARENT); + hexColor = String.format("#%08x", (0x99FFFFFF & intColor)); + mWeatherIconColorPicker.setSummary(hexColor); + mWeatherIconColorPicker.setNewPreviewColor(intColor); +*/ + setHasOptionsMenu(true); + } + + public boolean onPreferenceChange(Preference preference, Object newValue) { + ContentResolver resolver = getActivity().getContentResolver(); + if (preference == mLockscreenCameraColorPicker) { + String hex = ColorPickerPreference.convertToARGB( + Integer.valueOf(String.valueOf(newValue))); + preference.setSummary(hex); + int intHex = ColorPickerPreference.convertToColorInt(hex); + Settings.System.putInt(getActivity().getApplicationContext().getContentResolver(), + Settings.System.LOCKSCREEN_CAMERA_ICON_COLOR, intHex); + return true; + } else if (preference == mLockscreenPhoneColorPicker) { + String hex = ColorPickerPreference.convertToARGB( + Integer.valueOf(String.valueOf(newValue))); + preference.setSummary(hex); + int intHex = ColorPickerPreference.convertToColorInt(hex); + Settings.System.putInt(getActivity().getApplicationContext().getContentResolver(), + Settings.System.LOCKSCREEN_PHONE_ICON_COLOR, intHex); + return true; + } else if (preference == mLockscreenIndicationTextColorPicker) { + String hex = ColorPickerPreference.convertToARGB( + Integer.valueOf(String.valueOf(newValue))); + preference.setSummary(hex); + int intHex = ColorPickerPreference.convertToColorInt(hex); + Settings.System.putInt(getActivity().getApplicationContext().getContentResolver(), + Settings.System.LOCKSCREEN_INDICATION_TEXT_COLOR, intHex); + return true; + } else if (preference == mLockscreenClockColorPicker) { + String hex = ColorPickerPreference.convertToARGB( + Integer.valueOf(String.valueOf(newValue))); + preference.setSummary(hex); + int intHex = ColorPickerPreference.convertToColorInt(hex); + Settings.System.putInt(getActivity().getApplicationContext().getContentResolver(), + Settings.System.LOCKSCREEN_CLOCK_COLOR, intHex); + return true; + } else if (preference == mLockscreenClockDateColorPicker) { + String hex = ColorPickerPreference.convertToARGB( + Integer.valueOf(String.valueOf(newValue))); + preference.setSummary(hex); + int intHex = ColorPickerPreference.convertToColorInt(hex); + Settings.System.putInt(getActivity().getApplicationContext().getContentResolver(), + Settings.System.LOCKSCREEN_CLOCK_DATE_COLOR, intHex); + return true; + } else if (preference == mLockscreenOwnerInfoColorPicker) { + String hex = ColorPickerPreference.convertToARGB( + Integer.valueOf(String.valueOf(newValue))); + preference.setSummary(hex); + int intHex = ColorPickerPreference.convertToColorInt(hex); + Settings.System.putInt(getActivity().getApplicationContext().getContentResolver(), + Settings.System.LOCKSCREEN_OWNER_INFO_COLOR, intHex); + return true; + /* } else if (preference == mWeatherRightTextColorPicker) { + String hex = ColorPickerPreference.convertToARGB( + Integer.valueOf(String.valueOf(newValue))); + preference.setSummary(hex); + int intHex = ColorPickerPreference.convertToColorInt(hex); + Settings.System.putInt(getActivity().getApplicationContext().getContentResolver(), + Settings.System.LOCK_SCREEN_WEATHER_TEMP_COLOR, intHex); + return true; + } else if (preference == mWeatherLeftTextColorPicker) { + String hex = ColorPickerPreference.convertToARGB( + Integer.valueOf(String.valueOf(newValue))); + preference.setSummary(hex); + int intHex = ColorPickerPreference.convertToColorInt(hex); + Settings.System.putInt(getActivity().getApplicationContext().getContentResolver(), + Settings.System.LOCK_SCREEN_WEATHER_CITY_COLOR, intHex); + return true; + } else if (preference == mWeatherIconColorPicker) { + String hex = ColorPickerPreference.convertToARGB( + Integer.valueOf(String.valueOf(newValue))); + preference.setSummary(hex); + int intHex = ColorPickerPreference.convertToColorInt(hex); + Settings.System.putInt(getActivity().getApplicationContext().getContentResolver(), + Settings.System.LOCK_SCREEN_WEATHER_ICON_COLOR, intHex); + return true;*/ + } + return false; + } + + @Override + public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { + menu.add(0, MENU_RESET, 0, R.string.reset) + .setIcon(R.drawable.ic_action_reset_alpha) + .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.lockscreen_colors_reset_title); + alertDialog.setMessage(R.string.lockscreen_colors_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() { + ContentResolver resolver = getActivity().getContentResolver(); + Settings.System.putInt(getContentResolver(), + Settings.System.LOCKSCREEN_PHONE_ICON_COLOR, TRANSPARENT); + mLockscreenPhoneColorPicker.setNewPreviewColor(TRANSPARENT); + mLockscreenPhoneColorPicker.setSummary(R.string.default_string); + Settings.System.putInt(getContentResolver(), + Settings.System.LOCKSCREEN_CAMERA_ICON_COLOR, TRANSPARENT); + mLockscreenCameraColorPicker.setNewPreviewColor(TRANSPARENT); + mLockscreenCameraColorPicker.setSummary(R.string.default_string); + Settings.System.putInt(getContentResolver(), + Settings.System.LOCKSCREEN_INDICATION_TEXT_COLOR, DEFAULT); + mLockscreenIndicationTextColorPicker.setNewPreviewColor(DEFAULT); + mLockscreenIndicationTextColorPicker.setSummary(R.string.default_string); + Settings.System.putInt(getContentResolver(), + Settings.System.LOCKSCREEN_CLOCK_COLOR, DEFAULT); + mLockscreenClockColorPicker.setNewPreviewColor(DEFAULT); + mLockscreenClockColorPicker.setSummary(R.string.default_string); + Settings.System.putInt(getContentResolver(), + Settings.System.LOCKSCREEN_CLOCK_DATE_COLOR, DEFAULT); + mLockscreenClockDateColorPicker.setNewPreviewColor(DEFAULT); + mLockscreenClockDateColorPicker.setSummary(R.string.default_string); + Settings.System.putInt(resolver, + Settings.System.LOCKSCREEN_OWNER_INFO_COLOR, DEFAULT); + mLockscreenOwnerInfoColorPicker.setNewPreviewColor(DEFAULT); + mLockscreenOwnerInfoColorPicker.setSummary(R.string.default_string); + /*Settings.System.putInt(getContentResolver(), + Settings.System.LOCK_SCREEN_WEATHER_TEMP_COLOR, DEFAULT); + mWeatherRightTextColorPicker.setNewPreviewColor(DEFAULT); + mWeatherRightTextColorPicker.setSummary(R.string.default_string); + Settings.System.putInt(getContentResolver(), + Settings.System.LOCK_SCREEN_WEATHER_CITY_COLOR, DEFAULT); + mWeatherLeftTextColorPicker.setNewPreviewColor(DEFAULT); + mWeatherLeftTextColorPicker.setSummary(R.string.default_string); + Settings.System.putInt(getContentResolver(), + Settings.System.LOCK_SCREEN_WEATHER_ICON_COLOR, DEFAULT); + mWeatherIconColorPicker.setNewPreviewColor(DEFAULT); + mWeatherIconColorPicker.setSummary(R.string.default_string);*/ + } + + @Override + public void onResume() { + super.onResume(); + } + + @Override + public int getMetricsCategory() { + return MetricsProto.MetricsEvent.CHERISH_SETTINGS; + } +} + + +