diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 18:28:52 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 18:28:52 -0800 |
commit | 4e14e5ccbf1ef27220419849133d482a546d5c04 (patch) | |
tree | 4b825dc642cb6eb9a060e54bf8d69288fbee4904 /src/com/android/settings/MasterClear.java | |
parent | a578a6c4ad2924236a8882e3eb794474d57ca450 (diff) | |
download | packages_apps_Settings-4e14e5ccbf1ef27220419849133d482a546d5c04.zip packages_apps_Settings-4e14e5ccbf1ef27220419849133d482a546d5c04.tar.gz packages_apps_Settings-4e14e5ccbf1ef27220419849133d482a546d5c04.tar.bz2 |
auto import from //depot/cupcake/@135843
Diffstat (limited to 'src/com/android/settings/MasterClear.java')
-rw-r--r-- | src/com/android/settings/MasterClear.java | 205 |
1 files changed, 0 insertions, 205 deletions
diff --git a/src/com/android/settings/MasterClear.java b/src/com/android/settings/MasterClear.java deleted file mode 100644 index 38ad608..0000000 --- a/src/com/android/settings/MasterClear.java +++ /dev/null @@ -1,205 +0,0 @@ -/* - * 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 com.android.internal.widget.LockPatternUtils; - -import android.app.Activity; -import android.app.AlertDialog; -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.os.ICheckinService; -import android.os.ServiceManager; -import android.os.SystemProperties; -import android.text.TextUtils; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.widget.Button; - -/** - * Confirm and execute a reset of the device to a clean "just out of the box" - * state. Multiple confirmations are required: first, a general "are you sure - * you want to do this?" prompt, followed by a keyguard pattern trace if the user - * has defined one, followed by a final strongly-worded "THIS WILL ERASE EVERYTHING - * ON THE PHONE" prompt. If at any time the phone is allowed to go to sleep, is - * locked, et cetera, then the confirmation sequence is abandoned. - */ -public class MasterClear extends Activity { - - private static final int KEYGUARD_REQUEST = 55; - - private LayoutInflater mInflater; - private LockPatternUtils mLockUtils; - - private View mInitialView; - private Button mInitiateButton; - - private View mFinalView; - private Button mFinalButton; - - /** - * The user has gone through the multiple confirmation, so now we go ahead - * and invoke the Checkin Service to reset the device to its factory-default - * state (rebooting in the process). - */ - private Button.OnClickListener mFinalClickListener = new Button.OnClickListener() { - public void onClick(View v) { - - // Those monkeys kept committing suicide, so we add this property - // to disable going through with the master clear - if (!TextUtils.isEmpty(SystemProperties.get("ro.monkey"))) { - return; - } - - ICheckinService service = - ICheckinService.Stub.asInterface(ServiceManager.getService("checkin")); - if (service != null) { - try { - // This RPC should never return - service.masterClear(); - } catch (android.os.RemoteException e) { - // Intentionally blank - there's nothing we can do here - Log.w("MasterClear", "Unable to invoke ICheckinService.masterClear()"); - } - } else { - Log.w("MasterClear", "Unable to locate ICheckinService"); - } - - /* If we reach this point, the master clear didn't happen -- the - * service might have been unregistered with the ServiceManager, - * the RPC might have thrown an exception, or for some reason - * the implementation of masterClear() may have returned instead - * of resetting the device. - */ - new AlertDialog.Builder(MasterClear.this) - .setMessage(getText(R.string.master_clear_failed)) - .setPositiveButton(getText(android.R.string.ok), null) - .show(); - } - }; - - /** - * Keyguard validation is run using the standard {@link ConfirmLockPattern} - * component as a subactivity - */ - private void runKeyguardConfirmation() { - final Intent intent = new Intent(); - intent.setClassName("com.android.settings", - "com.android.settings.ConfirmLockPattern"); - // supply header and footer text in the intent - intent.putExtra(ConfirmLockPattern.HEADER_TEXT, - getText(R.string.master_clear_gesture_prompt)); - intent.putExtra(ConfirmLockPattern.FOOTER_TEXT, - getText(R.string.master_clear_gesture_explanation)); - startActivityForResult(intent, KEYGUARD_REQUEST); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - super.onActivityResult(requestCode, resultCode, data); - - if (requestCode != KEYGUARD_REQUEST) { - return; - } - - // If the user entered a valid keyguard trace, present the final - // confirmation prompt; otherwise, go back to the initial state. - if (resultCode == Activity.RESULT_OK) { - establishFinalConfirmationState(); - } else { - establishInitialState(); - } - } - - /** - * If the user clicks to begin the reset sequence, we next require a - * keyguard confirmation if the user has currently enabled one. If there - * is no keyguard available, we simply go to the final confirmation prompt. - */ - private Button.OnClickListener mInitiateListener = new Button.OnClickListener() { - public void onClick(View v) { - if (mLockUtils.isLockPatternEnabled()) { - runKeyguardConfirmation(); - } else { - establishFinalConfirmationState(); - } - } - }; - - /** - * Configure the UI for the final confirmation interaction - */ - private void establishFinalConfirmationState() { - if (mFinalView == null) { - mFinalView = mInflater.inflate(R.layout.master_clear_final, null); - mFinalButton = - (Button) mFinalView.findViewById(R.id.execute_master_clear); - mFinalButton.setOnClickListener(mFinalClickListener); - } - - setContentView(mFinalView); - } - - /** - * In its initial state, the activity presents a button for the user to - * click in order to initiate a confirmation sequence. This method is - * called from various other points in the code to reset the activity to - * this base state. - * - * <p>Reinflating views from resources is expensive and prevents us from - * caching widget pointers, so we use a single-inflate pattern: we lazy- - * inflate each view, caching all of the widget pointers we'll need at the - * time, then simply reuse the inflated views directly whenever we need - * to change contents. - */ - private void establishInitialState() { - if (mInitialView == null) { - mInitialView = mInflater.inflate(R.layout.master_clear_primary, null); - mInitiateButton = - (Button) mInitialView.findViewById(R.id.initiate_master_clear); - mInitiateButton.setOnClickListener(mInitiateListener); - } - - setContentView(mInitialView); - } - - @Override - protected void onCreate(Bundle savedState) { - super.onCreate(savedState); - - mInitialView = null; - mFinalView = null; - mInflater = LayoutInflater.from(this); - mLockUtils = new LockPatternUtils(getContentResolver()); - - establishInitialState(); - } - - /** Abandon all progress through the confirmation sequence by returning - * to the initial view any time the activity is interrupted (e.g. by - * idle timeout). - */ - @Override - public void onPause() { - super.onPause(); - - establishInitialState(); - } - -} |