public Template onGetTemplate()

in car_app_library/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/TaskRestrictionDemoScreen.java [54:146]


    public Template onGetTemplate() {
        // Last step must either be a PaneTemplate, MessageTemplate or NavigationTemplate.
        if (mStep == MAX_STEPS_ALLOWED) {
            OnClickListener onClickListener = () ->
                    getScreenManager()
                            .pushForResult(
                                    new TaskRestrictionDemoScreen(
                                            mStep + 1,
                                            getCarContext()),
                                    result ->
                                            mIsBackOperation = true);

            return new MessageTemplate.Builder(
                    "Task limit reached\nGoing forward will force stop the app")
                    .setHeaderAction(BACK)
                    .addAction(
                            new Action.Builder()
                                    .setTitle("Try Anyway")
                                    .setOnClickListener(onClickListener)
                                    .build())
                    .build();
        }

        ItemList.Builder builder = new ItemList.Builder();
        builder.addItem(
                new Row.Builder()
                        .setTitle("Task step " + mStep + " of " + MAX_STEPS_ALLOWED)
                        .addText("Click to go forward")
                        .setOnClickListener(
                                () ->
                                        getScreenManager()
                                                .pushForResult(
                                                        new TaskRestrictionDemoScreen(
                                                                mStep + 1, getCarContext()),
                                                        result -> mIsBackOperation = true))
                        .build())
                .addItem(
                        new Row.Builder()
                                .setTitle("Toggle test")
                                .addText("Stateful changes are allowed")
                                .setToggle(
                                        new Toggle.Builder(
                                                checked -> {
                                                    mToggleState = !mToggleState;
                                                    invalidate();
                                                })
                                                .setChecked(mToggleState)
                                                .build())
                                .build())
                .addItem(
                        new Row.Builder()
                                .setTitle("Image test")
                                .addText("Image changes are allowed")
                                .setImage(
                                        new CarIcon.Builder(
                                                IconCompat.createWithResource(
                                                        getCarContext(),
                                                        R.drawable.ic_fastfood_white_48dp))
                                                .build(),
                                        mImageType)
                                .setOnClickListener(
                                        () -> {
                                            mImageType =
                                                    mImageType == Row.IMAGE_TYPE_ICON
                                                            ? Row.IMAGE_TYPE_LARGE
                                                            : Row.IMAGE_TYPE_ICON;
                                            invalidate();
                                        })
                                .build());

        if (mIsBackOperation) {
            builder.addItem(
                    new Row.Builder()
                            .setTitle("Additional Data")
                            .addText("Updates allows on back operations.")
                            .build());
        }

        return new ListTemplate.Builder()
                .setSingleList(builder.build())
                .setTitle("Task Restriction Demo")
                .setHeaderAction(BACK)
                .setActionStrip(
                        new ActionStrip.Builder()
                                .addAction(
                                        new Action.Builder()
                                                .setTitle("HOME")
                                                .setOnClickListener(
                                                        () -> getScreenManager().popToRoot())
                                                .build())
                                .build())
                .build();
    }