package io.github.scarletsky.bangumi.ui.fragments;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import com.rengwuxian.materialedittext.MaterialEditText;
import com.rey.material.widget.Slider;
import com.squareup.otto.Subscribe;
import io.github.scarletsky.bangumi.R;
import io.github.scarletsky.bangumi.api.models.Collection;
import io.github.scarletsky.bangumi.events.EditSubjectGradeEvent;
import io.github.scarletsky.bangumi.events.GetCollectionEvent;
import io.github.scarletsky.bangumi.events.UpdateSubjectGradeEvent;
import io.github.scarletsky.bangumi.utils.BusProvider;
import io.github.scarletsky.bangumi.utils.ToastManager;
/**
* Created by scarlex on 15-7-14.
*/
public class SubjectGradeFragment extends Fragment implements RadioGroup.OnCheckedChangeListener {
private static final String TAG = SubjectGradeFragment.class.getSimpleName();
private LinearLayout mSubjectGradeWrapper;
private TextView mSubjectStatus;
private TextView mSubjectRating;
private TextView mSubjectComment;
private ProgressBar mProgressBar;
private RadioGroup mSubjectStatusField;
private Slider mSubjectRatingField;
private MaterialEditText mSubjectCommentField;
private Collection mCollection = new Collection();
public static SubjectGradeFragment newInstance() {
return new SubjectGradeFragment();
}
@Override
public void onResume() {
super.onResume();
BusProvider.getInstance().register(this);
}
@Override
public void onPause() {
super.onPause();
BusProvider.getInstance().unregister(this);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_subject_grade, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mProgressBar = (ProgressBar) getView()
.findViewById(R.id.subject_grade_progress_bar_wrapper)
.findViewById(R.id.progress_bar);
mSubjectGradeWrapper = (LinearLayout) getView().findViewById(R.id.subject_grade_wrapper);
mSubjectStatus = (TextView) getView().findViewById(R.id.subject_status);
mSubjectRating = (TextView) getView().findViewById(R.id.subject_rating);
mSubjectComment = (TextView) getView().findViewById(R.id.subject_comment);
mSubjectStatusField = (RadioGroup) getView().findViewById(R.id.subject_status_field);
mSubjectRatingField = (Slider) getView().findViewById(R.id.subject_rating_field);
mSubjectCommentField = (MaterialEditText) getView().findViewById(R.id.subject_comment_field);
mSubjectStatusField.setOnCheckedChangeListener(this);
}
@Subscribe
public void onGetCollectionEvent(GetCollectionEvent event) {
if (event.getCollection() != null) {
mCollection = event.getCollection();
String statusName = Collection.WatchStatus.getById(mCollection.getStatus().getId()).getName();
mSubjectStatus.setText(statusName);
mSubjectRating.setText(String.valueOf(mCollection.getRating()));
mSubjectComment.setText(mCollection.getCommentDetail());
hideEditFields();
}
mProgressBar.setVisibility(View.GONE);
mSubjectGradeWrapper.setVisibility(View.VISIBLE);
}
@Subscribe
public void onEditSubjectGradeEvent(EditSubjectGradeEvent event) {
if (event.isFinish()) {
if (isInputsValid()) {
mCollection.setRating(mSubjectRatingField.getValue());
mCollection.setComment(mSubjectCommentField.getText().toString());
BusProvider.getInstance().post(new UpdateSubjectGradeEvent(mCollection));
}
} else {
showEditFields();
}
}
private void hideEditFields() {
mSubjectStatus.setVisibility(View.VISIBLE);
mSubjectRating.setVisibility(View.VISIBLE);
mSubjectComment.setVisibility(View.VISIBLE);
mSubjectStatusField.setVisibility(View.GONE);
mSubjectRatingField.setVisibility(View.GONE);
mSubjectCommentField.setVisibility(View.GONE);
}
private void showEditFields() {
setupEditFields();
mSubjectStatus.setVisibility(View.GONE);
mSubjectRating.setVisibility(View.GONE);
mSubjectComment.setVisibility(View.GONE);
mSubjectStatusField.setVisibility(View.VISIBLE);
mSubjectRatingField.setVisibility(View.VISIBLE);
mSubjectCommentField.setVisibility(View.VISIBLE);
}
private void setupEditFields() {
if (mCollection != null) {
if (mCollection.getStatus().getId() != 0) {
((RadioButton) mSubjectStatusField.getChildAt(mCollection.getStatus().getId() - 1)).setChecked(true);
}
mSubjectRatingField.setValue(mCollection.getRating(), false);
mSubjectCommentField.setText(mCollection.getComment());
}
}
private boolean isInputsValid() {
boolean flag = true;
if (mCollection.getStatus().getId() == 0) {
ToastManager.show(getActivity(), getString(R.string.toast_please_choose_collection_status));
flag = false;
}
return flag;
}
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
switch (i) {
case R.id.subject_status_wish:
mCollection.getStatus().setId(Collection.WatchStatus.WISH.getId());
mCollection.getStatus().setType(Collection.WatchStatus.WISH.getType());
break;
case R.id.subject_status_watched:
mCollection.getStatus().setId(Collection.WatchStatus.WATCHED.getId());
mCollection.getStatus().setType(Collection.WatchStatus.WATCHED.getType());
break;
case R.id.subject_status_watching:
mCollection.getStatus().setId(Collection.WatchStatus.WATCHING.getId());
mCollection.getStatus().setType(Collection.WatchStatus.WATCHING.getType());
break;
case R.id.subject_status_on_hold:
mCollection.getStatus().setId(Collection.WatchStatus.ON_HOLD.getId());
mCollection.getStatus().setType(Collection.WatchStatus.ON_HOLD.getType());
break;
case R.id.subject_status_drop:
mCollection.getStatus().setId(Collection.WatchStatus.DROP.getId());
mCollection.getStatus().setType(Collection.WatchStatus.DROP.getType());
break;
}
}
}