| /* |
| * Copyright (C) 2008 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.settings; |
| |
| import android.app.AlertDialog; |
| import android.app.Dialog; |
| import android.content.DialogInterface; |
| import android.os.BatteryManager; |
| import android.os.Bundle; |
| import android.os.SystemProperties; |
| import android.preference.Preference; |
| import android.preference.PreferenceActivity; |
| import android.preference.PreferenceScreen; |
| import android.preference.CheckBoxPreference; |
| import android.provider.Settings; |
| import android.text.TextUtils; |
| |
| /* |
| * Displays preferences for application developers. |
| */ |
| public class DevelopmentSettings extends PreferenceActivity |
| implements DialogInterface.OnClickListener, DialogInterface.OnDismissListener { |
| |
| private static final String ENABLE_ADB = "enable_adb"; |
| private static final String KEEP_SCREEN_ON = "keep_screen_on"; |
| private static final String ALLOW_MOCK_LOCATION = "allow_mock_location"; |
| |
| private CheckBoxPreference mEnableAdb; |
| private CheckBoxPreference mKeepScreenOn; |
| private CheckBoxPreference mAllowMockLocation; |
| |
| // To track whether Yes was clicked in the adb warning dialog |
| private boolean mOkClicked; |
| |
| private Dialog mOkDialog; |
| |
| @Override |
| protected void onCreate(Bundle icicle) { |
| super.onCreate(icicle); |
| |
| addPreferencesFromResource(R.xml.development_prefs); |
| |
| mEnableAdb = (CheckBoxPreference) findPreference(ENABLE_ADB); |
| mKeepScreenOn = (CheckBoxPreference) findPreference(KEEP_SCREEN_ON); |
| mAllowMockLocation = (CheckBoxPreference) findPreference(ALLOW_MOCK_LOCATION); |
| } |
| |
| @Override |
| protected void onResume() { |
| super.onResume(); |
| |
| mEnableAdb.setChecked(Settings.Secure.getInt(getContentResolver(), |
| Settings.Secure.ADB_ENABLED, 0) != 0); |
| mKeepScreenOn.setChecked(Settings.System.getInt(getContentResolver(), |
| Settings.System.STAY_ON_WHILE_PLUGGED_IN, 0) != 0); |
| mAllowMockLocation.setChecked(Settings.Secure.getInt(getContentResolver(), |
| Settings.Secure.ALLOW_MOCK_LOCATION, 0) != 0); |
| } |
| |
| @Override |
| public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { |
| |
| if (Utils.isMonkeyRunning()) { |
| return false; |
| } |
| |
| if (preference == mEnableAdb) { |
| if (mEnableAdb.isChecked()) { |
| mOkClicked = false; |
| if (mOkDialog != null) dismissDialog(); |
| mOkDialog = new AlertDialog.Builder(this).setMessage( |
| getResources().getString(R.string.adb_warning_message)) |
| .setTitle(R.string.adb_warning_title) |
| .setIcon(android.R.drawable.ic_dialog_alert) |
| .setPositiveButton(android.R.string.yes, this) |
| .setNegativeButton(android.R.string.no, this) |
| .show(); |
| mOkDialog.setOnDismissListener(this); |
| } else { |
| Settings.Secure.putInt(getContentResolver(), Settings.Secure.ADB_ENABLED, 0); |
| } |
| } else if (preference == mKeepScreenOn) { |
| Settings.System.putInt(getContentResolver(), Settings.System.STAY_ON_WHILE_PLUGGED_IN, |
| mKeepScreenOn.isChecked() ? |
| (BatteryManager.BATTERY_PLUGGED_AC | BatteryManager.BATTERY_PLUGGED_USB) : 0); |
| } else if (preference == mAllowMockLocation) { |
| Settings.Secure.putInt(getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION, |
| mAllowMockLocation.isChecked() ? 1 : 0); |
| } |
| |
| return false; |
| } |
| |
| private void dismissDialog() { |
| if (mOkDialog == null) return; |
| mOkDialog.dismiss(); |
| mOkDialog = null; |
| } |
| |
| public void onClick(DialogInterface dialog, int which) { |
| if (which == DialogInterface.BUTTON_POSITIVE) { |
| mOkClicked = true; |
| Settings.Secure.putInt(getContentResolver(), Settings.Secure.ADB_ENABLED, 1); |
| } else { |
| // Reset the toggle |
| mEnableAdb.setChecked(false); |
| } |
| } |
| |
| public void onDismiss(DialogInterface dialog) { |
| // Assuming that onClick gets called first |
| if (!mOkClicked) { |
| mEnableAdb.setChecked(false); |
| } |
| } |
| |
| @Override |
| public void onDestroy() { |
| dismissDialog(); |
| super.onDestroy(); |
| } |
| } |