Cherish:Update preferences

Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
This commit is contained in:
Hưng Phan
2021-08-04 12:50:45 +07:00
parent 65ec8c7bb9
commit fa19788f2f

View File

@@ -17,35 +17,48 @@
package com.cherish.settings.preferences;
import android.content.Context;
import android.provider.Settings;
import androidx.preference.SwitchPreference;
import android.util.AttributeSet;
import androidx.preference.SwitchPreference;
public class SystemSettingSwitchPreference extends SwitchPreference {
public SystemSettingSwitchPreference(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setPreferenceDataStore(new SystemSettingsStore(context.getContentResolver()));
}
public SystemSettingSwitchPreference(Context context, AttributeSet attrs) {
super(context, attrs);
setPreferenceDataStore(new SystemSettingsStore(context.getContentResolver()));
}
public SystemSettingSwitchPreference(Context context) {
super(context);
setPreferenceDataStore(new SystemSettingsStore(context.getContentResolver()));
super(context, null);
}
@Override
protected boolean persistBoolean(boolean value) {
if (shouldPersist()) {
if (value == getPersistedBoolean(!value)) {
// It's already there, so the same as persisting
return true;
}
Settings.System.putInt(getContext().getContentResolver(), getKey(), value ? 1 : 0);
return true;
}
return false;
}
@Override
protected boolean getPersistedBoolean(boolean defaultReturnValue) {
if (!shouldPersist()) {
return defaultReturnValue;
}
return Settings.System.getInt(getContext().getContentResolver(),
getKey(), defaultReturnValue ? 1 : 0) != 0;
}
@Override
protected void onSetInitialValue(boolean restoreValue, Object defaultValue) {
// This is what default TwoStatePreference implementation is doing without respecting
// real default value:
//setChecked(restoreValue ? getPersistedBoolean(mChecked)
// : (Boolean) defaultValue);
// Instead, we better do
setChecked(restoreValue ? getPersistedBoolean((Boolean) defaultValue)
setChecked(Settings.System.getString(getContext().getContentResolver(), getKey()) != null ? getPersistedBoolean(isChecked())
: (Boolean) defaultValue);
}
}