summaryrefslogtreecommitdiff
path: root/java/com/android/incallui/answer/impl/CreateCustomSmsDialogFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android/incallui/answer/impl/CreateCustomSmsDialogFragment.java')
-rw-r--r--java/com/android/incallui/answer/impl/CreateCustomSmsDialogFragment.java137
1 files changed, 137 insertions, 0 deletions
diff --git a/java/com/android/incallui/answer/impl/CreateCustomSmsDialogFragment.java b/java/com/android/incallui/answer/impl/CreateCustomSmsDialogFragment.java
new file mode 100644
index 000000000..b49409258
--- /dev/null
+++ b/java/com/android/incallui/answer/impl/CreateCustomSmsDialogFragment.java
@@ -0,0 +1,137 @@
+/*
+ * Copyright (C) 2016 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.incallui.answer.impl;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnCancelListener;
+import android.content.DialogInterface.OnShowListener;
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.v7.app.AppCompatDialogFragment;
+import android.text.Editable;
+import android.text.TextWatcher;
+import android.view.View;
+import android.view.WindowManager.LayoutParams;
+import android.widget.Button;
+import android.widget.EditText;
+import com.android.dialer.common.FragmentUtils;
+
+/**
+ * Shows the dialog for users to enter a custom message when rejecting a call with an SMS message.
+ */
+public class CreateCustomSmsDialogFragment extends AppCompatDialogFragment {
+
+ private static final String ARG_ENTERED_TEXT = "enteredText";
+
+ private EditText editText;
+
+ public static CreateCustomSmsDialogFragment newInstance() {
+ return new CreateCustomSmsDialogFragment();
+ }
+
+ @NonNull
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ super.onCreateDialog(savedInstanceState);
+ AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+ View view = View.inflate(builder.getContext(), R.layout.fragment_custom_sms_dialog, null);
+ editText = (EditText) view.findViewById(R.id.custom_sms_input);
+ if (savedInstanceState != null) {
+ editText.setText(savedInstanceState.getCharSequence(ARG_ENTERED_TEXT));
+ }
+ builder
+ .setCancelable(true)
+ .setView(view)
+ .setPositiveButton(
+ R.string.call_incoming_custom_message_send,
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialogInterface, int i) {
+ FragmentUtils.getParentUnsafe(
+ CreateCustomSmsDialogFragment.this, CreateCustomSmsHolder.class)
+ .customSmsCreated(editText.getText().toString().trim());
+ dismiss();
+ }
+ })
+ .setNegativeButton(
+ R.string.call_incoming_custom_message_cancel,
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialogInterface, int i) {
+ dismiss();
+ }
+ })
+ .setOnCancelListener(
+ new OnCancelListener() {
+ @Override
+ public void onCancel(DialogInterface dialogInterface) {
+ dismiss();
+ }
+ })
+ .setTitle(R.string.call_incoming_respond_via_sms_custom_message);
+ final AlertDialog customMessagePopup = builder.create();
+ customMessagePopup.setOnShowListener(
+ new OnShowListener() {
+ @Override
+ public void onShow(DialogInterface dialogInterface) {
+ ((AlertDialog) dialogInterface)
+ .getButton(AlertDialog.BUTTON_POSITIVE)
+ .setEnabled(false);
+ }
+ });
+
+ editText.addTextChangedListener(
+ new TextWatcher() {
+ @Override
+ public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {}
+
+ @Override
+ public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {}
+
+ @Override
+ public void afterTextChanged(Editable editable) {
+ Button sendButton = customMessagePopup.getButton(DialogInterface.BUTTON_POSITIVE);
+ sendButton.setEnabled(editable != null && editable.toString().trim().length() != 0);
+ }
+ });
+ customMessagePopup.getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
+ customMessagePopup.getWindow().addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED);
+ return customMessagePopup;
+ }
+
+ @Override
+ public void onSaveInstanceState(@NonNull Bundle outState) {
+ super.onSaveInstanceState(outState);
+ outState.putCharSequence(ARG_ENTERED_TEXT, editText.getText());
+ }
+
+ @Override
+ public void onDismiss(DialogInterface dialogInterface) {
+ super.onDismiss(dialogInterface);
+ FragmentUtils.getParentUnsafe(this, CreateCustomSmsHolder.class).customSmsDismissed();
+ }
+
+ /** Call back for {@link CreateCustomSmsDialogFragment} */
+ public interface CreateCustomSmsHolder {
+
+ void customSmsCreated(@NonNull CharSequence text);
+
+ void customSmsDismissed();
+ }
+}