DoubleTapPowerPreferenceController.java revision b99ea900463af1b4ecc92dbd138670f0f182ff46
1b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang/*
2b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang * Copyright (C) 2016 The Android Open Source Project
3b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang *
4b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang * Licensed under the Apache License, Version 2.0 (the "License");
5b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang * you may not use this file except in compliance with the License.
6b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang * You may obtain a copy of the License at
7b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang *
8b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang *      http://www.apache.org/licenses/LICENSE-2.0
9b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang *
10b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang * Unless required by applicable law or agreed to in writing, software
11b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang * distributed under the License is distributed on an "AS IS" BASIS,
12b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang * See the License for the specific language governing permissions and
14b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang * limitations under the License.
15b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang */
16b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang
17b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhangpackage com.android.settings.gestures;
18b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang
19b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhangimport android.content.Context;
20b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhangimport android.provider.Settings;
21b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhangimport android.support.v7.preference.Preference;
22b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhangimport android.support.v7.preference.TwoStatePreference;
23b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang
24b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhangimport com.android.settings.core.PreferenceController;
25b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang
26b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhangpublic class DoubleTapPowerPreferenceController extends PreferenceController
27b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang        implements Preference.OnPreferenceChangeListener {
28b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang
29b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang    private static final String PREF_KEY_DOUBLE_TAP_POWER = "gesture_double_tap_power";
30b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang
31b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang    public DoubleTapPowerPreferenceController(Context context) {
32b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang        super(context);
33b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang    }
34b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang
35b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang    @Override
36b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang    public boolean isAvailable() {
37b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang        return mContext.getResources().getBoolean(
38b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang                com.android.internal.R.bool.config_cameraDoubleTapPowerGestureEnabled);
39b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang    }
40b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang
41b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang    @Override
42b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang    public boolean handlePreferenceTreeClick(Preference preference) {
43b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang        return false;
44b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang    }
45b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang
46b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang    @Override
47b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang    public String getPreferenceKey() {
48b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang        return PREF_KEY_DOUBLE_TAP_POWER;
49b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang    }
50b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang
51b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang    @Override
52b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang    public void updateState(Preference preference) {
53b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang        final boolean isEnabled = isDoubleTapEnabled();
54b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang        if (preference != null) {
55b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang            if (preference instanceof TwoStatePreference) {
56b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang                ((TwoStatePreference) preference).setChecked(isEnabled);
57b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang            } else {
58b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang                preference.setSummary(isEnabled
59b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang                        ? com.android.settings.R.string.gesture_setting_on
60b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang                        : com.android.settings.R.string.gesture_setting_off);
61b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang            }
62b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang        }
63b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang    }
64b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang
65b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang    @Override
66b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang    public boolean onPreferenceChange(Preference preference, Object newValue) {
67b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang        boolean enabled = (boolean) newValue;
68b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang        Settings.Secure.putInt(mContext.getContentResolver(),
69b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang                Settings.Secure.CAMERA_DOUBLE_TAP_POWER_GESTURE_DISABLED, enabled ? 0 : 1);
70b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang        return true;
71b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang    }
72b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang
73b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang    private boolean isDoubleTapEnabled() {
74b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang        final int cameraDisabled = Settings.Secure.getInt(mContext.getContentResolver(),
75b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang                Settings.Secure.CAMERA_DOUBLE_TAP_POWER_GESTURE_DISABLED, 0);
76b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang        return cameraDisabled == 0;
77b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang    }
78b99ea900463af1b4ecc92dbd138670f0f182ff46Fan Zhang}
79