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
199d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Projectimport android.app.Activity;
203350188abe8b3629ec4b291e3e2aab0edce17810Sanket Padaweimport android.app.AlertDialog;
218dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintalaimport android.content.BroadcastReceiver;
228dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintalaimport android.content.Context;
239d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Projectimport android.content.Intent;
248dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintalaimport android.content.IntentFilter;
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;
293350188abe8b3629ec4b291e3e2aab0edce17810Sanket Padaweimport android.view.LayoutInflater;
30075340e9d224c3e6aa57cc50ccc5adfeb1cdfe45Li Qiangimport android.view.MotionEvent;
319d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Projectimport android.view.View;
329d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Projectimport android.widget.ImageView;
339d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Projectimport android.widget.TextView;
34e68857da85f6fb0964da9d58a7cbfcc0348065c6Wink Savilleimport com.android.internal.telephony.cat.CatLog;
35d41f1d98d7bf42e9e867819593ad79f685604796Alex Yakavenkaimport com.android.internal.telephony.cat.TextMessage;
368dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintalaimport com.android.internal.telephony.cat.CatLog;
379d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project
389d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project/**
398dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala * Activity used to display tone dialog.
4079085fcc5b4e54cc374e8720644ce4c1dc0004beWink Saville *
419d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project */
429d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Projectpublic class ToneDialog extends Activity {
439d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project    TextMessage toneMsg = null;
44e68857da85f6fb0964da9d58a7cbfcc0348065c6Wink Saville    int mSlotId = -1;
459d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project
46e68857da85f6fb0964da9d58a7cbfcc0348065c6Wink Saville    private static final String LOG_TAG = new Object(){}.getClass().getEnclosingClass().getName();
47e68857da85f6fb0964da9d58a7cbfcc0348065c6Wink Saville
489d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project    @Override
499d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project    protected void onCreate(Bundle icicle) {
509d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project        super.onCreate(icicle);
519d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project
52e68857da85f6fb0964da9d58a7cbfcc0348065c6Wink Saville        CatLog.d(LOG_TAG, "onCreate");
53a8e4f50aead658df817e0c0434fc5fb261701208Wink Saville        initFromIntent(getIntent());
548dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala        // Register receiver
558dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala        IntentFilter filter = new IntentFilter();
568dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala        filter.addAction(StkAppService.FINISH_TONE_ACTIVITY_ACTION);
578dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala        registerReceiver(mFinishActivityReceiver, filter);
589d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project
593350188abe8b3629ec4b291e3e2aab0edce17810Sanket Padawe        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
603350188abe8b3629ec4b291e3e2aab0edce17810Sanket Padawe        LayoutInflater inflater = this.getLayoutInflater();
613350188abe8b3629ec4b291e3e2aab0edce17810Sanket Padawe        View dialogView = inflater.inflate(R.layout.stk_tone_dialog, null);
623350188abe8b3629ec4b291e3e2aab0edce17810Sanket Padawe        alertDialogBuilder.setView(dialogView);
639d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project
643350188abe8b3629ec4b291e3e2aab0edce17810Sanket Padawe        TextView tv = (TextView) dialogView.findViewById(R.id.message);
653350188abe8b3629ec4b291e3e2aab0edce17810Sanket Padawe        ImageView iv = (ImageView) dialogView.findViewById(R.id.icon);
669d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project
679d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project        // set text and icon
68e68857da85f6fb0964da9d58a7cbfcc0348065c6Wink Saville        if ((null == toneMsg) || (null == toneMsg.text) || (toneMsg.text.equals(""))) {
69e68857da85f6fb0964da9d58a7cbfcc0348065c6Wink Saville            CatLog.d(LOG_TAG, "onCreate - null tone text");
70e68857da85f6fb0964da9d58a7cbfcc0348065c6Wink Saville        } else {
71e68857da85f6fb0964da9d58a7cbfcc0348065c6Wink Saville            tv.setText(toneMsg.text);
72e68857da85f6fb0964da9d58a7cbfcc0348065c6Wink Saville        }
73e68857da85f6fb0964da9d58a7cbfcc0348065c6Wink Saville
749d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project        if (toneMsg.icon == null) {
759d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project            iv.setImageResource(com.android.internal.R.drawable.ic_volume);
769d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project        } else {
779d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project            iv.setImageBitmap(toneMsg.icon);
789d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project        }
799d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project
80b97605d5a7b965e00ab4477232546f7ac3520f92Teruaki Minami        if (toneMsg.iconSelfExplanatory && toneMsg.icon != null) {
81b97605d5a7b965e00ab4477232546f7ac3520f92Teruaki Minami            tv.setVisibility(View.GONE);
82b97605d5a7b965e00ab4477232546f7ac3520f92Teruaki Minami        }
839d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project    }
849d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project
859d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project    @Override
869d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project    protected void onDestroy() {
87e68857da85f6fb0964da9d58a7cbfcc0348065c6Wink Saville        CatLog.d(LOG_TAG, "onDestroy");
888dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala        // Unregister receiver
898dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala        unregisterReceiver(mFinishActivityReceiver);
908dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala        super.onDestroy();
919d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project    }
9279085fcc5b4e54cc374e8720644ce4c1dc0004beWink Saville
939d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project    @Override
949d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project    public boolean onKeyDown(int keyCode, KeyEvent event) {
959d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project        switch (keyCode) {
969d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project        case KeyEvent.KEYCODE_BACK:
978dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala            sendStopTone();
989d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project            finish();
999d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project            break;
1009d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project        }
1019d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project        return false;
1029d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project    }
1039d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project
104075340e9d224c3e6aa57cc50ccc5adfeb1cdfe45Li Qiang    @Override
105075340e9d224c3e6aa57cc50ccc5adfeb1cdfe45Li Qiang    public boolean onTouchEvent(MotionEvent event) {
106075340e9d224c3e6aa57cc50ccc5adfeb1cdfe45Li Qiang        switch (event.getAction()) {
107075340e9d224c3e6aa57cc50ccc5adfeb1cdfe45Li Qiang        case MotionEvent.ACTION_DOWN:
1088dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala            sendStopTone();
109075340e9d224c3e6aa57cc50ccc5adfeb1cdfe45Li Qiang            finish();
110075340e9d224c3e6aa57cc50ccc5adfeb1cdfe45Li Qiang            return true;
111075340e9d224c3e6aa57cc50ccc5adfeb1cdfe45Li Qiang        }
112075340e9d224c3e6aa57cc50ccc5adfeb1cdfe45Li Qiang        return super.onTouchEvent(event);
113075340e9d224c3e6aa57cc50ccc5adfeb1cdfe45Li Qiang    }
114075340e9d224c3e6aa57cc50ccc5adfeb1cdfe45Li Qiang
1158dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala    private BroadcastReceiver mFinishActivityReceiver = new BroadcastReceiver() {
1168dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala        @Override
1178dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala        public void onReceive(Context context, Intent intent) {
1188dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala            // Intent received from StkAppService to finish ToneDialog activity,
1198dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala            // after finishing off playing the tone.
1208dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala            if (intent.getAction().equals(StkAppService.FINISH_TONE_ACTIVITY_ACTION)) {
1218dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala                CatLog.d(this, "Finishing Tone dialog activity");
1228dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala                finish();
1238dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala            }
1248dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala        }
1258dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala    };
1268dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala
1279d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project    private void initFromIntent(Intent intent) {
1289d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project        if (intent == null) {
1299d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project            finish();
1309d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project        }
1319d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project        toneMsg = intent.getParcelableExtra("TEXT");
132e68857da85f6fb0964da9d58a7cbfcc0348065c6Wink Saville        mSlotId = intent.getIntExtra(StkAppService.SLOT_ID, -1);
1339d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project    }
1349d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project
1358dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala    // Send stop playing tone to StkAppService, when user presses back key.
1368dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala    private void sendStopTone() {
1379d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project        Bundle args = new Bundle();
1388dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala        args.putInt(StkAppService.OPCODE, StkAppService.OP_STOP_TONE_USER);
139e68857da85f6fb0964da9d58a7cbfcc0348065c6Wink Saville        args.putInt(StkAppService.SLOT_ID, mSlotId);
1409d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project        startService(new Intent(this, StkAppService.class).putExtras(args));
1419d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project    }
1429d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project}
143