OSDN Git Service

Bug 4167061 remove debug code
[android-x86/packages-apps-Settings.git] / src / com / android / settings / DevelopmentSettings.java
1 /*
2  * Copyright (C) 2008 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package com.android.settings;
18
19 import android.app.AlertDialog;
20 import android.app.Dialog;
21 import android.content.ContentResolver;
22 import android.content.DialogInterface;
23 import android.os.BatteryManager;
24 import android.os.Build;
25 import android.os.Bundle;
26 import android.os.SystemProperties;
27 import android.preference.CheckBoxPreference;
28 import android.preference.ListPreference;
29 import android.preference.Preference;
30 import android.preference.PreferenceFragment;
31 import android.preference.PreferenceScreen;
32 import android.preference.Preference.OnPreferenceChangeListener;
33 import android.provider.Settings;
34
35 /*
36  * Displays preferences for application developers.
37  */
38 public class DevelopmentSettings extends PreferenceFragment
39         implements DialogInterface.OnClickListener, DialogInterface.OnDismissListener,
40                 OnPreferenceChangeListener {
41
42     private static final String ENABLE_ADB = "enable_adb";
43     private static final String KEEP_SCREEN_ON = "keep_screen_on";
44     private static final String ALLOW_MOCK_LOCATION = "allow_mock_location";
45     private static final String HDCP_CHECKING_KEY = "hdcp_checking";
46     private static final String HDCP_CHECKING_PROPERTY = "persist.sys.hdcp_checking";
47
48     private CheckBoxPreference mEnableAdb;
49     private CheckBoxPreference mKeepScreenOn;
50     private CheckBoxPreference mAllowMockLocation;
51
52     // To track whether Yes was clicked in the adb warning dialog
53     private boolean mOkClicked;
54
55     private Dialog mOkDialog;
56
57     @Override
58     public void onCreate(Bundle icicle) {
59         super.onCreate(icicle);
60
61         addPreferencesFromResource(R.xml.development_prefs);
62
63         mEnableAdb = (CheckBoxPreference) findPreference(ENABLE_ADB);
64         mKeepScreenOn = (CheckBoxPreference) findPreference(KEEP_SCREEN_ON);
65         mAllowMockLocation = (CheckBoxPreference) findPreference(ALLOW_MOCK_LOCATION);
66
67         removeHdcpOptionsForProduction();
68     }
69
70     private void removeHdcpOptionsForProduction() {
71         if ("user".equals(Build.TYPE)) {
72             Preference hdcpChecking = findPreference(HDCP_CHECKING_KEY);
73             if (hdcpChecking != null) {
74                 // Remove the preference
75                 getPreferenceScreen().removePreference(hdcpChecking);
76             }
77         }
78     }
79
80     @Override
81     public void onResume() {
82         super.onResume();
83
84         final ContentResolver cr = getActivity().getContentResolver();
85         mEnableAdb.setChecked(Settings.Secure.getInt(cr,
86                 Settings.Secure.ADB_ENABLED, 0) != 0);
87         mKeepScreenOn.setChecked(Settings.System.getInt(cr,
88                 Settings.System.STAY_ON_WHILE_PLUGGED_IN, 0) != 0);
89         mAllowMockLocation.setChecked(Settings.Secure.getInt(cr,
90                 Settings.Secure.ALLOW_MOCK_LOCATION, 0) != 0);
91         updateHdcpValues();
92     }
93
94     private void updateHdcpValues() {
95         int index = 1; // Defaults to drm-only. Needs to match with R.array.hdcp_checking_values
96         ListPreference hdcpChecking = (ListPreference) findPreference(HDCP_CHECKING_KEY);
97         if (hdcpChecking != null) {
98             String currentValue = SystemProperties.get(HDCP_CHECKING_PROPERTY);
99             String[] values = getResources().getStringArray(R.array.hdcp_checking_values);
100             String[] summaries = getResources().getStringArray(R.array.hdcp_checking_summaries);
101             for (int i = 0; i < values.length; i++) {
102                 if (currentValue.equals(values[i])) {
103                     index = i;
104                     break;
105                 }
106             }
107             hdcpChecking.setValue(values[index]);
108             hdcpChecking.setSummary(summaries[index]);
109             hdcpChecking.setOnPreferenceChangeListener(this);
110         }
111     }
112
113     @Override
114     public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
115
116         if (Utils.isMonkeyRunning()) {
117             return false;
118         }
119
120         if (preference == mEnableAdb) {
121             if (mEnableAdb.isChecked()) {
122                 mOkClicked = false;
123                 if (mOkDialog != null) dismissDialog();
124                 mOkDialog = new AlertDialog.Builder(getActivity()).setMessage(
125                         getActivity().getResources().getString(R.string.adb_warning_message))
126                         .setTitle(R.string.adb_warning_title)
127                         .setIcon(android.R.drawable.ic_dialog_alert)
128                         .setPositiveButton(android.R.string.yes, this)
129                         .setNegativeButton(android.R.string.no, this)
130                         .show();
131                 mOkDialog.setOnDismissListener(this);
132             } else {
133                 Settings.Secure.putInt(getActivity().getContentResolver(),
134                         Settings.Secure.ADB_ENABLED, 0);
135             }
136         } else if (preference == mKeepScreenOn) {
137             Settings.System.putInt(getActivity().getContentResolver(),
138                     Settings.System.STAY_ON_WHILE_PLUGGED_IN, 
139                     mKeepScreenOn.isChecked() ? 
140                     (BatteryManager.BATTERY_PLUGGED_AC | BatteryManager.BATTERY_PLUGGED_USB) : 0);
141         } else if (preference == mAllowMockLocation) {
142             Settings.Secure.putInt(getActivity().getContentResolver(),
143                     Settings.Secure.ALLOW_MOCK_LOCATION,
144                     mAllowMockLocation.isChecked() ? 1 : 0);
145         }
146
147         return false;
148     }
149
150     private void dismissDialog() {
151         if (mOkDialog == null) return;
152         mOkDialog.dismiss();
153         mOkDialog = null;
154     }
155
156     public void onClick(DialogInterface dialog, int which) {
157         if (which == DialogInterface.BUTTON_POSITIVE) {
158             mOkClicked = true;
159             Settings.Secure.putInt(getActivity().getContentResolver(),
160                     Settings.Secure.ADB_ENABLED, 1);
161         } else {
162             // Reset the toggle
163             mEnableAdb.setChecked(false);
164         }
165     }
166
167     public void onDismiss(DialogInterface dialog) {
168         // Assuming that onClick gets called first
169         if (!mOkClicked) {
170             mEnableAdb.setChecked(false);
171         }
172     }
173
174     @Override
175     public void onDestroy() {
176         dismissDialog();
177         super.onDestroy();
178     }
179
180     @Override
181     public boolean onPreferenceChange(Preference preference, Object newValue) {
182         if (HDCP_CHECKING_KEY.equals(preference.getKey())) {
183             SystemProperties.set(HDCP_CHECKING_PROPERTY, newValue.toString());
184             updateHdcpValues();
185             return true;
186         }
187         return false;
188     }
189 }