package com.arellomobile.mvp.sample.github.ui.fragments; import java.util.List; import android.os.Bundle; import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageButton; import com.arellomobile.mvp.MvpAppCompatFragment; import com.arellomobile.mvp.presenter.InjectPresenter; import com.arellomobile.mvp.presenter.PresenterType; import com.arellomobile.mvp.presenter.ProvidePresenter; import com.arellomobile.mvp.sample.github.R; import com.arellomobile.mvp.sample.github.mvp.models.Repository; import com.arellomobile.mvp.sample.github.mvp.presenters.RepositoryLikesPresenter; import com.arellomobile.mvp.sample.github.mvp.presenters.RepositoryPresenter; import com.arellomobile.mvp.sample.github.mvp.views.RepositoryLikesView; import com.arellomobile.mvp.sample.github.mvp.views.RepositoryView; import com.arellomobile.mvp.sample.github.ui.views.RepositoryWidget; import butterknife.BindView; import butterknife.ButterKnife; /** * Date: 27.01.2016 * Time: 20:17 * * @author Yuri Shmakov */ public class DetailsFragment extends MvpAppCompatFragment implements RepositoryView, RepositoryLikesView { public static final String ARGS_REPOSITORY = "argsRepository"; @InjectPresenter RepositoryPresenter mRepositoryPresenter; @InjectPresenter(type = PresenterType.WEAK, tag = RepositoryLikesPresenter.TAG) RepositoryLikesPresenter mRepositoryLikesPresenter; private Repository mRepository; @BindView(R.id.fragment_repository_details_text_view_title) RepositoryWidget mTitleTextView; @BindView(R.id.fragment_repository_details_image_button_like) ImageButton mLikeImageButton; @ProvidePresenter RepositoryPresenter provideRepositoryPresenter() { mRepository = (Repository) getArguments().get(ARGS_REPOSITORY); return new RepositoryPresenter(mRepository); } public static DetailsFragment getInstance(Repository repository) { DetailsFragment fragment = new DetailsFragment(); Bundle args = new Bundle(); args.putSerializable(ARGS_REPOSITORY, repository); fragment.setArguments(args); return fragment; } @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_repository_details, container, false); } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); ButterKnife.bind(this, view); mLikeImageButton.setOnClickListener(likeImageButton -> mRepositoryLikesPresenter.toggleLike(mRepository.getId())); } @Override public void updateLikes(List<Integer> inProgress, List<Integer> likedIds) { mRepositoryPresenter.updateLikes(inProgress, likedIds); } @Override public void showRepository(Repository repository) { mRepository = repository; mTitleTextView.initWidget(getMvpDelegate(), repository); } @Override public void updateLike(boolean isInProgress, boolean isLiked) { mLikeImageButton.setEnabled(!isInProgress); mLikeImageButton.setSelected(isLiked); } }