diff options
Diffstat (limited to 'java/com/android/dialer/simulator/impl/SimulatorDialogFragment.java')
-rw-r--r-- | java/com/android/dialer/simulator/impl/SimulatorDialogFragment.java | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/java/com/android/dialer/simulator/impl/SimulatorDialogFragment.java b/java/com/android/dialer/simulator/impl/SimulatorDialogFragment.java new file mode 100644 index 000000000..f8403c7fe --- /dev/null +++ b/java/com/android/dialer/simulator/impl/SimulatorDialogFragment.java @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.dialer.simulator.impl; + +import android.app.AlertDialog; +import android.app.Dialog; +import android.os.Bundle; +import android.support.v4.app.DialogFragment; +import android.telecom.TelecomManager; +import android.widget.EditText; + +/** Holds dialog logic for creating different types of voice calls. */ +public final class SimulatorDialogFragment extends DialogFragment { + + private final String[] callerIdPresentationItems = { + "ALLOWED", "PAYPHONE", "RESTRICTED", "UNKNOWN" + }; + private int callerIdPresentationChoice; + + private DialogCallback dialogCallback; + + static SimulatorDialogFragment newInstance(DialogCallback dialogCallback) { + SimulatorDialogFragment fragment = new SimulatorDialogFragment(); + fragment.setCallBack(dialogCallback); + return fragment; + } + + public void setCallBack(DialogCallback dialogCallback) { + this.dialogCallback = dialogCallback; + } + + @Override + public Dialog onCreateDialog(Bundle bundle) { + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + final EditText input = new EditText(getActivity()); + builder + .setTitle("Phone Number:") + .setView(input) + .setSingleChoiceItems( + callerIdPresentationItems, + 0, + (dialog, id) -> { + switch (id) { + case 0: + callerIdPresentationChoice = TelecomManager.PRESENTATION_ALLOWED; + break; + case 1: + callerIdPresentationChoice = TelecomManager.PRESENTATION_PAYPHONE; + break; + case 2: + callerIdPresentationChoice = TelecomManager.PRESENTATION_RESTRICTED; + break; + case 3: + callerIdPresentationChoice = TelecomManager.PRESENTATION_UNKNOWN; + break; + default: + throw new IllegalStateException("Unknown presentation choice selected!"); + } + }) + .setPositiveButton( + R.string.call, + (dialog, id) -> { + dialogCallback.createCustomizedCall( + input.getText().toString(), callerIdPresentationChoice); + dialog.cancel(); + SimulatorDialogFragment.this.dismiss(); + }); + AlertDialog dialog = builder.create(); + dialog.show(); + return dialog; + } + + /** Callback for after clicking enter button on dialog. */ + public interface DialogCallback { + void createCustomizedCall(String callerId, int callerIdPresentation); + } +} |