MangaChaptersFragment.java 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package eu.kanade.mangafeed.ui.fragment;
  2. import android.content.Intent;
  3. import android.os.Bundle;
  4. import android.support.v4.app.Fragment;
  5. import android.support.v4.widget.SwipeRefreshLayout;
  6. import android.support.v7.widget.LinearLayoutManager;
  7. import android.support.v7.widget.RecyclerView;
  8. import android.view.LayoutInflater;
  9. import android.view.Menu;
  10. import android.view.MenuInflater;
  11. import android.view.MenuItem;
  12. import android.view.View;
  13. import android.view.ViewGroup;
  14. import java.util.List;
  15. import butterknife.Bind;
  16. import butterknife.ButterKnife;
  17. import eu.kanade.mangafeed.R;
  18. import eu.kanade.mangafeed.data.models.Chapter;
  19. import eu.kanade.mangafeed.presenter.MangaChaptersPresenter;
  20. import eu.kanade.mangafeed.ui.activity.MangaDetailActivity;
  21. import eu.kanade.mangafeed.ui.activity.ReaderActivity;
  22. import eu.kanade.mangafeed.ui.adapter.ChapterListHolder;
  23. import nucleus.factory.RequiresPresenter;
  24. import uk.co.ribot.easyadapter.EasyRecyclerAdapter;
  25. @RequiresPresenter(MangaChaptersPresenter.class)
  26. public class MangaChaptersFragment extends BaseFragment<MangaChaptersPresenter> {
  27. @Bind(R.id.chapter_list) RecyclerView chapters;
  28. @Bind(R.id.swipe_refresh) SwipeRefreshLayout swipeRefresh;
  29. private EasyRecyclerAdapter<Chapter> adapter;
  30. public static Fragment newInstance() {
  31. return new MangaChaptersFragment();
  32. }
  33. @Override
  34. public void onCreate(Bundle savedState) {
  35. super.onCreate(savedState);
  36. setHasOptionsMenu(true);
  37. }
  38. @Override
  39. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  40. Bundle savedInstanceState) {
  41. // Inflate the layout for this fragment
  42. View view = inflater.inflate(R.layout.fragment_manga_chapters, container, false);
  43. ButterKnife.bind(this, view);
  44. chapters.setLayoutManager(new LinearLayoutManager(getActivity()));
  45. createAdapter();
  46. setSwipeRefreshListener();
  47. return view;
  48. }
  49. @Override
  50. public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
  51. inflater.inflate(R.menu.chapters, menu);
  52. super.onCreateOptionsMenu(menu, inflater);
  53. }
  54. @Override
  55. public boolean onOptionsItemSelected(MenuItem item) {
  56. switch (item.getItemId()) {
  57. case R.id.action_refresh:
  58. getPresenter().refreshChapters();
  59. break;
  60. }
  61. return super.onOptionsItemSelected(item);
  62. }
  63. private void createAdapter() {
  64. ChapterListHolder.ChapterListener listener = chapter -> {
  65. getPresenter().onChapterClicked(chapter);
  66. Intent intent = ReaderActivity.newInstance(getActivity());
  67. startActivity(intent);
  68. };
  69. adapter = new EasyRecyclerAdapter<>(getActivity(), ChapterListHolder.class, listener);
  70. chapters.setAdapter(adapter);
  71. }
  72. private void setSwipeRefreshListener() {
  73. swipeRefresh.setOnRefreshListener(() -> getPresenter().refreshChapters());
  74. }
  75. public void onNextChapters(List<Chapter> chapters) {
  76. adapter.setItems(chapters);
  77. }
  78. public void onNextOnlineChapters() {
  79. swipeRefresh.setRefreshing(false);
  80. }
  81. public void setSwipeRefreshing() {
  82. swipeRefresh.setRefreshing(true);
  83. }
  84. public boolean isOnlineManga() {
  85. return ((MangaDetailActivity)getActivity()).isOnlineManga();
  86. }
  87. }