17d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon/* 27d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Copyright (C) 2008 The Android Open Source Project 37d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * 47d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Licensed under the Apache License, Version 2.0 (the "License"); 57d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * you may not use this file except in compliance with the License. 67d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * You may obtain a copy of the License at 77d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * 87d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * http://www.apache.org/licenses/LICENSE-2.0 97d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * 107d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Unless required by applicable law or agreed to in writing, software 117d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * distributed under the License is distributed on an "AS IS" BASIS, 127d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * See the License for the specific language governing permissions and 147d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * limitations under the License. 157d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon */ 167d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 177d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonpackage com.android.phone; 187d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 197d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.content.Context; 207d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.os.AsyncResult; 217d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.os.Bundle; 227d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.os.Handler; 237d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.os.Message; 247d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.text.Editable; 257d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.text.Spannable; 267d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.text.TextUtils; 277d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.text.TextWatcher; 287d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.text.method.DialerKeyListener; 297d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.util.Log; 307d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.view.KeyEvent; 317d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.view.View; 327d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.widget.Button; 337d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.widget.EditText; 347d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.widget.LinearLayout; 357d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.widget.TextView; 367d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 377d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport com.android.internal.telephony.Phone; 387d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 397d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon/** 407d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * "SIM network unlock" PIN entry screen. 417d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * 427d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * @see PhoneGlobals.EVENT_SIM_NETWORK_LOCKED 437d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * 447d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * TODO: This UI should be part of the lock screen, not the 457d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * phone app (see bug 1804111). 467d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon */ 477d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonpublic class IccNetworkDepersonalizationPanel extends IccPanel { 487d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 497d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon //debug constants 507d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private static final boolean DBG = false; 517d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 527d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon //events 537d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private static final int EVENT_ICC_NTWRK_DEPERSONALIZATION_RESULT = 100; 547d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 557d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private Phone mPhone; 567d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 577d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon //UI elements 587d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private EditText mPinEntry; 597d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private LinearLayout mEntryPanel; 607d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private LinearLayout mStatusPanel; 617d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private TextView mStatusText; 627d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 637d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private Button mUnlockButton; 647d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private Button mDismissButton; 657d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 667d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon //private textwatcher to control text entry. 677d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private TextWatcher mPinEntryWatcher = new TextWatcher() { 687d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon public void beforeTextChanged(CharSequence buffer, int start, int olen, int nlen) { 697d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 707d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 717d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon public void onTextChanged(CharSequence buffer, int start, int olen, int nlen) { 727d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 737d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 747d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon public void afterTextChanged(Editable buffer) { 757d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (SpecialCharSequenceMgr.handleChars( 767d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon getContext(), buffer.toString())) { 777d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mPinEntry.getText().clear(); 787d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 797d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 807d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon }; 817d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 827d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon //handler for unlock function results 837d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private Handler mHandler = new Handler() { 847d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon public void handleMessage(Message msg) { 857d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (msg.what == EVENT_ICC_NTWRK_DEPERSONALIZATION_RESULT) { 867d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon AsyncResult res = (AsyncResult) msg.obj; 877d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (res.exception != null) { 887d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (DBG) log("network depersonalization request failure."); 897d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon indicateError(); 907d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon postDelayed(new Runnable() { 917d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon public void run() { 927d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon hideAlert(); 937d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mPinEntry.getText().clear(); 947d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mPinEntry.requestFocus(); 957d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 967d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon }, 3000); 977d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } else { 987d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (DBG) log("network depersonalization success."); 997d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon indicateSuccess(); 1007d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon postDelayed(new Runnable() { 1017d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon public void run() { 1027d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon dismiss(); 1037d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 1047d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon }, 3000); 1057d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 1067d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 1077d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 1087d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon }; 1097d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1107d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon //constructor 1117d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon public IccNetworkDepersonalizationPanel(Context context) { 1127d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon super(context); 1137d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 1147d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1157d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon @Override 1167d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon protected void onCreate(Bundle icicle) { 1177d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon super.onCreate(icicle); 1187d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon setContentView(R.layout.sim_ndp); 1197d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1207d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // PIN entry text field 1217d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mPinEntry = (EditText) findViewById(R.id.pin_entry); 1227d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mPinEntry.setKeyListener(DialerKeyListener.getInstance()); 1237d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mPinEntry.setOnClickListener(mUnlockListener); 1247d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1257d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // Attach the textwatcher 1267d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon CharSequence text = mPinEntry.getText(); 1277d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon Spannable span = (Spannable) text; 1287d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon span.setSpan(mPinEntryWatcher, 0, text.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE); 1297d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1307d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mEntryPanel = (LinearLayout) findViewById(R.id.entry_panel); 1317d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1327d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mUnlockButton = (Button) findViewById(R.id.ndp_unlock); 1337d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mUnlockButton.setOnClickListener(mUnlockListener); 1347d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1357d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // The "Dismiss" button is present in some (but not all) products, 1367d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // based on the "sim_network_unlock_allow_dismiss" resource. 1377d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mDismissButton = (Button) findViewById(R.id.ndp_dismiss); 1387d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (getContext().getResources().getBoolean(R.bool.sim_network_unlock_allow_dismiss)) { 1397d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (DBG) log("Enabling 'Dismiss' button..."); 1407d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mDismissButton.setVisibility(View.VISIBLE); 1417d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mDismissButton.setOnClickListener(mDismissListener); 1427d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } else { 1437d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (DBG) log("Removing 'Dismiss' button..."); 1447d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mDismissButton.setVisibility(View.GONE); 1457d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 1467d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1477d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon //status panel is used since we're having problems with the alert dialog. 1487d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mStatusPanel = (LinearLayout) findViewById(R.id.status_panel); 1497d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mStatusText = (TextView) findViewById(R.id.status_text); 1507d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1517d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mPhone = PhoneGlobals.getPhone(); 1527d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 1537d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1547d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon @Override 1557d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon protected void onStart() { 1567d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon super.onStart(); 1577d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 1587d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1597d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon //Mirrors IccPinUnlockPanel.onKeyDown(). 1607d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon public boolean onKeyDown(int keyCode, KeyEvent event) { 1617d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (keyCode == KeyEvent.KEYCODE_BACK) { 1627d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon return true; 1637d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 1647d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1657d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon return super.onKeyDown(keyCode, event); 1667d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 1677d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1687d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon View.OnClickListener mUnlockListener = new View.OnClickListener() { 1697d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon public void onClick(View v) { 1707d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon String pin = mPinEntry.getText().toString(); 1717d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1727d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (TextUtils.isEmpty(pin)) { 1737d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon return; 1747d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 1757d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1767d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (DBG) log("requesting network depersonalization with code " + pin); 1777d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mPhone.getIccCard().supplyNetworkDepersonalization(pin, 1787d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon Message.obtain(mHandler, EVENT_ICC_NTWRK_DEPERSONALIZATION_RESULT)); 1797d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon indicateBusy(); 1807d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 1817d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon }; 1827d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1837d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private void indicateBusy() { 1847d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mStatusText.setText(R.string.requesting_unlock); 1857d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mEntryPanel.setVisibility(View.GONE); 1867d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mStatusPanel.setVisibility(View.VISIBLE); 1877d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 1887d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1897d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private void indicateError() { 1907d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mStatusText.setText(R.string.unlock_failed); 1917d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mEntryPanel.setVisibility(View.GONE); 1927d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mStatusPanel.setVisibility(View.VISIBLE); 1937d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 1947d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1957d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private void indicateSuccess() { 1967d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mStatusText.setText(R.string.unlock_success); 1977d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mEntryPanel.setVisibility(View.GONE); 1987d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mStatusPanel.setVisibility(View.VISIBLE); 1997d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 2007d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 2017d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private void hideAlert() { 2027d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mEntryPanel.setVisibility(View.VISIBLE); 2037d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mStatusPanel.setVisibility(View.GONE); 2047d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 2057d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 2067d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon View.OnClickListener mDismissListener = new View.OnClickListener() { 2077d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon public void onClick(View v) { 2087d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (DBG) log("mDismissListener: skipping depersonalization..."); 2097d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon dismiss(); 2107d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 2117d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon }; 2127d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 2137d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private void log(String msg) { 2147d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon Log.v(TAG, "[IccNetworkDepersonalizationPanel] " + msg); 2157d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 2167d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon} 217