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