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