DevelopmentSettings.java revision f40770096fe75180fba679ed349a63d195729c0c
1afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project/*
2afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Copyright (C) 2008 The Android Open Source Project
3afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project *
4afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
5afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * you may not use this file except in compliance with the License.
6afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * You may obtain a copy of the License at
7afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project *
8afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
9afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project *
10afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
11afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
12afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * See the License for the specific language governing permissions and
14afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * limitations under the License.
15afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */
16afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
17afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectpackage com.android.settings;
18afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
19eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackbornimport android.app.ActivityManagerNative;
20b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwoodimport android.app.AlertDialog;
2124bd892bdeced9cadd0ee60bbd6a9dd9c035d54bAmith Yamasaniimport android.app.Dialog;
22fac0ea781f0c99a446ab6588006b2ac0330cb774Christopher Tateimport android.app.backup.IBackupManager;
23ee2937941d4e9a4d2cd94d504ddaa9685bcca090Dianne Hackbornimport android.content.ContentResolver;
24fac0ea781f0c99a446ab6588006b2ac0330cb774Christopher Tateimport android.content.Context;
25b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwoodimport android.content.DialogInterface;
26eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackbornimport android.content.Intent;
27afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.BatteryManager;
28f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasaniimport android.os.Build;
29afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.Bundle;
30eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackbornimport android.os.IBinder;
31eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackbornimport android.os.Parcel;
32eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackbornimport android.os.RemoteException;
33eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackbornimport android.os.ServiceManager;
34eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackbornimport android.os.StrictMode;
35f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasaniimport android.os.SystemProperties;
36f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasaniimport android.preference.CheckBoxPreference;
37f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasaniimport android.preference.ListPreference;
38afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.preference.Preference;
39ee2937941d4e9a4d2cd94d504ddaa9685bcca090Dianne Hackbornimport android.preference.PreferenceFragment;
40afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.preference.PreferenceScreen;
41f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasaniimport android.preference.Preference.OnPreferenceChangeListener;
42afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.provider.Settings;
43eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackbornimport android.text.TextUtils;
44eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackbornimport android.view.IWindowManager;
45afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
46afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project/*
47afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Displays preferences for application developers.
48afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */
49ee2937941d4e9a4d2cd94d504ddaa9685bcca090Dianne Hackbornpublic class DevelopmentSettings extends PreferenceFragment
50f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani        implements DialogInterface.OnClickListener, DialogInterface.OnDismissListener,
51f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani                OnPreferenceChangeListener {
52afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
53afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private static final String ENABLE_ADB = "enable_adb";
54afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private static final String KEEP_SCREEN_ON = "keep_screen_on";
55afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private static final String ALLOW_MOCK_LOCATION = "allow_mock_location";
56f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani    private static final String HDCP_CHECKING_KEY = "hdcp_checking";
57f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani    private static final String HDCP_CHECKING_PROPERTY = "persist.sys.hdcp_checking";
58fac0ea781f0c99a446ab6588006b2ac0330cb774Christopher Tate    private static final String LOCAL_BACKUP_PASSWORD = "local_backup_password";
59afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
60eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    private static final String STRICT_MODE_KEY = "strict_mode";
61eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    private static final String POINTER_LOCATION_KEY = "pointer_location";
62f40770096fe75180fba679ed349a63d195729c0cJeff Brown    private static final String SHOW_TOUCHES_KEY = "show_touches";
63eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    private static final String SHOW_SCREEN_UPDATES_KEY = "show_screen_updates";
64eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    private static final String SHOW_CPU_USAGE_KEY = "show_cpu_usage";
65eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    private static final String WINDOW_ANIMATION_SCALE_KEY = "window_animation_scale";
66eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    private static final String TRANSITION_ANIMATION_SCALE_KEY = "transition_animation_scale";
67eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn
68eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    private static final String IMMEDIATELY_DESTROY_ACTIVITIES_KEY
69eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn            = "immediately_destroy_activities";
70eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    private static final String APP_PROCESS_LIMIT_KEY = "app_process_limit";
71eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn
72d5119bd39738853dc96156d93c3dfbd65dd601e7Dianne Hackborn    private static final String SHOW_ALL_ANRS_KEY = "show_all_anrs";
73d5119bd39738853dc96156d93c3dfbd65dd601e7Dianne Hackborn
74eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    private IWindowManager mWindowManager;
75fac0ea781f0c99a446ab6588006b2ac0330cb774Christopher Tate    private IBackupManager mBackupManager;
76eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn
77afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private CheckBoxPreference mEnableAdb;
78afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private CheckBoxPreference mKeepScreenOn;
79afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private CheckBoxPreference mAllowMockLocation;
80fac0ea781f0c99a446ab6588006b2ac0330cb774Christopher Tate    private PreferenceScreen mPassword;
81afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
82eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    private CheckBoxPreference mStrictMode;
83eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    private CheckBoxPreference mPointerLocation;
84f40770096fe75180fba679ed349a63d195729c0cJeff Brown    private CheckBoxPreference mShowTouches;
85eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    private CheckBoxPreference mShowScreenUpdates;
86eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    private CheckBoxPreference mShowCpuUsage;
87eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    private ListPreference mWindowAnimationScale;
88eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    private ListPreference mTransitionAnimationScale;
89eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn
90eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    private CheckBoxPreference mImmediatelyDestroyActivities;
91eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    private ListPreference mAppProcessLimit;
92eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn
93d5119bd39738853dc96156d93c3dfbd65dd601e7Dianne Hackborn    private CheckBoxPreference mShowAllANRs;
94d5119bd39738853dc96156d93c3dfbd65dd601e7Dianne Hackborn
95b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood    // To track whether Yes was clicked in the adb warning dialog
96b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood    private boolean mOkClicked;
97b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood
9824bd892bdeced9cadd0ee60bbd6a9dd9c035d54bAmith Yamasani    private Dialog mOkDialog;
9924bd892bdeced9cadd0ee60bbd6a9dd9c035d54bAmith Yamasani
100afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    @Override
101ee2937941d4e9a4d2cd94d504ddaa9685bcca090Dianne Hackborn    public void onCreate(Bundle icicle) {
102afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        super.onCreate(icicle);
103afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
104eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        mWindowManager = IWindowManager.Stub.asInterface(ServiceManager.getService("window"));
105fac0ea781f0c99a446ab6588006b2ac0330cb774Christopher Tate        mBackupManager = IBackupManager.Stub.asInterface(
106fac0ea781f0c99a446ab6588006b2ac0330cb774Christopher Tate                ServiceManager.getService(Context.BACKUP_SERVICE));
107eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn
108afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        addPreferencesFromResource(R.xml.development_prefs);
109afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
110afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mEnableAdb = (CheckBoxPreference) findPreference(ENABLE_ADB);
111afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mKeepScreenOn = (CheckBoxPreference) findPreference(KEEP_SCREEN_ON);
112afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mAllowMockLocation = (CheckBoxPreference) findPreference(ALLOW_MOCK_LOCATION);
113fac0ea781f0c99a446ab6588006b2ac0330cb774Christopher Tate        mPassword = (PreferenceScreen) findPreference(LOCAL_BACKUP_PASSWORD);
114f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani
115eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        mStrictMode = (CheckBoxPreference) findPreference(STRICT_MODE_KEY);
116eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        mPointerLocation = (CheckBoxPreference) findPreference(POINTER_LOCATION_KEY);
117f40770096fe75180fba679ed349a63d195729c0cJeff Brown        mShowTouches = (CheckBoxPreference) findPreference(SHOW_TOUCHES_KEY);
118eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        mShowScreenUpdates = (CheckBoxPreference) findPreference(SHOW_SCREEN_UPDATES_KEY);
119eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        mShowCpuUsage = (CheckBoxPreference) findPreference(SHOW_CPU_USAGE_KEY);
120eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        mWindowAnimationScale = (ListPreference) findPreference(WINDOW_ANIMATION_SCALE_KEY);
12183b09a57e158f3050c7feb5ea75e8dd2d626697eDianne Hackborn        mWindowAnimationScale.setOnPreferenceChangeListener(this);
122eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        mTransitionAnimationScale = (ListPreference) findPreference(TRANSITION_ANIMATION_SCALE_KEY);
12383b09a57e158f3050c7feb5ea75e8dd2d626697eDianne Hackborn        mTransitionAnimationScale.setOnPreferenceChangeListener(this);
124eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn
125eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        mImmediatelyDestroyActivities = (CheckBoxPreference) findPreference(
126eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                IMMEDIATELY_DESTROY_ACTIVITIES_KEY);
127eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        mAppProcessLimit = (ListPreference) findPreference(APP_PROCESS_LIMIT_KEY);
12883b09a57e158f3050c7feb5ea75e8dd2d626697eDianne Hackborn        mAppProcessLimit.setOnPreferenceChangeListener(this);
129eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn
130d5119bd39738853dc96156d93c3dfbd65dd601e7Dianne Hackborn        mShowAllANRs = (CheckBoxPreference) findPreference(
131d5119bd39738853dc96156d93c3dfbd65dd601e7Dianne Hackborn                SHOW_ALL_ANRS_KEY);
132d5119bd39738853dc96156d93c3dfbd65dd601e7Dianne Hackborn
1334f4ddaa823bfa7bd2fdff97338ff1839739925ddGlenn Kasten        removeHdcpOptionsForProduction();
134f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani    }
135f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani
136f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani    private void removeHdcpOptionsForProduction() {
137f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani        if ("user".equals(Build.TYPE)) {
138f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani            Preference hdcpChecking = findPreference(HDCP_CHECKING_KEY);
139f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani            if (hdcpChecking != null) {
140f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani                // Remove the preference
141f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani                getPreferenceScreen().removePreference(hdcpChecking);
142f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani            }
143f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani        }
144afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
145afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
146afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    @Override
147ee2937941d4e9a4d2cd94d504ddaa9685bcca090Dianne Hackborn    public void onResume() {
148afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        super.onResume();
14950cb76f58554dbccc51a754a73abef2debd8b721Ying Wang
150ee2937941d4e9a4d2cd94d504ddaa9685bcca090Dianne Hackborn        final ContentResolver cr = getActivity().getContentResolver();
151ee2937941d4e9a4d2cd94d504ddaa9685bcca090Dianne Hackborn        mEnableAdb.setChecked(Settings.Secure.getInt(cr,
152afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                Settings.Secure.ADB_ENABLED, 0) != 0);
153ee2937941d4e9a4d2cd94d504ddaa9685bcca090Dianne Hackborn        mKeepScreenOn.setChecked(Settings.System.getInt(cr,
154afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                Settings.System.STAY_ON_WHILE_PLUGGED_IN, 0) != 0);
155ee2937941d4e9a4d2cd94d504ddaa9685bcca090Dianne Hackborn        mAllowMockLocation.setChecked(Settings.Secure.getInt(cr,
156afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                Settings.Secure.ALLOW_MOCK_LOCATION, 0) != 0);
157f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani        updateHdcpValues();
158fac0ea781f0c99a446ab6588006b2ac0330cb774Christopher Tate        updatePasswordSummary();
159eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        updateStrictModeVisualOptions();
160eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        updatePointerLocationOptions();
161f40770096fe75180fba679ed349a63d195729c0cJeff Brown        updateShowTouchesOptions();
162eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        updateFlingerOptions();
163eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        updateCpuUsageOptions();
164eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        updateAnimationScaleOptions();
165eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        updateImmediatelyDestroyActivitiesOptions();
166eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        updateAppProcessLimitOptions();
167d5119bd39738853dc96156d93c3dfbd65dd601e7Dianne Hackborn        updateShowAllANRsOptions();
168f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani    }
169f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani
170f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani    private void updateHdcpValues() {
171f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani        int index = 1; // Defaults to drm-only. Needs to match with R.array.hdcp_checking_values
172f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani        ListPreference hdcpChecking = (ListPreference) findPreference(HDCP_CHECKING_KEY);
173f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani        if (hdcpChecking != null) {
174f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani            String currentValue = SystemProperties.get(HDCP_CHECKING_PROPERTY);
175f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani            String[] values = getResources().getStringArray(R.array.hdcp_checking_values);
176f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani            String[] summaries = getResources().getStringArray(R.array.hdcp_checking_summaries);
177f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani            for (int i = 0; i < values.length; i++) {
178f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani                if (currentValue.equals(values[i])) {
179f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani                    index = i;
180f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani                    break;
181f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani                }
182f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani            }
183f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani            hdcpChecking.setValue(values[index]);
184f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani            hdcpChecking.setSummary(summaries[index]);
185f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani            hdcpChecking.setOnPreferenceChangeListener(this);
186f3b325f54dadb482d73111ab17cf6a51784de11aAmith Yamasani        }
187afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
188afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
189fac0ea781f0c99a446ab6588006b2ac0330cb774Christopher Tate    private void updatePasswordSummary() {
190fac0ea781f0c99a446ab6588006b2ac0330cb774Christopher Tate        try {
191fac0ea781f0c99a446ab6588006b2ac0330cb774Christopher Tate            if (mBackupManager.hasBackupPassword()) {
192fac0ea781f0c99a446ab6588006b2ac0330cb774Christopher Tate                mPassword.setSummary(R.string.local_backup_password_summary_change);
193fac0ea781f0c99a446ab6588006b2ac0330cb774Christopher Tate            } else {
194fac0ea781f0c99a446ab6588006b2ac0330cb774Christopher Tate                mPassword.setSummary(R.string.local_backup_password_summary_none);
195fac0ea781f0c99a446ab6588006b2ac0330cb774Christopher Tate            }
196fac0ea781f0c99a446ab6588006b2ac0330cb774Christopher Tate        } catch (RemoteException e) {
197fac0ea781f0c99a446ab6588006b2ac0330cb774Christopher Tate            // Not much we can do here
198fac0ea781f0c99a446ab6588006b2ac0330cb774Christopher Tate        }
199fac0ea781f0c99a446ab6588006b2ac0330cb774Christopher Tate    }
200fac0ea781f0c99a446ab6588006b2ac0330cb774Christopher Tate
201eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    // Returns the current state of the system property that controls
202eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    // strictmode flashes.  One of:
203eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    //    0: not explicitly set one way or another
204eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    //    1: on
205eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    //    2: off
206eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    private int currentStrictModeActiveIndex() {
207eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        if (TextUtils.isEmpty(SystemProperties.get(StrictMode.VISUAL_PROPERTY))) {
208eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn            return 0;
209eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        }
210eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        boolean enabled = SystemProperties.getBoolean(StrictMode.VISUAL_PROPERTY, false);
211eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        return enabled ? 1 : 2;
212eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    }
213eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn
214eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    private void writeStrictModeVisualOptions() {
215eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        try {
216eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn            mWindowManager.setStrictModeVisualIndicatorPreference(mStrictMode.isChecked()
217eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                    ? "1" : "");
218eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        } catch (RemoteException e) {
219eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        }
220eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    }
221eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn
222eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    private void updateStrictModeVisualOptions() {
223eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        mStrictMode.setChecked(currentStrictModeActiveIndex() == 1);
224eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    }
225eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn
226eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    private void writePointerLocationOptions() {
227eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        Settings.System.putInt(getActivity().getContentResolver(),
228eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                Settings.System.POINTER_LOCATION, mPointerLocation.isChecked() ? 1 : 0);
229eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    }
230eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn
231eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    private void updatePointerLocationOptions() {
232eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        mPointerLocation.setChecked(Settings.System.getInt(getActivity().getContentResolver(),
233eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                Settings.System.POINTER_LOCATION, 0) != 0);
234eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    }
235eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn
236f40770096fe75180fba679ed349a63d195729c0cJeff Brown    private void writeShowTouchesOptions() {
237f40770096fe75180fba679ed349a63d195729c0cJeff Brown        Settings.System.putInt(getActivity().getContentResolver(),
238f40770096fe75180fba679ed349a63d195729c0cJeff Brown                Settings.System.SHOW_TOUCHES, mShowTouches.isChecked() ? 1 : 0);
239f40770096fe75180fba679ed349a63d195729c0cJeff Brown    }
240f40770096fe75180fba679ed349a63d195729c0cJeff Brown
241f40770096fe75180fba679ed349a63d195729c0cJeff Brown    private void updateShowTouchesOptions() {
242f40770096fe75180fba679ed349a63d195729c0cJeff Brown        mShowTouches.setChecked(Settings.System.getInt(getActivity().getContentResolver(),
243f40770096fe75180fba679ed349a63d195729c0cJeff Brown                Settings.System.SHOW_TOUCHES, 0) != 0);
244f40770096fe75180fba679ed349a63d195729c0cJeff Brown    }
245f40770096fe75180fba679ed349a63d195729c0cJeff Brown
246eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    private void updateFlingerOptions() {
247eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        // magic communication with surface flinger.
248eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        try {
249eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn            IBinder flinger = ServiceManager.getService("SurfaceFlinger");
250eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn            if (flinger != null) {
251eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                Parcel data = Parcel.obtain();
252eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                Parcel reply = Parcel.obtain();
253eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                data.writeInterfaceToken("android.ui.ISurfaceComposer");
254eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                flinger.transact(1010, data, reply, 0);
255eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                @SuppressWarnings("unused")
256eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                int showCpu = reply.readInt();
257eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                @SuppressWarnings("unused")
258eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                int enableGL = reply.readInt();
259eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                int showUpdates = reply.readInt();
260eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                mShowScreenUpdates.setChecked(showUpdates != 0);
261eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                @SuppressWarnings("unused")
262eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                int showBackground = reply.readInt();
263eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                reply.recycle();
264eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                data.recycle();
265eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn            }
266eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        } catch (RemoteException ex) {
267eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        }
268eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    }
269eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn
270eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    private void writeFlingerOptions() {
271eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        try {
272eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn            IBinder flinger = ServiceManager.getService("SurfaceFlinger");
273eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn            if (flinger != null) {
274eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                Parcel data = Parcel.obtain();
275eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                data.writeInterfaceToken("android.ui.ISurfaceComposer");
276eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                data.writeInt(mShowScreenUpdates.isChecked() ? 1 : 0);
277eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                flinger.transact(1002, data, null, 0);
278eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                data.recycle();
279eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn
280eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                updateFlingerOptions();
281eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn            }
282eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        } catch (RemoteException ex) {
283eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        }
284eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    }
285eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn
286eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    private void updateCpuUsageOptions() {
287eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        mShowCpuUsage.setChecked(Settings.System.getInt(getActivity().getContentResolver(),
288eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                Settings.System.SHOW_PROCESSES, 0) != 0);
289eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    }
290eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn
291eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    private void writeCpuUsageOptions() {
292eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        boolean value = mShowCpuUsage.isChecked();
293eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        Settings.System.putInt(getActivity().getContentResolver(),
294eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                Settings.System.SHOW_PROCESSES, value ? 1 : 0);
295eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        Intent service = (new Intent())
296c5ec5be6e4e796bd44475c63d43d8806e522aaf1Dianne Hackborn                .setClassName("com.android.systemui", "com.android.systemui.LoadAverageService");
297eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        if (value) {
298eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn            getActivity().startService(service);
299eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        } else {
300eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn            getActivity().stopService(service);
301eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        }
302eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    }
303eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn
304eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    private void writeImmediatelyDestroyActivitiesOptions() {
305eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        try {
306eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn            ActivityManagerNative.getDefault().setAlwaysFinish(
307eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                    mImmediatelyDestroyActivities.isChecked());
308eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        } catch (RemoteException ex) {
309eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        }
310eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    }
311eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn
312eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    private void updateImmediatelyDestroyActivitiesOptions() {
313eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        mImmediatelyDestroyActivities.setChecked(Settings.System.getInt(
314eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn            getActivity().getContentResolver(), Settings.System.ALWAYS_FINISH_ACTIVITIES, 0) != 0);
315eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    }
316eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn
317eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    private void updateAnimationScaleValue(int which, ListPreference pref) {
318eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        try {
319eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn            float scale = mWindowManager.getAnimationScale(which);
320eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn            CharSequence[] values = pref.getEntryValues();
321eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn            for (int i=0; i<values.length; i++) {
322eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                float val = Float.parseFloat(values[i].toString());
323eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                if (scale <= val) {
324eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                    pref.setValueIndex(i);
32583b09a57e158f3050c7feb5ea75e8dd2d626697eDianne Hackborn                    pref.setSummary(pref.getEntries()[i]);
326eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                    return;
327eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                }
328eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn            }
329eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn            pref.setValueIndex(values.length-1);
33083b09a57e158f3050c7feb5ea75e8dd2d626697eDianne Hackborn            pref.setSummary(pref.getEntries()[0]);
331eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        } catch (RemoteException e) {
332eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        }
333eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    }
334eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn
335eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    private void updateAnimationScaleOptions() {
336eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        updateAnimationScaleValue(0, mWindowAnimationScale);
337eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        updateAnimationScaleValue(1, mTransitionAnimationScale);
338eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    }
339eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn
34083b09a57e158f3050c7feb5ea75e8dd2d626697eDianne Hackborn    private void writeAnimationScaleOption(int which, ListPreference pref, Object newValue) {
341eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        try {
34283b09a57e158f3050c7feb5ea75e8dd2d626697eDianne Hackborn            float scale = Float.parseFloat(newValue.toString());
343eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn            mWindowManager.setAnimationScale(which, scale);
344c5ec5be6e4e796bd44475c63d43d8806e522aaf1Dianne Hackborn            updateAnimationScaleValue(which, pref);
345eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        } catch (RemoteException e) {
346eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        }
347eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    }
348eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn
349eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    private void updateAppProcessLimitOptions() {
350eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        try {
351eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn            int limit = ActivityManagerNative.getDefault().getProcessLimit();
352eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn            CharSequence[] values = mAppProcessLimit.getEntryValues();
353eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn            for (int i=0; i<values.length; i++) {
354eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                int val = Integer.parseInt(values[i].toString());
355eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                if (val >= limit) {
356eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                    mAppProcessLimit.setValueIndex(i);
35783b09a57e158f3050c7feb5ea75e8dd2d626697eDianne Hackborn                    mAppProcessLimit.setSummary(mAppProcessLimit.getEntries()[i]);
358eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                    return;
359eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn                }
360eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn            }
361eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn            mAppProcessLimit.setValueIndex(0);
36283b09a57e158f3050c7feb5ea75e8dd2d626697eDianne Hackborn            mAppProcessLimit.setSummary(mAppProcessLimit.getEntries()[0]);
363eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        } catch (RemoteException e) {
364eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        }
365eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    }
366eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn
36783b09a57e158f3050c7feb5ea75e8dd2d626697eDianne Hackborn    private void writeAppProcessLimitOptions(Object newValue) {
368eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        try {
36983b09a57e158f3050c7feb5ea75e8dd2d626697eDianne Hackborn            int limit = Integer.parseInt(newValue.toString());
370eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn            ActivityManagerNative.getDefault().setProcessLimit(limit);
371c5ec5be6e4e796bd44475c63d43d8806e522aaf1Dianne Hackborn            updateAppProcessLimitOptions();
372eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        } catch (RemoteException e) {
373eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        }
374eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn    }
375eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn
376d5119bd39738853dc96156d93c3dfbd65dd601e7Dianne Hackborn    private void writeShowAllANRsOptions() {
377d5119bd39738853dc96156d93c3dfbd65dd601e7Dianne Hackborn        Settings.Secure.putInt(getActivity().getContentResolver(),
378d5119bd39738853dc96156d93c3dfbd65dd601e7Dianne Hackborn                Settings.Secure.ANR_SHOW_BACKGROUND,
379d5119bd39738853dc96156d93c3dfbd65dd601e7Dianne Hackborn                mShowAllANRs.isChecked() ? 1 : 0);
380d5119bd39738853dc96156d93c3dfbd65dd601e7Dianne Hackborn    }
381d5119bd39738853dc96156d93c3dfbd65dd601e7Dianne Hackborn
382d5119bd39738853dc96156d93c3dfbd65dd601e7Dianne Hackborn    private void updateShowAllANRsOptions() {
383d5119bd39738853dc96156d93c3dfbd65dd601e7Dianne Hackborn        mShowAllANRs.setChecked(Settings.Secure.getInt(
384d5119bd39738853dc96156d93c3dfbd65dd601e7Dianne Hackborn            getActivity().getContentResolver(), Settings.Secure.ANR_SHOW_BACKGROUND, 0) != 0);
385d5119bd39738853dc96156d93c3dfbd65dd601e7Dianne Hackborn    }
386d5119bd39738853dc96156d93c3dfbd65dd601e7Dianne Hackborn
387afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    @Override
388afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
389afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
390a718832e28095219a897c6e95e903c1a3fe57c12Ying Wang        if (Utils.isMonkeyRunning()) {
391afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            return false;
392afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
393afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
394afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        if (preference == mEnableAdb) {
395b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood            if (mEnableAdb.isChecked()) {
396b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood                mOkClicked = false;
39724bd892bdeced9cadd0ee60bbd6a9dd9c035d54bAmith Yamasani                if (mOkDialog != null) dismissDialog();
398ee2937941d4e9a4d2cd94d504ddaa9685bcca090Dianne Hackborn                mOkDialog = new AlertDialog.Builder(getActivity()).setMessage(
399ee2937941d4e9a4d2cd94d504ddaa9685bcca090Dianne Hackborn                        getActivity().getResources().getString(R.string.adb_warning_message))
400b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood                        .setTitle(R.string.adb_warning_title)
401b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood                        .setIcon(android.R.drawable.ic_dialog_alert)
402b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood                        .setPositiveButton(android.R.string.yes, this)
403b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood                        .setNegativeButton(android.R.string.no, this)
40424bd892bdeced9cadd0ee60bbd6a9dd9c035d54bAmith Yamasani                        .show();
40524bd892bdeced9cadd0ee60bbd6a9dd9c035d54bAmith Yamasani                mOkDialog.setOnDismissListener(this);
406b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood            } else {
407ee2937941d4e9a4d2cd94d504ddaa9685bcca090Dianne Hackborn                Settings.Secure.putInt(getActivity().getContentResolver(),
408ee2937941d4e9a4d2cd94d504ddaa9685bcca090Dianne Hackborn                        Settings.Secure.ADB_ENABLED, 0);
409b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood            }
410afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        } else if (preference == mKeepScreenOn) {
411ee2937941d4e9a4d2cd94d504ddaa9685bcca090Dianne Hackborn            Settings.System.putInt(getActivity().getContentResolver(),
412ee2937941d4e9a4d2cd94d504ddaa9685bcca090Dianne Hackborn                    Settings.System.STAY_ON_WHILE_PLUGGED_IN,
413afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    mKeepScreenOn.isChecked() ?
414afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    (BatteryManager.BATTERY_PLUGGED_AC | BatteryManager.BATTERY_PLUGGED_USB) : 0);
415afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        } else if (preference == mAllowMockLocation) {
416ee2937941d4e9a4d2cd94d504ddaa9685bcca090Dianne Hackborn            Settings.Secure.putInt(getActivity().getContentResolver(),
417ee2937941d4e9a4d2cd94d504ddaa9685bcca090Dianne Hackborn                    Settings.Secure.ALLOW_MOCK_LOCATION,
418afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    mAllowMockLocation.isChecked() ? 1 : 0);
419eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        } else if (preference == mStrictMode) {
420eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn            writeStrictModeVisualOptions();
421eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        } else if (preference == mPointerLocation) {
422eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn            writePointerLocationOptions();
423f40770096fe75180fba679ed349a63d195729c0cJeff Brown        } else if (preference == mShowTouches) {
424f40770096fe75180fba679ed349a63d195729c0cJeff Brown            writeShowTouchesOptions();
425eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        } else if (preference == mShowScreenUpdates) {
426eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn            writeFlingerOptions();
427eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        } else if (preference == mShowCpuUsage) {
428eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn            writeCpuUsageOptions();
429eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn        } else if (preference == mImmediatelyDestroyActivities) {
430eddc4fe89c020cbfedd5531cc2c13782034a8158Dianne Hackborn            writeImmediatelyDestroyActivitiesOptions();
431d5119bd39738853dc96156d93c3dfbd65dd601e7Dianne Hackborn        } else if (preference == mShowAllANRs) {
432d5119bd39738853dc96156d93c3dfbd65dd601e7Dianne Hackborn            writeShowAllANRsOptions();
433afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
43424bd892bdeced9cadd0ee60bbd6a9dd9c035d54bAmith Yamasani
435afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        return false;
436afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
437b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood
43883b09a57e158f3050c7feb5ea75e8dd2d626697eDianne Hackborn    @Override
43983b09a57e158f3050c7feb5ea75e8dd2d626697eDianne Hackborn    public boolean onPreferenceChange(Preference preference, Object newValue) {
44083b09a57e158f3050c7feb5ea75e8dd2d626697eDianne Hackborn        if (HDCP_CHECKING_KEY.equals(preference.getKey())) {
44183b09a57e158f3050c7feb5ea75e8dd2d626697eDianne Hackborn            SystemProperties.set(HDCP_CHECKING_PROPERTY, newValue.toString());
44283b09a57e158f3050c7feb5ea75e8dd2d626697eDianne Hackborn            updateHdcpValues();
44383b09a57e158f3050c7feb5ea75e8dd2d626697eDianne Hackborn            return true;
44483b09a57e158f3050c7feb5ea75e8dd2d626697eDianne Hackborn        } else if (preference == mWindowAnimationScale) {
44583b09a57e158f3050c7feb5ea75e8dd2d626697eDianne Hackborn            writeAnimationScaleOption(0, mWindowAnimationScale, newValue);
44683b09a57e158f3050c7feb5ea75e8dd2d626697eDianne Hackborn            return true;
44783b09a57e158f3050c7feb5ea75e8dd2d626697eDianne Hackborn        } else if (preference == mTransitionAnimationScale) {
44883b09a57e158f3050c7feb5ea75e8dd2d626697eDianne Hackborn            writeAnimationScaleOption(1, mTransitionAnimationScale, newValue);
44983b09a57e158f3050c7feb5ea75e8dd2d626697eDianne Hackborn            return true;
45083b09a57e158f3050c7feb5ea75e8dd2d626697eDianne Hackborn        } else if (preference == mAppProcessLimit) {
45183b09a57e158f3050c7feb5ea75e8dd2d626697eDianne Hackborn            writeAppProcessLimitOptions(newValue);
45283b09a57e158f3050c7feb5ea75e8dd2d626697eDianne Hackborn            return true;
45383b09a57e158f3050c7feb5ea75e8dd2d626697eDianne Hackborn        }
45483b09a57e158f3050c7feb5ea75e8dd2d626697eDianne Hackborn        return false;
45583b09a57e158f3050c7feb5ea75e8dd2d626697eDianne Hackborn    }
45683b09a57e158f3050c7feb5ea75e8dd2d626697eDianne Hackborn
45724bd892bdeced9cadd0ee60bbd6a9dd9c035d54bAmith Yamasani    private void dismissDialog() {
4588ccb9e0d33dcba1bd9f26e54d7066397e47a74a9Amith Yamasani        if (mOkDialog == null) return;
45924bd892bdeced9cadd0ee60bbd6a9dd9c035d54bAmith Yamasani        mOkDialog.dismiss();
46024bd892bdeced9cadd0ee60bbd6a9dd9c035d54bAmith Yamasani        mOkDialog = null;
46124bd892bdeced9cadd0ee60bbd6a9dd9c035d54bAmith Yamasani    }
46224bd892bdeced9cadd0ee60bbd6a9dd9c035d54bAmith Yamasani
463b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood    public void onClick(DialogInterface dialog, int which) {
464b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood        if (which == DialogInterface.BUTTON_POSITIVE) {
465b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood            mOkClicked = true;
466ee2937941d4e9a4d2cd94d504ddaa9685bcca090Dianne Hackborn            Settings.Secure.putInt(getActivity().getContentResolver(),
467ee2937941d4e9a4d2cd94d504ddaa9685bcca090Dianne Hackborn                    Settings.Secure.ADB_ENABLED, 1);
468b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood        } else {
469b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood            // Reset the toggle
470b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood            mEnableAdb.setChecked(false);
471b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood        }
472b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood    }
473b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood
474b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood    public void onDismiss(DialogInterface dialog) {
475b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood        // Assuming that onClick gets called first
476b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood        if (!mOkClicked) {
477b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood            mEnableAdb.setChecked(false);
478b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood        }
479b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood    }
48024bd892bdeced9cadd0ee60bbd6a9dd9c035d54bAmith Yamasani
48124bd892bdeced9cadd0ee60bbd6a9dd9c035d54bAmith Yamasani    @Override
48224bd892bdeced9cadd0ee60bbd6a9dd9c035d54bAmith Yamasani    public void onDestroy() {
48324bd892bdeced9cadd0ee60bbd6a9dd9c035d54bAmith Yamasani        dismissDialog();
48424bd892bdeced9cadd0ee60bbd6a9dd9c035d54bAmith Yamasani        super.onDestroy();
48524bd892bdeced9cadd0ee60bbd6a9dd9c035d54bAmith Yamasani    }
486afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project}
487