/* * Copyright (c) 2016 Zhang Hai <Dreaming.in.Code.ZH@Gmail.com> * All Rights Reserved. */ package me.zhanghai.android.douya.item.ui; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.design.widget.TextInputLayout; import android.support.v4.app.Fragment; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.EditText; import android.widget.RadioButton; import android.widget.TextView; import butterknife.BindView; import butterknife.ButterKnife; import me.zhanghai.android.douya.R; import me.zhanghai.android.douya.network.api.info.frodo.ItemCollection; import me.zhanghai.android.douya.network.api.info.frodo.ItemCollectionState; import me.zhanghai.android.douya.util.DoubanUtils; import me.zhanghai.android.douya.util.FragmentUtils; import me.zhanghai.android.douya.util.ViewUtils; import me.zhanghai.android.materialratingbar.MaterialRatingBar; public class ItemCollectionFragment extends Fragment { private static final String KEY_PREFIX = ItemCollectionFragment.class.getName() + '.'; private static final String EXTRA_COLLECTION = KEY_PREFIX + "collection"; @BindView(R.id.toolbar) Toolbar mToolbar; @BindView(R.id.todo) RadioButton mTodoButton; @BindView(R.id.doing) RadioButton mDoingButton; @BindView(R.id.done) RadioButton mDoneButton; @BindView(R.id.rating_layout) ViewGroup mRatingLayout; @BindView(R.id.rating) MaterialRatingBar mRatingBar; @BindView(R.id.rating_hint) TextView mRatingHintText; @BindView(R.id.tags) EditText mTagsEdit; @BindView(R.id.comment_layout) TextInputLayout mCommentLayout; @BindView(R.id.comment) EditText mCommentEdit; private ItemCollection mCollection; private ItemCollectionState mCollectionState; /** * @deprecated Use {@link #newInstance(ItemCollection)} instead. */ public ItemCollectionFragment() {} public static ItemCollectionFragment newInstance(ItemCollection collection) { //noinspection deprecation ItemCollectionFragment fragment = new ItemCollectionFragment(); FragmentUtils.ensureArguments(fragment) .putParcelable(EXTRA_COLLECTION, collection); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mCollection = getArguments().getParcelable(EXTRA_COLLECTION); setHasOptionsMenu(true); } @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.item_collection_dialog_fragment, container, false); } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); ButterKnife.bind(this, view); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); AppCompatActivity activity = (AppCompatActivity) getActivity(); //activity.setTitle(getTitle()); activity.setSupportActionBar(mToolbar); // As in https://developer.android.com/guide/topics/ui/controls/radiobutton.html . View.OnClickListener collectionStateButtonOnClickListener = new View.OnClickListener() { @Override public void onClick(View view) { if (!((RadioButton) view).isChecked()) { return; } ItemCollectionState oldCollectionState = mCollectionState; switch (view.getId()) { case R.id.todo: mCollectionState = ItemCollectionState.TODO; break; case R.id.doing: mCollectionState = ItemCollectionState.DOING; break; case R.id.done: mCollectionState = ItemCollectionState.DONE; break; } if (mCollectionState != oldCollectionState) { onCollectionStateChanged(); } } }; mTodoButton.setOnClickListener(collectionStateButtonOnClickListener); mDoingButton.setOnClickListener(collectionStateButtonOnClickListener); mDoneButton.setOnClickListener(collectionStateButtonOnClickListener); mRatingBar.setOnRatingChangeListener(new MaterialRatingBar.OnRatingChangeListener() { @Override public void onRatingChanged(MaterialRatingBar ratingBar, float rating) { mRatingHintText.setText(DoubanUtils.getRatingHint((int) rating, mRatingHintText.getContext())); } }); } private void onCollectionStateChanged() { ViewUtils.setVisibleOrGone(mRatingLayout, mCollectionState != ItemCollectionState.TODO); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: getActivity().finish(); return true; default: return super.onOptionsItemSelected(item); } } }