1b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project/* 2b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 3b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * 4b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * you may not use this file except in compliance with the License. 6b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * You may obtain a copy of the License at 7b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * 8b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * 10b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * See the License for the specific language governing permissions and 14b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * limitations under the License. 15b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project */ 16b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 17b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectpackage com.android.phone; 18b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 19b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport android.app.AlertDialog; 20b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport android.content.Context; 21b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport android.preference.EditTextPreference; 223eecf5aa58b943e0064daeade3e541b39d6d969fGilles Debunneimport android.text.InputType; 23b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport android.text.method.DigitsKeyListener; 24b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport android.text.method.PasswordTransformationMethod; 25b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport android.util.AttributeSet; 26b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport android.view.View; 27b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport android.widget.EditText; 28b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 29b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport java.util.Map; 30b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 31b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project/** 32b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * Class similar to the com.android.settings.EditPinPreference 33b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * class, with a couple of modifications, including a different layout 34b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * for the dialog. 35b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project */ 36b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectpublic class EditPinPreference extends EditTextPreference { 37b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 38b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project private boolean shouldHideButtons; 39b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 40b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project interface OnPinEnteredListener { 41b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project void onPinEntered(EditPinPreference preference, boolean positiveResult); 42b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 43b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 44b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project private OnPinEnteredListener mPinListener; 45b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 46b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project public void setOnPinEnteredListener(OnPinEnteredListener listener) { 47b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project mPinListener = listener; 48b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 49b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 50b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project public EditPinPreference(Context context, AttributeSet attrs) { 51b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project super(context, attrs); 52b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 53b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 54b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project public EditPinPreference(Context context, AttributeSet attrs, int defStyle) { 55b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project super(context, attrs, defStyle); 56b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 57b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 58b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project /** 59b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * Overridden to setup the correct dialog layout, as well as setting up 60b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * other properties for the pin / puk entry field. 61b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project */ 62b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project @Override 63b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project protected View onCreateDialogView() { 64b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project // set the dialog layout 65b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project setDialogLayoutResource(R.layout.pref_dialog_editpin); 66b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 67b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project View dialog = super.onCreateDialogView(); 683eecf5aa58b943e0064daeade3e541b39d6d969fGilles Debunne 693eecf5aa58b943e0064daeade3e541b39d6d969fGilles Debunne getEditText().setInputType(InputType.TYPE_CLASS_NUMBER | 703eecf5aa58b943e0064daeade3e541b39d6d969fGilles Debunne InputType.TYPE_NUMBER_VARIATION_PASSWORD); 713eecf5aa58b943e0064daeade3e541b39d6d969fGilles Debunne 72b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project return dialog; 73b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 74b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 75b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project @Override 76b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project protected void onBindDialogView(View view) { 77b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project super.onBindDialogView(view); 78b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 79b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project // If the layout does not contain an edittext, hide the buttons. 80b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project shouldHideButtons = (view.findViewById(android.R.id.edit) == null); 81b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 82b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 83b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project @Override 84b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project protected void onPrepareDialogBuilder(AlertDialog.Builder builder) { 85b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project super.onPrepareDialogBuilder(builder); 86b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 87b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project // hide the buttons if we need to. 88b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project if (shouldHideButtons) { 89b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project builder.setPositiveButton(null, this); 90b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project builder.setNegativeButton(null, this); 91b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 92b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 93b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 94b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project @Override 95b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project protected void onDialogClosed(boolean positiveResult) { 96b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project super.onDialogClosed(positiveResult); 97b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project if (mPinListener != null) { 98b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project mPinListener.onPinEntered(this, positiveResult); 99b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 100b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 101b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 102b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project /** 103b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * Externally visible method to bring up the dialog to 104b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * for multi-step / multi-dialog requests (like changing 105b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * the SIM pin). 106b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project */ 107b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project public void showPinDialog() { 108b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project showDialog(null); 109b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 110b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project} 111