17d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon/*
27d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Copyright (C) 2006 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.app.Dialog;
207d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.app.StatusBarManager;
217d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.content.Context;
227d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.view.Gravity;
237d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.view.KeyEvent;
247d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.view.WindowManager;
257d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.view.Window;
267d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.os.Bundle;
277d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
287d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon/**
297d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Base class for ICC-related panels in the Phone UI.
307d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon */
317d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonpublic class IccPanel extends Dialog {
327d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    protected static final String TAG = PhoneGlobals.LOG_TAG;
337d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
347d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private StatusBarManager mStatusBarManager;
357d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
367d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    public IccPanel(Context context) {
377d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        super(context, R.style.IccPanel);
387d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    }
397d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
407d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    @Override
417d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    protected void onCreate(Bundle savedInstanceState) {
427d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        super.onCreate(savedInstanceState);
437d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        Window winP = getWindow();
447d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        winP.setType(WindowManager.LayoutParams.TYPE_PRIORITY_PHONE);
457d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        winP.setLayout(WindowManager.LayoutParams.MATCH_PARENT,
467d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                WindowManager.LayoutParams.MATCH_PARENT);
477d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        winP.setGravity(Gravity.CENTER);
487d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
497d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        // TODO: Ideally, we'd like this dialog to be visible in front of the
507d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        // keyguard, so the user will see it immediately after boot (without
517d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        // needing to enter the lock pattern or dismiss the keyguard first.)
527d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        //
537d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        // However that's not easy to do.  It's not just a matter of setting
547d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        // the FLAG_SHOW_WHEN_LOCKED and FLAG_DISMISS_KEYGUARD flags on our
557d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        // window, since we're a Dialog (not an Activity), and the framework
567d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        // won't ever let a dialog hide the keyguard (because there could
577d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        // possibly be stuff behind it that shouldn't be seen.)
587d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        //
597d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        // So for now, we'll live with the fact that the user has to enter the
607d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        // lock pattern (or dismiss the keyguard) *before* being able to type
617d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        // a SIM network unlock PIN.  That's not ideal, but still OK.
627d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        // (And eventually this will be a moot point once this UI moves
637d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        // from the phone app to the framework; see bug 1804111).
647d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
657d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        // TODO: we shouldn't need the mStatusBarManager calls here either,
667d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        // once this dialog gets moved into the framework and becomes a truly
677d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        // full-screen UI.
687d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        PhoneGlobals app = PhoneGlobals.getInstance();
697d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mStatusBarManager = (StatusBarManager) app.getSystemService(Context.STATUS_BAR_SERVICE);
707d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
717d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        requestWindowFeature(Window.FEATURE_NO_TITLE);
727d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    }
737d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
747d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    @Override
757d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    protected void onStart() {
767d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        super.onStart();
777d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mStatusBarManager.disable(StatusBarManager.DISABLE_EXPAND);
787d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    }
797d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
807d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    @Override
817d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    public void onStop() {
827d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        super.onStop();
837d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mStatusBarManager.disable(StatusBarManager.DISABLE_NONE);
847d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    }
857d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
867d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    public boolean onKeyDown(int keyCode, KeyEvent event) {
877d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        if (keyCode == KeyEvent.KEYCODE_BACK) {
887d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            return true;
897d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        }
907d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
917d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        return super.onKeyDown(keyCode, event);
927d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    }
937d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon}
94