AnswerPresenter.java revision e286f91abd12dee037de19c3836d8002e450a9c9
17df3ac3f95c9d23396e1319beb6ca34435d965f5Chiao Cheng/*
27df3ac3f95c9d23396e1319beb6ca34435d965f5Chiao Cheng * Copyright (C) 2013 The Android Open Source Project
37df3ac3f95c9d23396e1319beb6ca34435d965f5Chiao Cheng *
47df3ac3f95c9d23396e1319beb6ca34435d965f5Chiao Cheng * Licensed under the Apache License, Version 2.0 (the "License");
57df3ac3f95c9d23396e1319beb6ca34435d965f5Chiao Cheng * you may not use this file except in compliance with the License.
67df3ac3f95c9d23396e1319beb6ca34435d965f5Chiao Cheng * You may obtain a copy of the License at
77df3ac3f95c9d23396e1319beb6ca34435d965f5Chiao Cheng *
87df3ac3f95c9d23396e1319beb6ca34435d965f5Chiao Cheng *      http://www.apache.org/licenses/LICENSE-2.0
97df3ac3f95c9d23396e1319beb6ca34435d965f5Chiao Cheng *
107df3ac3f95c9d23396e1319beb6ca34435d965f5Chiao Cheng * Unless required by applicable law or agreed to in writing, software
117df3ac3f95c9d23396e1319beb6ca34435d965f5Chiao Cheng * distributed under the License is distributed on an "AS IS" BASIS,
127df3ac3f95c9d23396e1319beb6ca34435d965f5Chiao Cheng * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137df3ac3f95c9d23396e1319beb6ca34435d965f5Chiao Cheng * See the License for the specific language governing permissions and
147df3ac3f95c9d23396e1319beb6ca34435d965f5Chiao Cheng * limitations under the License
157df3ac3f95c9d23396e1319beb6ca34435d965f5Chiao Cheng */
167df3ac3f95c9d23396e1319beb6ca34435d965f5Chiao Cheng
17dba5a7df121b4904b94e14439cca8996d843c1c9Chiao Chengpackage com.android.incallui;
18dba5a7df121b4904b94e14439cca8996d843c1c9Chiao Cheng
19671b221ccadea34fb9327ef5342b26419eb5ca99Santos Cordonimport com.android.incallui.InCallPresenter.InCallState;
20671b221ccadea34fb9327ef5342b26419eb5ca99Santos Cordonimport com.android.incallui.InCallPresenter.InCallStateListener;
21671b221ccadea34fb9327ef5342b26419eb5ca99Santos Cordonimport com.android.services.telephony.common.Call;
22671b221ccadea34fb9327ef5342b26419eb5ca99Santos Cordon
2310196fd2f7cc922693e2a7c6c932725a52157943Christine Chenimport java.util.ArrayList;
2410196fd2f7cc922693e2a7c6c932725a52157943Christine Chen
25dba5a7df121b4904b94e14439cca8996d843c1c9Chiao Cheng/**
26150a5c58c67f230c8fd7293b180bbf50aa761480Santos Cordon * Presenter for the Incoming call widget.
27dba5a7df121b4904b94e14439cca8996d843c1c9Chiao Cheng */
28671b221ccadea34fb9327ef5342b26419eb5ca99Santos Cordonpublic class AnswerPresenter extends Presenter<AnswerPresenter.AnswerUi>
29671b221ccadea34fb9327ef5342b26419eb5ca99Santos Cordon        implements InCallStateListener {
30671b221ccadea34fb9327ef5342b26419eb5ca99Santos Cordon
31671b221ccadea34fb9327ef5342b26419eb5ca99Santos Cordon    private Call mCall;
3210196fd2f7cc922693e2a7c6c932725a52157943Christine Chen    private ArrayList<String> mTextResponses;
33dba5a7df121b4904b94e14439cca8996d843c1c9Chiao Cheng
34150a5c58c67f230c8fd7293b180bbf50aa761480Santos Cordon    @Override
35150a5c58c67f230c8fd7293b180bbf50aa761480Santos Cordon    public void onUiReady(AnswerUi ui) {
36150a5c58c67f230c8fd7293b180bbf50aa761480Santos Cordon        super.onUiReady(ui);
37dba5a7df121b4904b94e14439cca8996d843c1c9Chiao Cheng    }
38dba5a7df121b4904b94e14439cca8996d843c1c9Chiao Cheng
39671b221ccadea34fb9327ef5342b26419eb5ca99Santos Cordon    @Override
40671b221ccadea34fb9327ef5342b26419eb5ca99Santos Cordon    public void onStateChange(InCallState state, CallList callList) {
41671b221ccadea34fb9327ef5342b26419eb5ca99Santos Cordon        if (state == InCallState.INCOMING) {
42671b221ccadea34fb9327ef5342b26419eb5ca99Santos Cordon            getUi().showAnswerUi(true);
43671b221ccadea34fb9327ef5342b26419eb5ca99Santos Cordon            mCall = callList.getIncomingCall();
4410196fd2f7cc922693e2a7c6c932725a52157943Christine Chen            mTextResponses = callList.getTextResponses(mCall);
4510196fd2f7cc922693e2a7c6c932725a52157943Christine Chen            if (mTextResponses != null) {
4610196fd2f7cc922693e2a7c6c932725a52157943Christine Chen                getUi().showTextButton(true);
4710196fd2f7cc922693e2a7c6c932725a52157943Christine Chen                getUi().configureMessageDialogue(mTextResponses);
4810196fd2f7cc922693e2a7c6c932725a52157943Christine Chen            } else {
4910196fd2f7cc922693e2a7c6c932725a52157943Christine Chen                getUi().showTextButton(false);
5010196fd2f7cc922693e2a7c6c932725a52157943Christine Chen            }
519f22c7496af167f2eada26aa998364d4cf03a619Santos Cordon            Logger.d(this, "Showing incoming with: " + mCall);
52671b221ccadea34fb9327ef5342b26419eb5ca99Santos Cordon        } else {
53671b221ccadea34fb9327ef5342b26419eb5ca99Santos Cordon            getUi().showAnswerUi(false);
54671b221ccadea34fb9327ef5342b26419eb5ca99Santos Cordon            mCall = null;
55671b221ccadea34fb9327ef5342b26419eb5ca99Santos Cordon        }
56671b221ccadea34fb9327ef5342b26419eb5ca99Santos Cordon    }
57671b221ccadea34fb9327ef5342b26419eb5ca99Santos Cordon
58dba5a7df121b4904b94e14439cca8996d843c1c9Chiao Cheng    public void onAnswer() {
59e286f91abd12dee037de19c3836d8002e450a9c9Santos Cordon        if (mCall == null) {
60e286f91abd12dee037de19c3836d8002e450a9c9Santos Cordon            return;
61e286f91abd12dee037de19c3836d8002e450a9c9Santos Cordon        }
62e286f91abd12dee037de19c3836d8002e450a9c9Santos Cordon
630746bb90ef10685562e95ebf55f8ad1acf6ce816Santos Cordon        Logger.d(this, "onAnswer " + mCall.getCallId());
64671b221ccadea34fb9327ef5342b26419eb5ca99Santos Cordon
65671b221ccadea34fb9327ef5342b26419eb5ca99Santos Cordon        CallCommandClient.getInstance().answerCall(mCall.getCallId());
66dba5a7df121b4904b94e14439cca8996d843c1c9Chiao Cheng    }
67dba5a7df121b4904b94e14439cca8996d843c1c9Chiao Cheng
68dba5a7df121b4904b94e14439cca8996d843c1c9Chiao Cheng    public void onDecline() {
69e286f91abd12dee037de19c3836d8002e450a9c9Santos Cordon        if (mCall == null) {
70e286f91abd12dee037de19c3836d8002e450a9c9Santos Cordon            return;
71e286f91abd12dee037de19c3836d8002e450a9c9Santos Cordon        }
72e286f91abd12dee037de19c3836d8002e450a9c9Santos Cordon
730746bb90ef10685562e95ebf55f8ad1acf6ce816Santos Cordon        Logger.d(this, "onDecline " + mCall.getCallId());
74671b221ccadea34fb9327ef5342b26419eb5ca99Santos Cordon
7510196fd2f7cc922693e2a7c6c932725a52157943Christine Chen        CallCommandClient.getInstance().rejectCall(mCall.getCallId(), false, null);
76dba5a7df121b4904b94e14439cca8996d843c1c9Chiao Cheng    }
77dba5a7df121b4904b94e14439cca8996d843c1c9Chiao Cheng
78dba5a7df121b4904b94e14439cca8996d843c1c9Chiao Cheng    public void onText() {
7910196fd2f7cc922693e2a7c6c932725a52157943Christine Chen        getUi().showMessageDialogue();
8010196fd2f7cc922693e2a7c6c932725a52157943Christine Chen    }
8110196fd2f7cc922693e2a7c6c932725a52157943Christine Chen
8210196fd2f7cc922693e2a7c6c932725a52157943Christine Chen    public void rejectCallWithMessage(String message) {
8310196fd2f7cc922693e2a7c6c932725a52157943Christine Chen        Logger.d(this, "sendTextToDefaultActivity()...");
8410196fd2f7cc922693e2a7c6c932725a52157943Christine Chen        CallCommandClient.getInstance().rejectCall(mCall.getCallId(), true, message);
8510196fd2f7cc922693e2a7c6c932725a52157943Christine Chen        getUi().dismissPopup();
86dba5a7df121b4904b94e14439cca8996d843c1c9Chiao Cheng    }
877df3ac3f95c9d23396e1319beb6ca34435d965f5Chiao Cheng
88150a5c58c67f230c8fd7293b180bbf50aa761480Santos Cordon    interface AnswerUi extends Ui {
89671b221ccadea34fb9327ef5342b26419eb5ca99Santos Cordon        public void showAnswerUi(boolean show);
9010196fd2f7cc922693e2a7c6c932725a52157943Christine Chen        public void showTextButton(boolean show);
9110196fd2f7cc922693e2a7c6c932725a52157943Christine Chen        public boolean isMessageDialogueShowing();
9210196fd2f7cc922693e2a7c6c932725a52157943Christine Chen        public void showMessageDialogue();
9310196fd2f7cc922693e2a7c6c932725a52157943Christine Chen        public void dismissPopup();
9410196fd2f7cc922693e2a7c6c932725a52157943Christine Chen        public void configureMessageDialogue(ArrayList<String> textResponses);
957df3ac3f95c9d23396e1319beb6ca34435d965f5Chiao Cheng    }
96e286f91abd12dee037de19c3836d8002e450a9c9Santos Cordon}
97