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