19d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project/* 29d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 39d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project * 49d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project * you may not use this file except in compliance with the License. 69d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project * You may obtain a copy of the License at 79d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project * 89d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project * 109d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project * See the License for the specific language governing permissions and 149d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project * limitations under the License. 159d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project */ 169d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 179d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Projectpackage com.android.stk; 189d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 19cfe4d7f06d8e023ddc153cd042682957dfd85de2Christopher Posselwhiteimport com.android.internal.telephony.cat.CatLog; 20d41f1d98d7bf42e9e867819593ad79f685604796Alex Yakavenkaimport com.android.internal.telephony.cat.TextMessage; 219d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 229d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Projectimport android.app.Activity; 239d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Projectimport android.content.Intent; 249d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Projectimport android.graphics.drawable.BitmapDrawable; 259d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Projectimport android.os.Bundle; 269d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Projectimport android.os.Handler; 279d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Projectimport android.os.Message; 289d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Projectimport android.view.KeyEvent; 299d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Projectimport android.view.View; 309d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Projectimport android.view.Window; 319d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Projectimport android.widget.Button; 329d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Projectimport android.widget.TextView; 339d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 349d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project/** 359d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project * AlretDialog used for DISPLAY TEXT commands. 3679085fcc5b4e54cc374e8720644ce4c1dc0004beWink Saville * 379d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project */ 389d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Projectpublic class StkDialogActivity extends Activity implements View.OnClickListener { 399d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project // members 409d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project TextMessage mTextMsg; 419d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 42ef243a24eb9b919a6c315bffb53fcb557195489aJohannes Carlsson private boolean mIsResponseSent = false; 439d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project Handler mTimeoutHandler = new Handler() { 449d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project @Override 459d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project public void handleMessage(Message msg) { 469d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project switch(msg.what) { 479d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project case MSG_ID_TIMEOUT: 489d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project sendResponse(StkAppService.RES_ID_TIMEOUT); 499d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project finish(); 509d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project break; 519d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project } 529d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project } 539d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project }; 549d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 559d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project //keys) for saving the state of the dialog in the icicle 569d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project private static final String TEXT = "text"; 579d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 5879085fcc5b4e54cc374e8720644ce4c1dc0004beWink Saville // message id for time out 599d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project private static final int MSG_ID_TIMEOUT = 1; 609d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 619d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project // buttons id 629d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project public static final int OK_BUTTON = R.id.button_ok; 639d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project public static final int CANCEL_BUTTON = R.id.button_cancel; 649d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 659d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project @Override 669d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project protected void onCreate(Bundle icicle) { 679d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project super.onCreate(icicle); 689d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 699d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project initFromIntent(getIntent()); 709d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project if (mTextMsg == null) { 719d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project finish(); 729d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project return; 739d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project } 749d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 759d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project requestWindowFeature(Window.FEATURE_LEFT_ICON); 769d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project Window window = getWindow(); 779d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 789d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project setContentView(R.layout.stk_msg_dialog); 799d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project TextView mMessageView = (TextView) window 809d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project .findViewById(R.id.dialog_message); 819d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 829d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project Button okButton = (Button) findViewById(R.id.button_ok); 839d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project Button cancelButton = (Button) findViewById(R.id.button_cancel); 849d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 859d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project okButton.setOnClickListener(this); 869d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project cancelButton.setOnClickListener(this); 879d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 889d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project setTitle(mTextMsg.title); 899d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project if (!(mTextMsg.iconSelfExplanatory && mTextMsg.icon != null)) { 9079085fcc5b4e54cc374e8720644ce4c1dc0004beWink Saville mMessageView.setText(mTextMsg.text); 919d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project } 929d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 939d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project if (mTextMsg.icon == null) { 949d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project window.setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, 959d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project com.android.internal.R.drawable.stat_notify_sim_toolkit); 969d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project } else { 979d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project window.setFeatureDrawable(Window.FEATURE_LEFT_ICON, 989d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project new BitmapDrawable(mTextMsg.icon)); 999d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project } 1009d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project } 1019d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 1029d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project public void onClick(View v) { 1039d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project String input = null; 1049d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 1059d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project switch (v.getId()) { 1069d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project case OK_BUTTON: 1079d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project sendResponse(StkAppService.RES_ID_CONFIRM, true); 1089d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project finish(); 1099d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project break; 1109d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project case CANCEL_BUTTON: 1119d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project sendResponse(StkAppService.RES_ID_CONFIRM, false); 1129d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project finish(); 1139d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project break; 1149d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project } 1159d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project } 1169d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 1179d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project @Override 1189d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project public boolean onKeyDown(int keyCode, KeyEvent event) { 1199d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project switch (keyCode) { 1209d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project case KeyEvent.KEYCODE_BACK: 1219d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project sendResponse(StkAppService.RES_ID_BACKWARD); 1229d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project finish(); 1239d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project break; 1249d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project } 1259d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project return false; 1269d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project } 1279d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 1289d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project @Override 1299d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project public void onResume() { 1309d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project super.onResume(); 131cfe4d7f06d8e023ddc153cd042682957dfd85de2Christopher Posselwhite 132cfe4d7f06d8e023ddc153cd042682957dfd85de2Christopher Posselwhite /* 133cfe4d7f06d8e023ddc153cd042682957dfd85de2Christopher Posselwhite * The user should be shown the message forever or until some high 134cfe4d7f06d8e023ddc153cd042682957dfd85de2Christopher Posselwhite * priority event occurs (such as incoming call, MMI code execution 135cfe4d7f06d8e023ddc153cd042682957dfd85de2Christopher Posselwhite * etc as mentioned in ETSI 102.223, 6.4.1). 136cfe4d7f06d8e023ddc153cd042682957dfd85de2Christopher Posselwhite * 137cfe4d7f06d8e023ddc153cd042682957dfd85de2Christopher Posselwhite * Since mTextMsg.responseNeeded is false (because the response has 138cfe4d7f06d8e023ddc153cd042682957dfd85de2Christopher Posselwhite * already been sent) and duration of the dialog is zero and userClear 139cfe4d7f06d8e023ddc153cd042682957dfd85de2Christopher Posselwhite * is true, don't set the timeout. 140cfe4d7f06d8e023ddc153cd042682957dfd85de2Christopher Posselwhite */ 141cfe4d7f06d8e023ddc153cd042682957dfd85de2Christopher Posselwhite if (!mTextMsg.responseNeeded && 142cfe4d7f06d8e023ddc153cd042682957dfd85de2Christopher Posselwhite StkApp.calculateDurationInMilis(mTextMsg.duration) == 0 && 143cfe4d7f06d8e023ddc153cd042682957dfd85de2Christopher Posselwhite mTextMsg.userClear) { 144cfe4d7f06d8e023ddc153cd042682957dfd85de2Christopher Posselwhite CatLog.d(this, "User should clear text..show message forever"); 145cfe4d7f06d8e023ddc153cd042682957dfd85de2Christopher Posselwhite return; 146cfe4d7f06d8e023ddc153cd042682957dfd85de2Christopher Posselwhite } 147cfe4d7f06d8e023ddc153cd042682957dfd85de2Christopher Posselwhite 1481772c049facb06de0ca5d3b5cce870848c008804Christopher.Posselwhite startTimeOut(mTextMsg.userClear); 1499d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project } 1509d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 1519d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project @Override 1529d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project public void onPause() { 1539d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project super.onPause(); 1549d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 1559d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project cancelTimeOut(); 1569d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project } 1579d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 1589d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project @Override 159ef243a24eb9b919a6c315bffb53fcb557195489aJohannes Carlsson protected void onStart() { 160ef243a24eb9b919a6c315bffb53fcb557195489aJohannes Carlsson super.onStart(); 161ef243a24eb9b919a6c315bffb53fcb557195489aJohannes Carlsson mIsResponseSent = false; 162ef243a24eb9b919a6c315bffb53fcb557195489aJohannes Carlsson } 163ef243a24eb9b919a6c315bffb53fcb557195489aJohannes Carlsson 164ef243a24eb9b919a6c315bffb53fcb557195489aJohannes Carlsson @Override 165ef243a24eb9b919a6c315bffb53fcb557195489aJohannes Carlsson public void onStop() { 166ef243a24eb9b919a6c315bffb53fcb557195489aJohannes Carlsson super.onStop(); 167ef243a24eb9b919a6c315bffb53fcb557195489aJohannes Carlsson if (!mIsResponseSent) { 168ef243a24eb9b919a6c315bffb53fcb557195489aJohannes Carlsson sendResponse(StkAppService.RES_ID_TIMEOUT); 169ef243a24eb9b919a6c315bffb53fcb557195489aJohannes Carlsson } 170ef243a24eb9b919a6c315bffb53fcb557195489aJohannes Carlsson } 171ef243a24eb9b919a6c315bffb53fcb557195489aJohannes Carlsson 172ef243a24eb9b919a6c315bffb53fcb557195489aJohannes Carlsson @Override 1739d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project public void onSaveInstanceState(Bundle outState) { 1749d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project super.onSaveInstanceState(outState); 1759d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 1769d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project outState.putParcelable(TEXT, mTextMsg); 1779d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project } 1789d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 1799d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project @Override 1809d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project public void onRestoreInstanceState(Bundle savedInstanceState) { 1819d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project super.onRestoreInstanceState(savedInstanceState); 18279085fcc5b4e54cc374e8720644ce4c1dc0004beWink Saville 1839d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project mTextMsg = savedInstanceState.getParcelable(TEXT); 1849d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project } 1859d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 1869d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project private void sendResponse(int resId, boolean confirmed) { 1879d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project Bundle args = new Bundle(); 1889d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project args.putInt(StkAppService.OPCODE, StkAppService.OP_RESPONSE); 1899d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project args.putInt(StkAppService.RES_ID, resId); 1909d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project args.putBoolean(StkAppService.CONFIRMATION, confirmed); 1919d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project startService(new Intent(this, StkAppService.class).putExtras(args)); 192ef243a24eb9b919a6c315bffb53fcb557195489aJohannes Carlsson mIsResponseSent = true; 1939d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project } 1949d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 1959d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project private void sendResponse(int resId) { 1969d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project sendResponse(resId, true); 1979d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project } 1989d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 1999d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project private void initFromIntent(Intent intent) { 2009d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 2019d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project if (intent != null) { 2029d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project mTextMsg = intent.getParcelableExtra("TEXT"); 2039d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project } else { 2049d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project finish(); 2059d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project } 2069d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project } 2079d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 2089d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project private void cancelTimeOut() { 2099d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project mTimeoutHandler.removeMessages(MSG_ID_TIMEOUT); 2109d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project } 2119d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 2121772c049facb06de0ca5d3b5cce870848c008804Christopher.Posselwhite private void startTimeOut(boolean waitForUserToClear) { 2139d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project // Reset timeout. 2149d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project cancelTimeOut(); 2159d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project int dialogDuration = StkApp.calculateDurationInMilis(mTextMsg.duration); 2161772c049facb06de0ca5d3b5cce870848c008804Christopher.Posselwhite // If duration is specified, this has priority. If not, set timeout 2171772c049facb06de0ca5d3b5cce870848c008804Christopher.Posselwhite // according to condition given by the card. 2189d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project if (dialogDuration == 0) { 2191772c049facb06de0ca5d3b5cce870848c008804Christopher.Posselwhite if (waitForUserToClear) { 2201772c049facb06de0ca5d3b5cce870848c008804Christopher.Posselwhite dialogDuration = StkApp.DISP_TEXT_WAIT_FOR_USER_TIMEOUT; 2211772c049facb06de0ca5d3b5cce870848c008804Christopher.Posselwhite } else { 2221772c049facb06de0ca5d3b5cce870848c008804Christopher.Posselwhite dialogDuration = StkApp.DISP_TEXT_CLEAR_AFTER_DELAY_TIMEOUT; 2231772c049facb06de0ca5d3b5cce870848c008804Christopher.Posselwhite } 2249d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project } 2259d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project mTimeoutHandler.sendMessageDelayed(mTimeoutHandler 2269d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project .obtainMessage(MSG_ID_TIMEOUT), dialogDuration); 2279d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project } 2289d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project} 229