169674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi/* 269674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi * Copyright (C) 2017 The Android Open Source Project 369674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi * 469674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi * Licensed under the Apache License, Version 2.0 (the "License"); 569674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi * you may not use this file except in compliance with the License. 669674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi * You may obtain a copy of the License at 769674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi * 869674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi * http://www.apache.org/licenses/LICENSE-2.0 969674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi * 1069674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi * Unless required by applicable law or agreed to in writing, software 1169674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi * distributed under the License is distributed on an "AS IS" BASIS, 1269674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1369674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi * See the License for the specific language governing permissions and 1469674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi * limitations under the License. 1569674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi */ 1669674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi 1769674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqipackage com.android.incallui.disconnectdialog; 1869674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi 1969674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqiimport android.app.Dialog; 2069674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqiimport android.content.Context; 2169674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqiimport android.telecom.DisconnectCause; 2269674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqiimport android.util.Pair; 2369674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqiimport com.android.incallui.call.DialerCall; 2469674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqiimport java.util.Locale; 2569674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi 2669674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi/** 2769674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi * Wrapper class around @Code{android.telecom.DisconnectCause} to provide more information to user. 2869674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi */ 2969674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqipublic class DisconnectMessage { 3069674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi 3169674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi // Disconnect dialog catalog. Default error dialog MUST be last one. 3269674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi private static final DisconnectDialog[] DISCONNECT_DIALOGS = 3369674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi new DisconnectDialog[] { 3469674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi new EnableWifiCallingPrompt(), new VideoCallNotAvailablePrompt(), new DefaultErrorDialog() 3569674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi }; 3669674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi 3769674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi public final Dialog dialog; 3869674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi public final CharSequence toastMessage; 3969674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi private final DisconnectCause cause; 4069674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi 4169674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi public DisconnectMessage(Context context, DialerCall call) { 4269674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi cause = call.getDisconnectCause(); 4369674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi 4469674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi for (DisconnectDialog disconnectDialog : DISCONNECT_DIALOGS) { 4569674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi if (disconnectDialog.shouldShow(cause)) { 4669674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi Pair<Dialog, CharSequence> pair = disconnectDialog.createDialog(context, call); 4769674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi dialog = pair.first; 4869674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi toastMessage = pair.second; 4969674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi return; 5069674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi } 5169674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi } 5269674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi dialog = null; 5369674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi toastMessage = null; 5469674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi } 5569674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi 5669674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi @Override 5769674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi public String toString() { 5869674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi return String.format( 5969674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi Locale.ENGLISH, 6069674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi "DisconnectMessage {code: %d, description: %s, reason: %s, message: %s}", 6169674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi cause.getCode(), 6269674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi cause.getDescription(), 6369674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi cause.getReason(), 6469674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi toastMessage); 6569674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi } 6669674662dbcf4b88fc4f2b290bd3ab925ae411c8wangqi} 67