blob: 52b58d4510639204dd0385b4110a05a60a13d9b7 [file] [log] [blame]
package com.android.systemui.tuner;
import android.content.Context;
import android.content.res.TypedArray;
import android.provider.Settings;
import android.util.AttributeSet;
import androidx.preference.SwitchPreference;
import com.android.internal.logging.MetricsLogger;
import com.android.systemui.Dependency;
import com.android.systemui.R;
import com.android.systemui.tuner.TunerService.Tunable;
public class TunerSwitch extends SwitchPreference implements Tunable {
private final boolean mDefault;
private final int mAction;
public TunerSwitch(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.TunerSwitch);
mDefault = a.getBoolean(R.styleable.TunerSwitch_defValue, false);
mAction = a.getInt(R.styleable.TunerSwitch_metricsAction, -1);
}
@Override
public void onAttached() {
super.onAttached();
Dependency.get(TunerService.class).addTunable(this, getKey().split(","));
}
@Override
public void onDetached() {
Dependency.get(TunerService.class).removeTunable(this);
super.onDetached();
}
@Override
public void onTuningChanged(String key, String newValue) {
setChecked(TunerService.parseIntegerSwitch(newValue, mDefault));
}
@Override
protected void onClick() {
super.onClick();
if (mAction != -1) {
MetricsLogger.action(getContext(), mAction, isChecked());
}
}
@Override
protected boolean persistBoolean(boolean value) {
for (String key : getKey().split(",")) {
Settings.Secure.putString(getContext().getContentResolver(), key, value ? "1" : "0");
}
return true;
}
}