diff --git a/res/values/cherish_strings.xml b/res/values/cherish_strings.xml index 9900140..272fa68 100644 --- a/res/values/cherish_strings.xml +++ b/res/values/cherish_strings.xml @@ -569,8 +569,19 @@ Lockscreen media art + Enable Visualizer Visualizer Music Visualizer Show visualizer bars while playing music + Automatic color + Sync color with lockscreen background + Requires lava lamp disabled + Lava lamp + Use a smooth lava lamp style color blend animation + Color blend interval + Solid Lines + Lines count + Sanity level + Lines opacity diff --git a/res/xml/cherish_settings_lockscreen.xml b/res/xml/cherish_settings_lockscreen.xml index db348ea..de5355c 100644 --- a/res/xml/cherish_settings_lockscreen.xml +++ b/res/xml/cherish_settings_lockscreen.xml @@ -78,11 +78,11 @@ android:key="lockscreen_visualizer_options" android:title="@string/lockscreen_visualizer_title" > - + android:summary="@string/lockscreen_visualizer_enable_summary" /> diff --git a/res/xml/visualizer_settings.xml b/res/xml/visualizer_settings.xml new file mode 100644 index 0000000..5243406 --- /dev/null +++ b/res/xml/visualizer_settings.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/com/cherish/settings/fragments/Visualizer.java b/src/com/cherish/settings/fragments/Visualizer.java new file mode 100644 index 0000000..dd3016f --- /dev/null +++ b/src/com/cherish/settings/fragments/Visualizer.java @@ -0,0 +1,130 @@ +/* + * Copyright (C) 2021 The CherishOS 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.content.ContentResolver; +import android.content.Context; +import android.os.Bundle; +import android.os.UserHandle; +import android.provider.Settings; +import androidx.preference.ListPreference; +import androidx.preference.Preference; +import androidx.preference.PreferenceCategory; +import androidx.preference.Preference.OnPreferenceChangeListener; +import androidx.preference.SwitchPreference; + +import com.android.internal.logging.nano.MetricsProto.MetricsEvent; + +import com.android.settings.R; +import com.android.settings.SettingsPreferenceFragment; + +import android.widget.Switch; +import com.android.settings.SettingsActivity; +import com.android.settings.widget.SettingsMainSwitchBar; +import com.android.settingslib.widget.OnMainSwitchChangeListener; + +public class Visualizer extends SettingsPreferenceFragment implements + OnPreferenceChangeListener, OnMainSwitchChangeListener { + + private static final String KEY_AUTOCOLOR = "lockscreen_visualizer_autocolor"; + private static final String KEY_LAVALAMP = "lockscreen_lavalamp_enabled"; + + private SwitchPreference mAutoColor; + private SwitchPreference mLavaLamp; + + private Switch mSwitch; + + private PreferenceCategory pc; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + addPreferencesFromResource(R.xml.visualizer_settings); + + ContentResolver resolver = getActivity().getContentResolver(); + + pc = (PreferenceCategory) findPreference("lockscreen_solid_lines_category"); + + boolean mLavaLampEnabled = Settings.System.getIntForUser(resolver, + Settings.System.LOCKSCREEN_LAVALAMP_ENABLED, 1, + UserHandle.USER_CURRENT) != 0; + + mAutoColor = (SwitchPreference) findPreference(KEY_AUTOCOLOR); + mAutoColor.setEnabled(!mLavaLampEnabled); + + if (mLavaLampEnabled) { + mAutoColor.setSummary(getActivity().getString( + R.string.lockscreen_autocolor_lavalamp)); + } else { + mAutoColor.setSummary(getActivity().getString( + R.string.lockscreen_autocolor_summary)); + } + + mLavaLamp = (SwitchPreference) findPreference(KEY_LAVALAMP); + mLavaLamp.setOnPreferenceChangeListener(this); + } + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + final SettingsActivity activity = (SettingsActivity) getActivity(); + final SettingsMainSwitchBar switchBar = activity.getSwitchBar(); + mSwitch = switchBar.getSwitch(); + boolean enabled = Settings.System.getInt(getActivity().getContentResolver(), + Settings.System.LOCKSCREEN_VISUALIZER_ENABLED, 0) ==1; + mSwitch.setChecked(enabled); + mAutoColor.setEnabled(enabled); + mLavaLamp.setEnabled(enabled); + pc.setEnabled(enabled); + switchBar.setTitle(getActivity().getString(R.string.enable_visualizer)); + switchBar.addOnSwitchChangeListener(this); + switchBar.show(); + } + + @Override + public void onSwitchChanged(Switch switchView, boolean isChecked) { + Settings.System.putInt(getActivity().getContentResolver(), + Settings.System.LOCKSCREEN_VISUALIZER_ENABLED, isChecked ? 1 : 0); + mAutoColor.setEnabled(isChecked); + mLavaLamp.setEnabled(isChecked); + pc.setEnabled(isChecked); + } + + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + ContentResolver resolver = getActivity().getContentResolver(); + if (preference == mLavaLamp) { + boolean mLavaLampEnabled = (Boolean) newValue; + if (mLavaLampEnabled) { + mAutoColor.setSummary(getActivity().getString( + R.string.lockscreen_autocolor_lavalamp)); + } else { + mAutoColor.setSummary(getActivity().getString( + R.string.lockscreen_autocolor_summary)); + } + mAutoColor.setEnabled(!mLavaLampEnabled); + return true; + } + return false; + } + + @Override + public int getMetricsCategory() { + return MetricsEvent.CHERISH_SETTINGS; + } +}