package com.fastaccess.ui.modules.repos.extras.labels.create;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.TextInputLayout;
import android.support.v7.widget.Toolbar;
import android.view.View;
import com.fastaccess.R;
import com.fastaccess.data.dao.LabelModel;
import com.fastaccess.helper.BundleConstant;
import com.fastaccess.helper.Bundler;
import com.fastaccess.helper.InputHelper;
import com.fastaccess.ui.adapter.LabelColorsAdapter;
import com.fastaccess.ui.base.BaseDialogFragment;
import com.fastaccess.ui.modules.repos.extras.labels.LabelsMvp;
import com.fastaccess.ui.widgets.recyclerview.DynamicRecyclerView;
import java.util.Arrays;
import butterknife.BindView;
/**
* Created by Kosh on 02 Apr 2017, 5:38 PM
*/
public class CreateLabelDialogFragment extends BaseDialogFragment<CreateLabelMvp.View, CreateLabelPresenter> implements CreateLabelMvp.View {
@BindView(R.id.toolbar) Toolbar toolbar;
@BindView(R.id.name) TextInputLayout name;
@BindView(R.id.description) TextInputLayout description;
@BindView(R.id.recycler) DynamicRecyclerView recycler;
private LabelsMvp.View callback;
public static CreateLabelDialogFragment newInstance(@NonNull String login, @NonNull String repo) {
CreateLabelDialogFragment fragment = new CreateLabelDialogFragment();
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 LabelsMvp.View) {
callback = (LabelsMvp.View) getParentFragment();
} else if (context instanceof LabelsMvp.View) {
callback = (LabelsMvp.View) context;
}
}
@Override public void onDetach() {
callback = null;
super.onDetach();
}
@Override public void onSuccessfullyCreated(@NonNull LabelModel labelModel1) {
hideProgress();
if (callback != null) callback.onLabelAdded(labelModel1);
dismiss();
}
@Override public void onColorSelected(@NonNull String color) {
description.getEditText().setText(color.replaceFirst("#", ""));
}
@Override protected int fragmentLayout() {
return R.layout.create_label_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;
}
;
recycler.setAdapter(new LabelColorsAdapter(Arrays.asList(getResources().getStringArray(R.array.label_colors)), getPresenter()));
recycler.addKeyLineDivider();
toolbar.setTitle(R.string.create_label);
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 -> {
boolean emptyColor = InputHelper.isEmpty(description);
boolean emptyName = InputHelper.isEmpty(name);
description.setError(emptyColor ? getString(R.string.required_field) : null);
name.setError(emptyName ? getString(R.string.required_field) : null);
if (!emptyColor && !emptyName) {
getPresenter().onSubmitLabel(InputHelper.toString(name), InputHelper.toString(description), repo, login);
}
return true;
});
}
@NonNull @Override public CreateLabelPresenter providePresenter() {
return new CreateLabelPresenter();
}
}