Teleca 2b changes.
[android/platform/packages/apps/Phone.git] / src / com / android / phone / EmergencyCallbackMode.java
1 /*
2  * Licensed under the Apache License, Version 2.0 (the "License");
3  * you may not use this file except in compliance with the License.
4  * You may obtain a copy of the License at
5  *
6  *      http://www.apache.org/licenses/LICENSE-2.0
7  *
8  * Unless required by applicable law or agreed to in writing, software
9  * distributed under the License is distributed on an "AS IS" BASIS,
10  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11  * See the License for the specific language governing permissions and
12  * limitations under the License.
13  */
14
15 package com.android.phone;
16
17
18 import android.app.Activity;
19 import android.content.Intent;
20 import android.net.Uri;
21 import android.os.AsyncResult;
22 import android.os.Bundle;
23 import android.os.Handler;
24 import android.os.Message;
25 import android.view.KeyEvent;
26 import android.view.View;
27 import android.view.View.OnClickListener;
28 import android.widget.Button;
29 import android.widget.ImageButton;
30
31 import com.android.internal.telephony.Phone;
32 import com.android.internal.telephony.PhoneFactory;
33
34 /**
35  * Phone app Emergency Callback screen.
36  */
37 public class EmergencyCallbackMode extends Activity {
38
39     /** Event for TTY mode change */
40     private static final int EVENT_EXIT_ECBM    = 100;
41
42     private Phone mPhone;
43
44     public void onCreate(Bundle savedInstanceState) {
45         super.onCreate(savedInstanceState);
46         setContentView(R.layout.ecbm_layout);
47
48         //get mPhone instance
49         mPhone = PhoneFactory.getDefaultPhone();
50
51         // Watch for button clicks.
52         ImageButton dialButton = (ImageButton)findViewById(R.id.button_dial);
53         dialButton.setOnClickListener(mDialListener);
54
55         Button exitButton = (Button)findViewById(R.id.button_exit);
56         exitButton.setOnClickListener(mExitListener);
57
58         Button okButton = (Button)findViewById(R.id.button_ok);
59         okButton.setOnClickListener(mOkListener);
60
61         //cancel ECBM notification
62         NotificationMgr.getDefault().cancelEcbmNotification();
63     }
64
65     private OnClickListener mDialListener = new OnClickListener()
66     {
67         public void onClick(View v)
68         {
69             Intent intent = new Intent(Intent.ACTION_CALL_EMERGENCY,  Uri.parse("tel:911"));
70             intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
71             startActivity(intent);
72             //create Notification
73             NotificationMgr.getDefault().notifyECBM();
74             // finish Application
75             finish();
76
77         }
78     };
79
80     private OnClickListener mExitListener = new OnClickListener()
81     {
82         public void onClick(View v) {
83             // Send ECBM exit
84             mPhone.exitEmergencyCallbackMode(Message.obtain(mExitEmergencyCallbackMode,
85                     EVENT_EXIT_ECBM));
86         }
87     };
88
89
90     // **Callback on Exit Emergency callback mode
91     private Handler mExitEmergencyCallbackMode = new Handler() {
92         @Override
93         public void handleMessage(Message msg) {
94             // query to make sure we're looking at the same data as that in the network.
95             switch (msg.what) {
96                 case EVENT_EXIT_ECBM:
97                     handleExitEmergencyCallbackModeResponse(msg);
98                     break;
99                 default:
100                     // TODO: should never reach this, may want to throw exception
101             }
102         }
103     };
104
105     /*
106      * Handle the respone of the ExitEmergencyCallbackMode request
107      */
108     private void handleExitEmergencyCallbackModeResponse(Message msg) {
109         AsyncResult ar = (AsyncResult) msg.obj;
110
111         if (ar.exception == null) {
112             // Finish Emergency Callback Mode Application
113             finish();
114         }
115     }
116
117
118     private OnClickListener mOkListener = new OnClickListener()
119     {
120         public void onClick(View v)
121         {
122             // create a notification
123             NotificationMgr.getDefault().notifyECBM();
124             // finish Application
125             finish();
126         }
127     };
128
129
130     @Override
131     public boolean onKeyDown(int keyCode, KeyEvent event) {
132         // suppress all key presses except of call key
133         switch (keyCode) {
134             case KeyEvent.KEYCODE_CALL: {
135                 Intent intent = new Intent(Intent.ACTION_CALL_EMERGENCY,  Uri.parse("tel:911"));
136                 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
137                 startActivity(intent);
138                 finish();
139             }
140         }
141         return true;
142     }
143
144 }