162 lines
7.7 KiB
Java
162 lines
7.7 KiB
Java
package com.cherish.settings.fragments;
|
|
|
|
import com.android.internal.logging.nano.MetricsProto;
|
|
|
|
import android.os.Bundle;
|
|
import android.content.ContentResolver;
|
|
import com.android.settings.R;
|
|
import android.content.res.Resources;
|
|
import androidx.preference.Preference;
|
|
import androidx.preference.Preference.OnPreferenceChangeListener;
|
|
import androidx.preference.PreferenceCategory;
|
|
import androidx.preference.PreferenceScreen;
|
|
import android.provider.Settings;
|
|
import androidx.preference.ListPreference;
|
|
|
|
import com.android.settings.SettingsPreferenceFragment;
|
|
import com.cherish.settings.preferences.SystemSettingMasterSwitchPreference;
|
|
import com.cherish.settings.preferences.SystemSettingSeekBarPreference;
|
|
import com.cherish.settings.preferences.CustomSeekBarPreference;
|
|
import com.cherish.settings.preferences.SystemSettingListPreference;
|
|
import com.cherish.settings.preferences.SystemSettingListPreference;
|
|
import com.cherish.settings.preferences.SystemSettingSwitchPreference;
|
|
import net.margaritov.preference.colorpicker.ColorPickerPreference;
|
|
import com.android.internal.util.cherish.CherishUtils;
|
|
|
|
public class NotificationSettings extends SettingsPreferenceFragment implements Preference.OnPreferenceChangeListener{
|
|
|
|
private static final String NOTIFICATION_PULSE_COLOR = "ambient_notification_light_color";
|
|
private static final String AMBIENT_LIGHT_DURATION = "ambient_light_duration";
|
|
private static final String AMBIENT_LIGHT_REPEAT_COUNT = "ambient_light_repeat_count";
|
|
private static final String PULSE_COLOR_MODE_PREF = "ambient_notification_light_color_mode";
|
|
private static final String INCALL_VIB_OPTIONS = "incall_vib_options";
|
|
|
|
private Preference mChargingLeds;
|
|
private ColorPickerPreference mEdgeLightColorPreference;
|
|
private SystemSettingSeekBarPreference mEdgeLightDurationPreference;
|
|
private SystemSettingSeekBarPreference mEdgeLightRepeatCountPreference;
|
|
private ListPreference mColorMode;
|
|
private SystemSettingListPreference mAmbientLightLayout;
|
|
|
|
@Override
|
|
public void onCreate(Bundle icicle) {
|
|
super.onCreate(icicle);
|
|
|
|
addPreferencesFromResource(R.xml.cherish_settings_notifications);
|
|
PreferenceScreen prefScreen = getPreferenceScreen();
|
|
ContentResolver resolver = getActivity().getContentResolver();
|
|
|
|
mChargingLeds = (Preference) findPreference("charging_light");
|
|
if (mChargingLeds != null
|
|
&& !getResources().getBoolean(
|
|
com.android.internal.R.bool.config_intrusiveBatteryLed)) {
|
|
prefScreen.removePreference(mChargingLeds);
|
|
}
|
|
|
|
PreferenceCategory incallVibCategory = (PreferenceCategory) findPreference(INCALL_VIB_OPTIONS);
|
|
if (!CherishUtils.isVoiceCapable(getActivity())) {
|
|
prefScreen.removePreference(incallVibCategory);
|
|
}
|
|
|
|
mEdgeLightRepeatCountPreference = (SystemSettingSeekBarPreference) findPreference(AMBIENT_LIGHT_REPEAT_COUNT);
|
|
mEdgeLightRepeatCountPreference.setOnPreferenceChangeListener(this);
|
|
int rCount = Settings.System.getInt(getContentResolver(),
|
|
Settings.System.AMBIENT_LIGHT_REPEAT_COUNT, 0);
|
|
mEdgeLightRepeatCountPreference.setValue(rCount);
|
|
|
|
mEdgeLightDurationPreference = (SystemSettingSeekBarPreference) findPreference(AMBIENT_LIGHT_DURATION);
|
|
mEdgeLightDurationPreference.setOnPreferenceChangeListener(this);
|
|
int duration = Settings.System.getInt(getContentResolver(),
|
|
Settings.System.AMBIENT_LIGHT_DURATION, 2);
|
|
mEdgeLightDurationPreference.setValue(duration);
|
|
|
|
mColorMode = (ListPreference) findPreference(PULSE_COLOR_MODE_PREF);
|
|
mAmbientLightLayout = (SystemSettingListPreference) findPreference("pulse_ambient_light_layout");
|
|
int value;
|
|
boolean colorModeAutomatic = Settings.System.getInt(getContentResolver(),
|
|
Settings.System.NOTIFICATION_PULSE_COLOR_AUTOMATIC, 0) != 0;
|
|
boolean colorModeAccent = Settings.System.getInt(getContentResolver(),
|
|
Settings.System.NOTIFICATION_PULSE_ACCENT, 0) != 0;
|
|
if (colorModeAutomatic) {
|
|
value = 0;
|
|
} else if (colorModeAccent) {
|
|
value = 1;
|
|
} else {
|
|
value = 2;
|
|
}
|
|
|
|
mColorMode.setValue(Integer.toString(value));
|
|
mColorMode.setSummary(mColorMode.getEntry());
|
|
mColorMode.setOnPreferenceChangeListener(this);
|
|
|
|
mEdgeLightColorPreference = (ColorPickerPreference) findPreference(NOTIFICATION_PULSE_COLOR);
|
|
int edgeLightColor = Settings.System.getInt(getContentResolver(),
|
|
Settings.System.NOTIFICATION_PULSE_COLOR, 0xFF3980FF);
|
|
mEdgeLightColorPreference.setNewPreviewColor(edgeLightColor);
|
|
mEdgeLightColorPreference.setAlphaSliderEnabled(false);
|
|
mAmbientLightLayout.setEnabled(true);
|
|
String edgeLightColorHex = String.format("#%08x", (0xFF3980FF & edgeLightColor));
|
|
if (edgeLightColorHex.equals("#ff3980ff")) {
|
|
mEdgeLightColorPreference.setSummary(R.string.color_default);
|
|
} else {
|
|
mEdgeLightColorPreference.setSummary(edgeLightColorHex);
|
|
}
|
|
mEdgeLightColorPreference.setOnPreferenceChangeListener(this);
|
|
|
|
}
|
|
|
|
@Override
|
|
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
|
if (preference == mEdgeLightColorPreference) {
|
|
String hex = ColorPickerPreference.convertToARGB(
|
|
Integer.valueOf(String.valueOf(newValue)));
|
|
if (hex.equals("#ff3980ff")) {
|
|
preference.setSummary(R.string.color_default);
|
|
} else {
|
|
preference.setSummary(hex);
|
|
}
|
|
int intHex = ColorPickerPreference.convertToColorInt(hex);
|
|
Settings.System.putInt(getContentResolver(),
|
|
Settings.System.NOTIFICATION_PULSE_COLOR, intHex);
|
|
return true;
|
|
} else if (preference == mEdgeLightRepeatCountPreference) {
|
|
int value = (Integer) newValue;
|
|
Settings.System.putInt(getContentResolver(),
|
|
Settings.System.AMBIENT_LIGHT_REPEAT_COUNT, value);
|
|
return true;
|
|
} else if (preference == mEdgeLightDurationPreference) {
|
|
int value = (Integer) newValue;
|
|
Settings.System.putInt(getContentResolver(),
|
|
Settings.System.AMBIENT_LIGHT_DURATION, value);
|
|
return true;
|
|
} else if (preference == mColorMode) {
|
|
int value = Integer.valueOf((String) newValue);
|
|
int index = mColorMode.findIndexOfValue((String) newValue);
|
|
mColorMode.setSummary(mColorMode.getEntries()[index]);
|
|
if (value == 0) {
|
|
Settings.System.putInt(getContentResolver(),
|
|
Settings.System.NOTIFICATION_PULSE_COLOR_AUTOMATIC, 1);
|
|
Settings.System.putInt(getContentResolver(),
|
|
Settings.System.NOTIFICATION_PULSE_ACCENT, 0);
|
|
} else if (value == 1) {
|
|
Settings.System.putInt(getContentResolver(),
|
|
Settings.System.NOTIFICATION_PULSE_COLOR_AUTOMATIC, 0);
|
|
Settings.System.putInt(getContentResolver(),
|
|
Settings.System.NOTIFICATION_PULSE_ACCENT, 1);
|
|
} else {
|
|
Settings.System.putInt(getContentResolver(),
|
|
Settings.System.NOTIFICATION_PULSE_COLOR_AUTOMATIC, 0);
|
|
Settings.System.putInt(getContentResolver(),
|
|
Settings.System.NOTIFICATION_PULSE_ACCENT, 0);
|
|
}
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public int getMetricsCategory() {
|
|
return MetricsProto.MetricsEvent.CHERISH_SETTINGS;
|
|
}
|
|
}
|