19a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen/*
29a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen * Copyright 2018 The Android Open Source Project
39a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen *
49a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen * Licensed under the Apache License, Version 2.0 (the "License");
59a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen * you may not use this file except in compliance with the License.
69a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen * You may obtain a copy of the License at
79a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen *
89a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen *      http://www.apache.org/licenses/LICENSE-2.0
99a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen *
109a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen * Unless required by applicable law or agreed to in writing, software
119a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen * distributed under the License is distributed on an "AS IS" BASIS,
129a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen * See the License for the specific language governing permissions and
149a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen * limitations under the License.
159a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen */
169a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen
179a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chenpackage com.example.androidx.car;
189a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen
199a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chenimport android.app.Dialog;
209a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chenimport android.content.Context;
219a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chenimport android.os.Bundle;
229a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chenimport android.widget.CheckBox;
239a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen
249a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chenimport androidx.car.app.CarAlertDialog;
259a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chenimport androidx.fragment.app.DialogFragment;
269a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chenimport androidx.fragment.app.FragmentActivity;
279a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen
289a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen/**
299a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen * A demo activity that will display a {@link CarAlertDialog} with configurable options for what is
309a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen * in the contents of that resulting dialog.
319a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen */
329a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chenpublic class CarAlertDialogDemo extends FragmentActivity {
339a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen    private static final String DIALOG_TAG = "alert_dialog_tag";
349a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen
359a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen    @Override
369a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen    protected void onCreate(Bundle savedInstanceState) {
379a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen        super.onCreate(savedInstanceState);
389a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen        setContentView(R.layout.alert_dialog_activity);
399a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen
409a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen        CheckBox hasTitleView = findViewById(R.id.has_title);
419a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen        CheckBox hasBodyText = findViewById(R.id.has_body_text);
4203a1642ce34e4a32c650cd7892ba9805b0dfe32eAnthony Chen        CheckBox hasSingleLineBody = findViewById(R.id.has_single_line_body);
439a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen        CheckBox hasAction1 = findViewById(R.id.has_action_1);
449a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen        CheckBox hasAction2 = findViewById(R.id.has_action_2);
459a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen
469a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen        findViewById(R.id.create_dialog).setOnClickListener(v -> {
479a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen            AlertDialogFragment alertDialog = AlertDialogFragment.newInstance(
489a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen                    hasTitleView.isChecked(),
499a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen                    hasBodyText.isChecked(),
5003a1642ce34e4a32c650cd7892ba9805b0dfe32eAnthony Chen                    hasSingleLineBody.isChecked(),
519a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen                    hasAction1.isChecked(),
529a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen                    hasAction2.isChecked());
539a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen
549a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen            alertDialog.show(getSupportFragmentManager(), DIALOG_TAG);
559a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen        });
569a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen    }
579a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen
589a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen    /** A {@link DialogFragment} that will inflate a {@link CarAlertDialog}. */
599a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen    public static class AlertDialogFragment extends DialogFragment {
609a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen        private static final String HAS_TITLE_KEY = "has_title_key";
619a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen        private static final String HAS_BODY_KEY = "has_body_key";
6203a1642ce34e4a32c650cd7892ba9805b0dfe32eAnthony Chen        private static final String HAS_SINGLE_LINE_BODY_KEY = "has_single_line_body_key";
639a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen        private static final String HAS_ACTION_1_KEY = "has_action_1_key";
649a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen        private static final String HAS_ACTION_2_KEY = "has_action_2_key";
659a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen
669a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen        static AlertDialogFragment newInstance(boolean hasTitle,
6703a1642ce34e4a32c650cd7892ba9805b0dfe32eAnthony Chen                boolean hasBody, boolean hasSingleLineBody, boolean hasAction1,
6803a1642ce34e4a32c650cd7892ba9805b0dfe32eAnthony Chen                boolean hasAction2) {
699a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen            Bundle args = new Bundle();
709a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen            args.putBoolean(HAS_TITLE_KEY, hasTitle);
719a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen            args.putBoolean(HAS_BODY_KEY, hasBody);
7203a1642ce34e4a32c650cd7892ba9805b0dfe32eAnthony Chen            args.putBoolean(HAS_SINGLE_LINE_BODY_KEY, hasSingleLineBody);
739a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen            args.putBoolean(HAS_ACTION_1_KEY, hasAction1);
749a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen            args.putBoolean(HAS_ACTION_2_KEY, hasAction2);
759a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen
769a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen            AlertDialogFragment fragment = new AlertDialogFragment();
779a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen            fragment.setArguments(args);
789a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen            return fragment;
799a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen        }
809a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen
819a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen        @Override
829a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen        public Dialog onCreateDialog(Bundle savedInstanceState) {
839a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen            Context context = getContext();
849a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen            Bundle args = getArguments();
859a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen            CarAlertDialog.Builder builder = new CarAlertDialog.Builder(context);
869a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen
879a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen            if (args.getBoolean(HAS_TITLE_KEY)) {
889a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen                builder.setTitle(context.getString(R.string.alert_dialog_title));
899a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen            }
909a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen
919a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen            if (args.getBoolean(HAS_BODY_KEY)) {
929a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen                builder.setBody(context.getString(R.string.alert_dialog_body));
939a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen            }
949a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen
9503a1642ce34e4a32c650cd7892ba9805b0dfe32eAnthony Chen            if (args.getBoolean(HAS_SINGLE_LINE_BODY_KEY)) {
9603a1642ce34e4a32c650cd7892ba9805b0dfe32eAnthony Chen                builder.setBody(context.getString(R.string.alert_dialog_body_single_line));
9703a1642ce34e4a32c650cd7892ba9805b0dfe32eAnthony Chen            }
9803a1642ce34e4a32c650cd7892ba9805b0dfe32eAnthony Chen
999a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen            if (args.getBoolean(HAS_ACTION_1_KEY)) {
1009a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen                builder.setPositiveButton(context.getString(R.string.alert_dialog_action1),
1019a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen                        /* listener= */ null);
1029a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen            }
1039a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen
1049a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen            if (args.getBoolean(HAS_ACTION_2_KEY)) {
1059a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen                builder.setNegativeButton(context.getString(R.string.alert_dialog_action2),
1069a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen                        /* listener= */ null);
1079a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen            }
1089a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen
1099a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen            return builder.create();
1109a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen        }
1119a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen    }
1129a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen}
113