| package com.android.systemui.tuner; |
| |
| import android.content.Context; |
| import android.content.res.TypedArray; |
| import android.provider.Settings; |
| import android.support.v14.preference.SwitchPreference; |
| import android.util.AttributeSet; |
| |
| import com.android.internal.logging.MetricsLogger; |
| 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(); |
| TunerService.get(getContext()).addTunable(this, getKey().split(",")); |
| } |
| |
| @Override |
| public void onDetached() { |
| TunerService.get(getContext()).removeTunable(this); |
| super.onDetached(); |
| } |
| |
| @Override |
| public void onTuningChanged(String key, String newValue) { |
| setChecked(newValue != null ? Integer.parseInt(newValue) != 0 : 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; |
| } |
| |
| } |