package com.fastaccess.ui.modules.repos.extras.milestone.create;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.TextInputEditText;
import android.support.design.widget.TextInputLayout;
import android.support.v7.widget.Toolbar;
import android.view.MotionEvent;
import android.view.View;
import com.fastaccess.R;
import com.fastaccess.data.dao.MilestoneModel;
import com.fastaccess.datetimepicker.DatePickerFragmentDialog;
import com.fastaccess.datetimepicker.callback.DatePickerCallback;
import com.fastaccess.helper.BundleConstant;
import com.fastaccess.helper.Bundler;
import com.fastaccess.helper.InputHelper;
import com.fastaccess.helper.ParseDateFormat;
import com.fastaccess.ui.base.BaseDialogFragment;
import butterknife.BindView;
import butterknife.OnTouch;
/**
* Created by Kosh on 04 Mar 2017, 10:40 PM
*/
public class CreateMilestoneDialogFragment extends BaseDialogFragment<CreateMilestoneMvp.View, CreateMilestonePresenter>
implements CreateMilestoneMvp.View, DatePickerCallback {
public static final String TAG = CreateMilestoneDialogFragment.class.getSimpleName();
@BindView(R.id.toolbar) Toolbar toolbar;
@BindView(R.id.title) TextInputLayout title;
@BindView(R.id.dueOnEditText) TextInputEditText dueOnEditText;
@BindView(R.id.description) TextInputLayout description;
private CreateMilestoneMvp.OnMilestoneAdded onMilestoneAdded;
public static CreateMilestoneDialogFragment newInstance(@NonNull String login, @NonNull String repo) {
CreateMilestoneDialogFragment fragment = new CreateMilestoneDialogFragment();
fragment.setArguments(Bundler.start()
.put(BundleConstant.EXTRA, login)
.put(BundleConstant.ID, repo)
.end());
return fragment;
}
@Override public void onAttach(Context context) {
super.onAttach(context);
if (getParentFragment() instanceof CreateMilestoneMvp.OnMilestoneAdded) {
onMilestoneAdded = (CreateMilestoneMvp.OnMilestoneAdded) getParentFragment();
} else {
onMilestoneAdded = (CreateMilestoneMvp.OnMilestoneAdded) context;
}
}
@Override public void onDetach() {
onMilestoneAdded = null;
super.onDetach();
}
@Override protected int fragmentLayout() {
return R.layout.create_milestone_layout;
}
@Override protected void onFragmentCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
String login = getArguments().getString(BundleConstant.EXTRA);
String repo = getArguments().getString(BundleConstant.ID);
if (login == null || repo == null) {
return;
}
toolbar.setTitle(R.string.create_milestone);
toolbar.setNavigationIcon(R.drawable.ic_clear);
toolbar.setNavigationOnClickListener(item -> dismiss());
toolbar.inflateMenu(R.menu.add_menu);
toolbar.getMenu().findItem(R.id.add).setIcon(R.drawable.ic_send);
toolbar.setOnMenuItemClickListener(item -> {
getPresenter().onSubmit(InputHelper.toString(title), InputHelper.toString(dueOnEditText), InputHelper.toString(description), login, repo);
return true;
});
}
@NonNull @Override public CreateMilestonePresenter providePresenter() {
return new CreateMilestonePresenter();
}
@OnTouch(R.id.dueOnEditText) boolean onTouch(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
DatePickerFragmentDialog.newInstance().show(getChildFragmentManager(), "DatePickerFragmentDialog");
}
return false;
}
@Override public void onDateSet(long date) {
if (date > 0) {
dueOnEditText.setText(ParseDateFormat.prettifyDate(date));
}
}
@Override public void onShowTitleError(boolean isError) {
title.setError(isError ? getString(R.string.required_field) : null);
}
@Override public void onMilestoneAdded(@NonNull MilestoneModel milestoneModel) {
hideProgress();
onMilestoneAdded.onMilestoneAdded(milestoneModel);
dismiss();
}
}