package cl.monsoon.s1next.view.dialog;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.databinding.DataBindingUtil;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.DialogFragment;
import android.view.WindowManager;
import cl.monsoon.s1next.R;
import cl.monsoon.s1next.databinding.DialogFavouritesAddBinding;
import cl.monsoon.s1next.util.ViewUtil;
/**
* A dialog lets user enter remark if user want to add this thread to his/her favourites.
* Clicks the positive button can let user add this thread to his/her favourites.
*/
public final class ThreadFavouritesAddDialogFragment extends DialogFragment {
public static final String TAG = ThreadFavouritesAddDialogFragment.class.getName();
private static final String ARG_THREAD_ID = "thread_id";
public static ThreadFavouritesAddDialogFragment newInstance(String threadId) {
ThreadFavouritesAddDialogFragment fragment = new ThreadFavouritesAddDialogFragment();
Bundle bundle = new Bundle();
bundle.putString(ARG_THREAD_ID, threadId);
fragment.setArguments(bundle);
return fragment;
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
DialogFavouritesAddBinding binding = DataBindingUtil.inflate(getActivity().getLayoutInflater(),
R.layout.dialog_favourites_add, null, false);
AlertDialog alertDialog = new AlertDialog.Builder(getContext())
.setTitle(R.string.menu_favourites_add)
.setView(binding.getRoot())
.setPositiveButton(R.string.dialog_button_text_add, null)
.setNegativeButton(android.R.string.cancel, null)
.create();
alertDialog.getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
// http://stackoverflow.com/a/7636468
alertDialog.setOnShowListener(dialog -> {
alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(v ->
ThreadFavouritesAddRequestDialogFragment.newInstance(
getArguments().getString(ARG_THREAD_ID),
binding.remark.getText().toString())
.show(getFragmentManager(), ThreadFavouritesAddRequestDialogFragment.TAG));
ViewUtil.consumeRunnableWhenImeActionPerformed(binding.remark, () ->
alertDialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick());
});
return alertDialog;
}
}