CreateConferenceDialog.java

 1package eu.siacs.conversations.ui;
 2
 3import android.app.Dialog;
 4import android.databinding.DataBindingUtil;
 5import android.support.annotation.NonNull;
 6import android.support.v4.app.DialogFragment;
 7import android.content.Context;
 8import android.content.DialogInterface;
 9import android.os.Bundle;
10import android.support.v7.app.AlertDialog;
11import android.view.View;
12import android.widget.EditText;
13import android.widget.Spinner;
14
15import java.util.ArrayList;
16import java.util.List;
17
18import eu.siacs.conversations.R;
19import eu.siacs.conversations.databinding.CreateConferenceDialogBinding;
20
21public class CreateConferenceDialog extends DialogFragment {
22
23    private static final String ACCOUNTS_LIST_KEY = "activated_accounts_list";
24    private CreateConferenceDialogListener mListener;
25
26    public static CreateConferenceDialog newInstance(List<String> accounts) {
27        CreateConferenceDialog dialog = new CreateConferenceDialog();
28        Bundle bundle =  new Bundle();
29        bundle.putStringArrayList(ACCOUNTS_LIST_KEY, (ArrayList<String>) accounts);
30        dialog.setArguments(bundle);
31        return dialog;
32    }
33
34    @Override
35    public void onActivityCreated(Bundle savedInstanceState) {
36        super.onActivityCreated(savedInstanceState);
37        setRetainInstance(true);
38    }
39
40    @NonNull
41    @Override
42    public Dialog onCreateDialog(Bundle savedInstanceState) {
43        final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
44        builder.setTitle(R.string.dialog_title_create_conference);
45        CreateConferenceDialogBinding binding = DataBindingUtil.inflate(getActivity().getLayoutInflater(), R.layout.create_conference_dialog, null, false);
46        ArrayList<String> mActivatedAccounts = getArguments().getStringArrayList(ACCOUNTS_LIST_KEY);
47        StartConversationActivity.populateAccountSpinner(getActivity(), mActivatedAccounts, binding.account);
48        builder.setView(binding.getRoot());
49        builder.setPositiveButton(R.string.choose_participants, new DialogInterface.OnClickListener() {
50            @Override
51            public void onClick(DialogInterface dialog, int which) {
52                mListener.onCreateDialogPositiveClick(binding.account, binding.subject.getText().toString());
53            }
54        });
55        builder.setNegativeButton(R.string.cancel, null);
56        return builder.create();
57    }
58
59    public interface CreateConferenceDialogListener {
60        void onCreateDialogPositiveClick(Spinner spinner, String subject);
61    }
62
63    @Override
64    public void onAttach(Context context) {
65        super.onAttach(context);
66        try {
67            mListener = (CreateConferenceDialogListener) context;
68        } catch (ClassCastException e) {
69            throw new ClassCastException(context.toString()
70                    + " must implement CreateConferenceDialogListener");
71        }
72    }
73
74    @Override
75    public void onDestroyView() {
76        Dialog dialog = getDialog();
77        if (dialog != null && getRetainInstance()) {
78            dialog.setDismissMessage(null);
79        }
80        super.onDestroyView();
81    }
82}