steroid-team/app

View on GitHub
app/src/main/java/com/github/steroidteam/todolist/view/dialog/InputDialogFragment.java

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
package com.github.steroidteam.todolist.view.dialog;

import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.EditText;
import androidx.fragment.app.DialogFragment;
import com.github.steroidteam.todolist.R;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;

public class InputDialogFragment extends DialogFragment {

    private static final String TITLE_KEY = "title";
    private DialogListener listener;

    public InputDialogFragment() {
        super();
    }

    public InputDialogFragment newInstance(DialogListener listener, int title) {
        Bundle args = new Bundle();
        args.putInt(TITLE_KEY, title);
        this.setArguments(args);

        this.listener = listener;

        return this;
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        int title = getArguments().getInt(TITLE_KEY);

        LayoutInflater inflater = this.getLayoutInflater();
        View user_input = inflater.inflate(R.layout.alert_dialog_input, null);

        MaterialAlertDialogBuilder builder =
                new MaterialAlertDialogBuilder(getActivity())
                        .setMessage(title)
                        .setPositiveButton(
                                R.string.confirm,
                                (DialogInterface dialog, int which) -> {
                                    EditText titleInput =
                                            user_input.findViewById(R.id.alert_dialog_edit_text);
                                    String input = titleInput.getText().toString();
                                    listener.onPositiveClick(input);
                                    titleInput.getText().clear();
                                    dialog.dismiss();
                                })
                        .setNegativeButton(
                                R.string.cancel,
                                (dialog12, whichButton) -> listener.onNegativeClick());

        builder.setView(user_input);

        Dialog dialog = builder.show();

        dialog.setCanceledOnTouchOutside(false);
        dialog.getWindow().setGravity(Gravity.TOP);
        return dialog;
    }
}