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