1package com.android.systemui.tuner;
2
3import android.content.Context;
4import android.content.res.TypedArray;
5import android.provider.Settings;
6import android.support.v14.preference.SwitchPreference;
7import android.util.AttributeSet;
8
9import com.android.internal.logging.MetricsLogger;
10import com.android.systemui.Dependency;
11import com.android.systemui.R;
12import com.android.systemui.tuner.TunerService.Tunable;
13
14public class TunerSwitch extends SwitchPreference implements Tunable {
15
16    private final boolean mDefault;
17    private final int mAction;
18
19    public TunerSwitch(Context context, AttributeSet attrs) {
20        super(context, attrs);
21
22        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.TunerSwitch);
23        mDefault = a.getBoolean(R.styleable.TunerSwitch_defValue, false);
24        mAction = a.getInt(R.styleable.TunerSwitch_metricsAction, -1);
25    }
26
27    @Override
28    public void onAttached() {
29        super.onAttached();
30        Dependency.get(TunerService.class).addTunable(this, getKey().split(","));
31    }
32
33    @Override
34    public void onDetached() {
35        Dependency.get(TunerService.class).removeTunable(this);
36        super.onDetached();
37    }
38
39    @Override
40    public void onTuningChanged(String key, String newValue) {
41        setChecked(newValue != null ? Integer.parseInt(newValue) != 0 : mDefault);
42    }
43
44    @Override
45    protected void onClick() {
46        super.onClick();
47        if (mAction != -1) {
48            MetricsLogger.action(getContext(), mAction, isChecked());
49        }
50    }
51
52    @Override
53    protected boolean persistBoolean(boolean value) {
54        for (String key : getKey().split(",")) {
55            Settings.Secure.putString(getContext().getContentResolver(), key, value ? "1" : "0");
56        }
57        return true;
58    }
59
60}
61