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